題 使用FFMPEG為M4v視頻文件添加字幕


我在使用ffmpeg為視頻文件添加字幕時遇到了麻煩。

我正在使用此命令:

ffmpeg -i movie_input.m4v -newsubtitle subtitles.srt -acodec copy -vcodec copy movie_output.m4v

我在各種教程中找到了這個命令行示例,但出於某種原因(更新版本的ffmpeg?)它給了我:

Unrecognized option 'newsubtitle'

有關如何使用ffmpeg添加字幕的任何線索?

謝謝!

附:我需要一個可以在bash腳本中自動化的解決方案,因此使用像Subler這樣的程序不適合這項任務。


4
2018-02-10 16:56


起源




答案:


-newsubtitle 是舊版ffmpeg的過時選項;使用更現代的版本,命令將如下所示:

ffmpeg -i input.m4v -i subtitle.srt -map 0 -map 1 -c copy -c:s mov_text output.m4v

-i input.m4v -i subtitle.srt 告訴ffmpeg使用這兩個文件作為輸入。

-map 0 -map 1 告訴ffmpeg使用輸入數字0和輸入數字1的所有流。

它與此沒有直接關係,但您可以選擇單個流 -map-map 0:v 將從輸入0中選擇所有視頻流, -map 1:s 將從輸入1中選擇所有字幕流, -map 0:0 將從輸入0中選擇流0(第一個流), -map 1:a:0 將選擇輸入1的第一個音頻流。

-c copy 告訴ffmpeg從輸入複製所有流而不重新編碼,同時具有 -c:s mov_text   該 -c copy 覆蓋字幕流的複制設置,將其重新編碼為MP4容器可以包含的表單。


8
2018-02-10 18:17



有沒有辦法使用ffmpeg將字幕刻錄到m4v文件? - Koray Tugay
@KorayTugay 是。如果您需要該鏈接中未包含的任何幫助,請隨時 問一個問題 (不要忘記用它標記 ffmpeg)。 - evilsoup
我很困惑,因為這裡的例子不包含m4v。 - Koray Tugay


隨著FFmpeg 0.9, -newsubtitle 選項已刪除。如果要將所有輸入文件的視頻/音頻/字幕流添加到輸出,請使用 -map 選項,例如:

ffmpeg -i movie_input.m4v -i subtitles.srt -c:v copy -c:a copy -c:s mov_text \
-map 0 -map 1 out.m4v

這將復制視頻和音頻流,但將字幕編碼為 mov_text,這是MP4唯一官方支持的字幕格式。默認情況下,SRT不起作用。

map 這裡的選項指定第一個文件中的所有流(0)和第二個文件(1)將被複製,因此即使您的原始文件具有多個音頻流,它也會起作用。

有關如何使用的詳細文章 map 選項, 看看FFmpeg維基

刪除這些選項的原因 來自Changelog

-newvideo / -newaudio / -newsubtitle選項已刪除。他們不僅是         不規則和高度混亂,他們也是多餘的。在avconv -map中         選項將在輸出文件中創建新流並將輸入流映射到         他們。例如。 avconv -i INPUT -map 0 OUTPUT將為其創建輸出流         第一個輸入文件中的每個流。


6
2018-02-10 17:59