FFMPEG mkvからmp4への変換で字幕が失われる


11

現在、私のmkvライブラリをmp4に変換しようとしています(Iphone 6 plus)

mkvからmp4への変換を正しく行うことができましたが、字幕部分(SRT)がありません

これが私のコードです:

dir/b/s *.mkv >mkvlist.txt   ///////// this gets a list of all the mkv files on the directory

for /F "delims=;" %%F in (mkvlist.txt) do ffmpeg.exe  -i "%%F" -format mp4 -vcodec copy -acodec aac -strict -2 -sn "%%~dF%%~pF%%~nF.mp4"   ///////////// this makes the conversion

del mkvlist.txt     ////// this deletes the txt file

字幕をスクリプトに含めたいのですが、スクリプトに字幕の正しい名前を挿入できません(これは複数の変換バッチであるため)。


.mkvファイルはコンテナー形式です。mkvファイルに抽出可能な.srtファイルが含まれている可能性が非常に高いです。それが.mp4ファイルと同じ名前であることを確認してください。mkvファイルには実際にはmp4ファイルも含まれている可能性がありますが、.divx、.avi、またはその他のビデオ形式を含めることもできます。
LPChip 2015年

回答:


17

MP4はSRTをサポートしていません。softsubsまたはhardsubsを使用できます。

ソフトサブ

ファイル内の個別のストリームとして構成される字幕。これらはプレーヤーによってオン/オフを切り替えることができ、ビデオストリームを再エンコードする必要はありません。

ffmpeg -i input.mkv -c copy -c:s mov_text output.mp4

MP4での時間付きテキストソフトサブのプレーヤーサポートは、かなり貧弱な場合があります。あなたはそれを試してみなければならないでしょう。

hardsubs

Hardsubsはビデオに「焼き付け」られるため、ビデオを再エンコードする必要があります。

ffmpeg -i input.mkv -vf subtitles=input.mkv output.mp4

特定の字幕ストリームが複数ある場合に選択する方法などの詳細については、susbtitlesフィルターのドキュメントをご覧ください。


私のコードをよりよく理解するのを手伝ってくれませんか?字幕の再エンコードをどこに、なぜ追加するのですか?(そして、サブフォルダー内のすべてのファイルを対応するサブと共にバッチ変換するソリューションまたは方法を考えることができる場合?)(サブタイトルがない場合、ファイルを完全にスキップして次のファイルに進む必要があります。
dpkmon 2015年

2

私は、Handbrakeでリッピングしたいくつかのmp4ファイルからMP4からMKVへの同様の問題を抱えていました。私は最初にhttps://en.wikibooks.org/wiki/FFMPEG_An_Intermediate_Guide/subtitle_optionsを調べました これは、mkvとmp4の特定の字幕形式を意味していました。動作しないassとmov_textの変換を試した後、いくつかのファイルをテストしたところ、dvd_subtitle形式が表示されていることに気付きました。たくさん遊んだ後、以下がうまくいきました。

ffmpeg -i "\\server\directory\Sourcefile.mp4" -c:v copy -c:a copy -c:s dvd_subtitle "\\server\directory\Outputfile.mkv"

それが役に立てば幸い。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.