ffmpeg常用命令
侧边栏壁纸
  • 累计撰写 29 篇文章
  • 累计收到 33 条评论

ffmpeg常用命令

Gimo
2021-12-24 / 0 评论 / 245 阅读 / 正在检测是否收录...

FFmpeg

ffmpeg这个软件有多厉害想必不用过多介绍了吧,它几乎就是所有视频播放器和音频播放器的源头。什么暴风影音、快播等等,都是用它套了个外壳。

剪视频示例,这里我们要把一个名为video.mp4的视频剪辑出来,并重命名为cut.mp4

开始时间 01:55

结束时间 06:22

ffmpeg -ss 00:01:55 -i video.mp4 -to 00:06:22 -copyts cut.mp4

给视频添加字幕

ffmpeg -i 原视频.mkv -i 字幕文件.srt -c copy 输出的视频.mkv

将嵌入字幕转为硬编码字幕

有时候我们在播放器能看到有字幕,但放到网页中却看不到字幕了,这时候可能需要把内嵌字幕转为硬编码字幕

ffmpeg -i input.mp4 -vf "subtitles=input.mp4" -c:v libx264 -c:a aac output.mp4

替换掉已经有的字幕

ffmpeg -i 原视频文件.mp4 -i 字幕文件.srt -c copy -map 0 -map -0:s -map 1 输出的视频.mp4

参数说明:

  • -map 0:选择第一个输入文件的所有流
  • -map -0:s:删除第一个输入文件中的subtitles流(即删除字幕)
  • -map 1:选择第二个输入文件中的流

乱码问题

下载的字幕在Mac打开发现是乱码,解决方法是用命令行转码

iconv -c -f GB2312 -t UTF-8 乱码的字幕.srt >> 输出的字幕.srt

视频转码很简单,用-i参数即可。提取音频也是一样,改一下输出的后缀即可

ffmpeg -i video.flv video.mp4

提取流(音频、字幕)

有时需要指定流来完成格式转换,比如将一个 MP4 视频文件转为 AAC 音频文件(此处实质上是直接提取):

ffmpeg -i video.mp4 -c:a copy audio.aac
此处的 -c:a 表示音频流;视频流 -c:v 与字幕流 -c:s 自然也类似。 注意:如果音频流与容器冲突时,你需要将 copy 改为正确的编解码器(或者删去 -c:a copy 来让 FFmpeg 自动选择),以执行重编码。

对于内挂了字幕的视频文件,也可以将其字幕单独提取出来,例如:

ffmpeg -i video.mkv -c:s copy subtitle.srt

压缩图片

还在满世界找好用的图片压缩工具?ffmpeg强大到你无法想象,实际测试,一个简单的命令就把一张14.4MB的图片压缩到了950KB。丝毫看不出画质有什么损失。令我大为震惊。我没有加任何的参数,只是用了一句 ffmpeg -i 的命令而已。

ffmpeg -i 2.jpg 3.jpg

也可以加-q参数比如 -q 5 范围一到一百。数字越大,压缩得越小。示例:

ffmpeg -i 2.jpg -q 5 out.jpg

经实际测试发现 使用-q 99 或100 参数可以压缩到极限。其实用默认不加参数的已经足够了。以下是实际测试一张14M 的图片用-p参数 从1到30 测试得到的结果:

jpgtexs

合并视频和音频

条件是视频中没有声音


ffmpeg -i 视频文件名称.mp4 -i 音频文件名称.wav -c:v copy -c:a aac -strict experimental 合并后输出的名称.mp4
0

评论 (0)

取消