FFMPEG 同时编码音频和强制字幕?
Posted
技术标签:
【中文标题】FFMPEG 同时编码音频和强制字幕?【英文标题】:FFMPEG encode audio and forced subtitles at same time? 【发布时间】:2017-01-08 07:46:11 【问题描述】:我正在使用 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
文件并对其进行编辑以只为外国部分生成字幕 - 所以英语音频在电影中没有字幕,但外国音频确实有字幕?
干杯
编辑3:
当我尝试同时使用这两个命令时(我之前提到的音频转换器和来自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.
【问题讨论】:
【参考方案1】:由于您的媒体播放器不支持字幕,因此必须将文本刻录到视频图像上。为此,请使用
ffmpeg -i input.mkv -vf "ass=subs.ass" -c:v libx264 -crf 20 -c:a ac3 output.mkv
这将重新编码视频,因为正在添加文本。 CRF 值控制视频质量。较低的值会产生更好的质量但更大的文件。 18 到 28 是一个不错的尝试范围。
【讨论】:
以上是关于FFMPEG 同时编码音频和强制字幕?的主要内容,如果未能解决你的问题,请参考以下文章
FFmpegffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )
FFmpeg基础库编程开发学习笔记——音频常见格式及字幕格式