Ffmpegを使用してビデオファイルに字幕を追加するのに問題があります。
私はこのコマンドを使用しています:
ffmpeg -i movie_input.m4v -newsubtitle subtitles.srt -acodec copy -vcodec copy movie_output.m4v
このコマンドラインの例はさまざまなチュートリアルで見つかりましたが、何らかの理由で(ffmpegの新しいバージョン?)次のようになります。
Unrecognized option 'newsubtitle'
Ffmpegを使用して字幕を追加する方法についての手がかりはありますか?
ありがとう!
P.S. bashスクリプトで自動化できるソリューションが必要なので、Sublerのようなプログラムを使用することはこのタスクには適していません。
_-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
_は、これら2つのファイルを入力として使用するようにffmpegに指示します。
_-map 0 -map 1
_は、入力番号0と入力番号1からのすべてのストリームを使用するようにffmpegに指示します。
これには直接関係ありませんが、_-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
_ after _-c copy
_は字幕ストリームのコピー設定をオーバーライドします。 -MP4コンテナに含めることができるフォームにエンコードします。
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
)と2番目のファイル(1
)からのすべてのストリームがコピーされることを指定しているため、元のファイルがあったとしても機能します。たとえば、複数のオーディオストリーム。
map
オプションの使用方法の詳細については、 FFmpeg wikiを参照 。
これらのオプションを削除する理由 変更ログから :
-newvideo/-newaudio/-newsubtitleオプションが削除されました。それらは不規則で非常に混乱しているだけでなく、冗長でもありました。 avconvで、-mapオプションは、出力ファイルに新しいストリームを作成し、入力ストリームをそれらにマップします。例えば。 avconv -i INPUT -map 0 OUTPUTは、最初の入力ファイルの各ストリームの出力ストリームを作成します。