web-dev-qa-db-ja.com

ffmpegはaviメタデータとオーディオトラックの命名を編集します

ディスクにavi形式の映画がたくさんあります。ただし、タイトルなどのメタデータは含まれていません。

私は私のためにそれをするコマンドを見つけました:

ffmpeg -i input.avi -metadata title="Moonshine" -metadata author="Moonshine" -metadata copyright="2009" -metadata comment="foo" -acodec copy -vcodec copy output.avi

これは正常に機能しますが、1つのオーディオトラックのみをコピーします。私のファイルには複数のオーディオトラックが含まれています。 ffmpegにすべてをコピーして、ファイルにタイトルを付けてほしい。

また、オーディオトラックに言語名を付ける方法はありますか?たとえば、ファイルには2つのオーディオトラックが含まれています。最初のものは英語で、2番目のものはロシア語です。ビデオプレーヤーを使用すると、言語メニューに最初の名前が英語で2番目の名前がロシア語であることが表示されるように正しく名前を付けるにはどうすればよいですか?

4
Davlog

ストリームの選択

デフォルトのストリーム 選択動作 入力ごとに1つのストリームタイプを選択します。たとえば、入力のように、2つのオーディオストリームが含まれている場合、チャネル数が最も多いストリームのみが選択されます。

ffmpegに、-mapオプションを使用してすべてのストリームを含めるように指示できます。

-mapオプションは0からカウントを開始するため、この例の0は最初の入力を参照します(input.avi:この場合は唯一の入力)。追加の入力がある場合、-map 1は2番目の入力を参照します。

言語メタデータを設定する

1番目と2番目のオーディオストリームの言語を設定するには、-metadataオプションを ストリーム指定子 で使用します。

ffmpeg -i input.avi -map 0 -codec copy -metadata:s:a:0 language=eng -metadata:s:a:1 language=rus output.avi

詳細については、 ドキュメント を参照してください。

5
llogan

私がこれを理解するのにかなり長い時間がかかりました。 3年後でもこのスレッドはグーグル検索の最初のヒットの1つであるため、ここに投稿します:AVI(より具体的には:RIFF)は言語名をサポートしますが、mkvとは異なり、メタデータはストリームに保存されませんが最大9つの異なるオーディオストリームに対してタグIAS1-9を使用してヘッダーで。

ffmpeg -i input.avi -map 0 -codec copy -metadata IAS1=eng -metadata IAS2=ger output.avi

VLCはかなり寛容です。 ISOコード「ger」を入力すると、VLCはそれを「Deutsch」に変換します。代わりに「MyLang」を入力すると、VLCは「MyLang」を表示します。 Kodiのような他のソフトウェアには正しいISOコードが必要です。 「MyL」のみを読み取り、言語を不明として表示します。

ただし、ffmpegは言語を追加するだけでなく、他のメタデータも変更することに注意してください。たとえば、オーディオインターリーブとプリロードのデータはoutput.aviで異なりますが、これが適切かどうか、またはオーディオが同期しなくなる可能性があるかどうかはわかりません。 MediaInfoなどで確認してください。

2
Frank

AVIファイルにはこのように使用します

 -map 0 -acodec copy -metadata:s:a:0  title="English" -metadata:s:a:1 title="Hindi"

タイトルキーワードはトリックを行います

0
Pranjal