FFmpeg 常用命令
FFmpeg
获取视频 / 音频文件详细信息
1 | ffmpeg -i input.mp4 |
- 解释:显示输入文件的格式、时长、比特率、编解码器、分辨率等信息。如果文件无效,会报告错误。
示例:ffmpeg -i video.mp4
输出如 “Duration: 00:05:00, bitrate: 1500 kb/s”。 - 隐藏横幅信息解释:与上类似,但隐藏 FFmpeg 的版本和配置横幅,只显示核心信息。
1
ffmpeg -i input.mp4 -hide_banner
示例:用于脚本中减少输出噪音。
格式转换
FFmpeg 最常见的用途是转换文件格式。
- 视频格式转换解释:将输入文件转换为指定输出格式。FFmpeg 会自动选择合适的编解码器。-i 指定输入文件。
1
ffmpeg -i input.mp4 output.avi
示例:从 MP4 转 AVI。 - 音频格式转换解释:类似视频转换,但针对音频。支持 MP3、WAV、AAC 等。
1
ffmpeg -i input.mp3 output.wav
示例:MP3 转 WAV。 - 指定编解码器转换解释:-c:v 指定视频编解码器(libx264 为 H.264),-c:a 指定音频编解码器(aac 为 AAC)。
1
ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mkv
示例:用于兼容特定设备。
视频旋转和翻转
- 旋转视频
1
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4
- 解释:-vf transpose=1 顺时针旋转 90°(0 = 正常,1=90°,2=180°,3=270°)。 示例:修复手机横拍视频。
- 水平 / 垂直翻转 (水平翻转)或 -vf “vflip”(垂直)。 解释:简单镜像效果,常用于修复倒置视频。
1
ffmpeg -i input.mp4 -vf "hflip" output.mp4
FFmpeg 修复视频命令
FFmpeg 可以用于修复损坏的视频文件,例如修复容器问题、索引错误、损坏帧或流不完整的情况。它通过复制流(无损)或重新编码来实现修复,但并非万能(严重损坏可能需要专业工具)。以下是常用修复命令,按场景分类。命令基于官方文档和社区实践,建议备份原文件后测试。
基本修复:修复容器或索引问题(无重新编码)
这种方法适合文件头 / 尾损坏或 MOOV 原子位置不对的情况,仅复制流而不改变内容,速度快。
1 | ffmpeg -i input.mp4 -c copy output.mp4 |
解释:-i 指定输入文件,-c copy 复制所有流(视频、音频、字幕),修复容器(如 MP4 到 MP4)。如果文件有小错误,这能快速修复。
示例:修复损坏的 MP4 文件:ffmpeg -i damaged.mp4 -c copy repaired.mp4
。
忽略错误修复:
1 | ffmpeg -err_detect ignore_err -i input.mp4 -c copy output.mp4 |
解释:-err_detect ignore_err
忽略解码错误,继续处理可挽救部分。适合流中有少量损坏帧的情况。
示例:处理有错误帧的视频。
移动 MOOV Atom
对于 MP4 文件无法预览 / 拖动进度条的问题(“moov atom not found” 或位于文件尾部),可以在复制流时修复:
1 | ffmpeg -i input.mp4 -c copy -movflags +faststart output.mp4 |
解释:-movflags +faststart
会将元数据(moov atom)移动到文件开头,使视频支持流式播放和预览。
重新编码修复:处理严重损坏(如帧丢失或编码错误)
如果复制流失败,需要重新编码视频 / 音频,这会损失一些质量但能修复更多问题。
1 | ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mp4 |
解释:-c:v libx264
指定视频编码器(H.264),-c:a aac
指定音频编码器(AAC)。这会重新处理整个文件,跳过损坏部分。
示例:修复严重损坏的 MP4:ffmpeg -i corrupted.mp4 -c:v libx264 -c:a aac fixed.mp4
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 CaMeiki!
评论