AC3 5.1オーディオファイルがあるので、最初にx秒のサイレントオーディオを挿入します。これは、ビデオの多重化とは関係ありません。そのため、ビデオストリームに付随するオーディオストリームでのみ機能するように見えるため、そのオフセットは役に立ちません。私はffmpegでこれを達成したいと思います。何か案は?
AC3 5.1オーディオファイルがあるので、最初にx秒のサイレントオーディオを挿入します。これは、ビデオの多重化とは関係ありません。そのため、ビデオストリームに付随するオーディオストリームでのみ機能するように見えるため、そのオフセットは役に立ちません。私はffmpegでこれを達成したいと思います。何か案は?
回答:
メインセグメントの再エンコードを回避する場合は、concat demuxerを使用します。このメソッドは、開始または終了(またはその両方)に無音を追加するために機能します。
使用anullsrcサイレントオーディオを作成することで、オーディオソースフィルタを。メインオーディオファイルの形式、チャンネルレイアウト、サンプルレートを一致させる必要があります。5.1チャンネル、48000 Hzのサンプルレート、1秒のサイレントAC3オーディオファイルを作成する例(これは質問の形式でした):
ffmpeg -f lavfi -i anullsrc=channel_layout=5.1:sample_rate=48000 -t 1 silence.ac3
次に、input.txt
連結するファイルをリストした名前のテキストファイルを作成します。
file 'silent.ac3'
file 'main.ac3'
代わりに最後に無音が必要な場合は、でファイルの順序を切り替えるだけですinput.txt
。
これで、concat demuxerを使用してファイルを連結できます。
ffmpeg -f concat -i input.txt -codec copy output.ac3
1つのコマンドですべてを実行する場合、または入力とは異なる形式で出力する場合(このメソッドはとにかく再エンコードされるため)、concatフィルターを使用します。このメソッドは、開始または終了、またはその両方に無音を追加するために機能します。
ステレオ、44100 Hzのサンプルレート入力の先頭に1秒の無音を追加する例:
ffmpeg -f lavfi -t 1 -i anullsrc=channel_layout=stereo:sample_rate=44100 -i audio.oga -filter_complex "[0:a][1:a]concat=n=2:v=0:a=1" output.m4a
フィルタリングにより、再エンコードが行われますが、連結デマルチプレクサは行われません。
anullsrcでは、チャネルレイアウトと入力のサンプルレートを一致させることをお勧めします。
代わりに無音を最後に追加したい場合は、concatフィルターに与えられた入力の順序を切り替えるだけです[1:a][0:a]concat=n=2:v=0:a=1
。
1つのコマンドですべてを実行する場合、または入力とは異なる形式で出力する場合(このメソッドはいずれにしても再エンコードするため)、遅延オーディオフィルターを使用します。これは、ファイルの先頭に無音を追加する場合にのみ機能します。
この例では、ステレオ入力の先頭に1秒の無音を追加します。
ffmpeg -i input.flac -af "adelay=1000|1000" output.opus
1s
に1秒間使用できます。adelay=1000
し、5.1入力ではを使用しますadelay=1000|1000|1000|1000|1000|1000
。1つのコマンドですべてを実行する場合、または入力とは異なる形式に出力する場合(このメソッドはいずれにしても再エンコードするため)、apadオーディオフィルターを使用します。これは、ファイルの最後に無音を追加する場合にのみ機能します。
この例では、最後に1秒の無音が追加されます。
ffmpeg -i input.wav -af "apad=pad_dur=1" output.m4a
フィルタリングにより、再エンコードが行われますが、連結デマルチプレクサは行われません。
このpad_dur
オプションはFFmpeg 4.1のリリース後に追加されたため、git masterブランチからの最近のビルドを使用するか、FFmpeg 4.2を待つ必要があります。
[Parsed_aevalsrc_0 @ 000000000195fec0] This syntax is deprecated. Use '|' to sep arate the list items.
新しい構文は-i "aevalsrc=0|0|0|0|0|0:d=1"