系统:Xubuntu 13.04 x64
我发现这个功能在 ffmpeg 中有使用这里
ffmpeg -i video.avi -vf subtitles=subtitle.srt out.avi
但它不起作用。我收到错误
No such filter: 'subtitles'
上面的例子。如果我ffmpeg
用替换,也会发生同样的事情avconv
。
所以我尝试下载源libav
代码这里并编译。当我运行
./configure --enable-libass
在源目录中,这次我得到了
Unknown option "--enable-libass"
我想知道这是否是一个非常特殊的事情,avconv
根本不支持。
答案1
为什么subtitles
过滤器丢失
Libav 倾向于忽略 FFmpeg 的功能,因此avconv
其仿冒版本“ ffmpeg
”(已于 14.04 版移除)不支持 libass,因此不支持subtitles
视频滤镜以及许多其他过滤器。
怎么修
您有多种方式可以从 FFmpeg 获取真实值ffmpeg
:
- 下载
ffmpeg
二进制文件- 最简单的选择。 - 编译- 允许完全定制。
- 使用 mc3man 的 PPA- 适用于 14.04 用户
- 升级你的 Ubuntu - FFmpeg 在 15.04 中回归
用法
硬字幕
这会将字幕“刻录”到视频中,但当然需要对视频重新编码:
ffmpeg -i video.mkv -vf subtitles=subtitle.srt -codec:a copy output.mkv
过滤器需要重新编码。请参阅FFmpeg H.264 编码指南以获得编码建议。
由于你可能不想重新编码音频,这个例子只是流复制(重新多路复用)它。
软字幕
由混入文件的字幕流组成。任何值得使用的播放器都允许您打开或关闭字幕,并从可能存在的其他字幕流中进行选择。无需重新编码。
ffmpeg -i video.mkv -i subtitle.srt -codec copy -map 0 output.mkv
答案2
ffmpeg
并不完全等同于avconv
。参见这有关刻录字幕与avconv
。
还有另一种选择,更简单且带有 GUI:艾维德姆克斯. 使用以下命令安装:
sudo apt-get install avidemux
打开视频文件,然后转到Video
,选择视频编码器(除 之外的任何编码器Copy
),Filters
然后Subtitles
选择 。选择Subtitler
过滤器: