# ffmpeg-node-demo **Repository Path**: hepingmogul/ffmpeg-node-demo ## Basic Information - **Project Name**: ffmpeg-node-demo - **Description**: No description available - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-03 - **Last Updated**: 2026-06-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ffmpeg-node-demo ## 项目介绍 这是一个使用 Node.js 调用 ffmpeg 命令行工具的示例项目,提供了一系列实用的音视频处理功能。 ## 前提条件 - 安装 [Node.js](https://nodejs.org/) (推荐 v14 或更高版本) - 安装 [ffmpeg](https://ffmpeg.org/download.html) 并确保其在系统 PATH 中可用 ## 功能列表 ### 1. 从视频提取音频 从 MP4 文件中提取音频并保存为 MP3 格式。 ```javascript import extractAudio from './ffmpeg/extractAudio.js'; extractAudio('input.mp4', 'output.mp3') .then(() => console.log('音频提取成功!')) .catch(err => console.error('音频提取失败:', err.message)); ``` ### 2. 视频旋转 90 度 将视频顺时针或逆时针旋转 90 度,音频流直接复制不重新编码。 ```javascript import rotateVideo from './ffmpeg/rotateVideo.js'; // 顺时针旋转 90 度(默认) rotateVideo('input.mp4', 'output.mp4') .then(() => console.log('视频旋转成功!')) .catch(err => console.error('视频旋转失败:', err.message)); // 逆时针旋转 90 度 rotateVideo('input.mp4', 'output.mp4', { direction: 'counterclockwise' }) .then(() => console.log('视频旋转成功!')) .catch(err => console.error('视频旋转失败:', err.message)); ``` ### 3. 识别视频旋转信息 读取视频流中的旋转元数据(Display Matrix 或 rotate 标签),判断画面是否需要旋转才能正确显示。 ```javascript import detectVideoRotation from './ffmpeg/detectVideoRotation.js'; detectVideoRotation('input.mp4') .then(info => { console.log(`是否旋转: ${info.isRotated}`); console.log(`旋转角度: ${info.rotation}°`); console.log(`存储分辨率: ${info.storedWidth}x${info.storedHeight}`); console.log(`显示分辨率: ${info.displayWidth}x${info.displayHeight}`); }) .catch(err => console.error('识别失败:', err.message)); ``` > 说明:该函数识别的是**元数据旋转**(常见于手机拍摄的视频)。若视频已通过 `rotateVideo` 做了像素级旋转,通常不会再有旋转元数据。 ### 4. 获取视频或音频详细信息 获取媒体文件的详细信息,包括格式、时长、比特率、视频流和音频流等信息。 ```javascript import detection from './ffmpeg/detection.js'; detection('media.mp4') .then(info => { console.log(`格式: ${info.format.format_name}`); console.log(`时长: ${info.duration} 秒`); console.log(`大小: ${info.size} 字节`); console.log(`比特率: ${info.bitRate} bps`); console.log(`视频流数量: ${info.videoStreams.length}`); console.log(`音频流数量: ${info.audioStreams.length}`); }) .catch(err => console.error('获取媒体信息失败:', err.message)); ``` ## 安装 ```bash # 使用 npm npm install # 或使用 pnpm pnpm install ``` ## 示例 查看 `examples` 目录中的示例文件,了解如何使用各个功能。 ## 注意事项 - 确保 ffmpeg 已正确安装并可在命令行中访问 - 处理大文件时可能需要较长时间,请耐心等待