我正在使用ffmpeg windows的最新静态版本。
我的输入文件(.mkv)是:
[video] - 1080, V_MPEG4/ISO/AVC, 14.6 Mbps, ID#0
[audio] - DTS 5.1, 1510 Kbps, ID#1
[subtitles] - S_TEXT/ASS Lossless English, ID#14
我的问题是:我转换音频,以便我的目标播放器,XB1控制台(media support faq)能够播放音频/视频。然而,有时它很难听到或者部分可能是外语,所以我想在转换音频的同时强制将英文字幕加入混音。
目前,对于音频,我使用以下命令
ffmpeg -i input.mkv -codec copy -acodec ac3 output.mkv
我可以以某种方式绑定强制字幕(在视频上)以节省额外的输出获取output.mkv并尝试强制使用字幕吗?
编辑:我尝试使用以下命令提取字幕以便能够编辑它们
ffmpeg -i Movie.mkv -map 0:s:14 subs.srt
然而我收到错误:Stream map '0:s:14' matches no streams
Edit2:尝试提取字幕并成功
ffmpeg -i input.mkv -map 0:14 -c copy subtitles.ass
但仍然希望强制使用字幕!
此外 - 这个问题的一点点好处 - 我可以以某种方式提取.ass
文件并将其编辑为仅生成外国部分的字幕 - 因此英语音频在电影期间没有字幕但是外国音频确实有字幕?
干杯
EDIT3:
当我尝试同时使用这两个命令时(我之前提到的音频转换器和来自ffmpeg wiki的一个)
ffmpeg -i input.mkv -codec copy -acodec ac3 -vf "ass=subs.ass" output.mkv
我从ffmpeg收到以下错误,
Filtergraph 'ass=subs.ass' was defined for video output stream 0:0 but codec copy was selected.
Filtering and streamcopy cannot be used together.
答案 0 :(得分:0)
由于您的媒体播放器不支持字幕,因此必须将文字刻录到视频图像上。为此,请使用
ffmpeg -i input.mkv -vf "ass=subs.ass" -c:v libx264 -crf 20 -c:a ac3 output.mkv
这将重新编码视频,因为正在添加文本。 CRF值控制视频质量。较低的值会产生更好的质量但文件更大。 18到28是一个不错的尝试范围。