web-dev-qa-db-ja.com

ffmpegを使用して、aviの複数のオーディオストリームにオーディオフィルターdynaudnormを適用します

1つのビデオストリームと複数のオーディオストリームを含むaviファイルvideo-double-audio.aviがあります

# ffprobe video-double-audio.avi
...
[avi @ 0x559498d59080] non-interleaved AVI
Input #0, avi, from 'video-double-audio.avi':
  Metadata:
    encoder         : Lavf57.83.100
  Duration: 00:00:19.99, start: 0.000000, bitrate: 11151 kb/s
    Stream #0:0: Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1920x1080, 10149 kb/s, 100 fps, 50 tbr, 100 tbn, 100 tbc
    Stream #0:1: Audio: aac (LC) ([255][0][0][0] / 0x00FF), 48000 Hz, stereo, fltp, 317 kb/s
    Stream #0:2: Audio: aac (LC) ([255][0][0][0] / 0x00FF), 48000 Hz, stereo, fltp, 317 kb/s
    Stream #0:3: Audio: aac (LC) ([255][0][0][0] / 0x00FF), 48000 Hz, stereo, fltp, 317 kb/s

そして、dynaudnormオーディオフィルターを適用したいので、次のコマンドを実行します。

ffmpeg -i video-double-audio.avi -af 'dynaudnorm=n=0:c=1' -c:v copy video-out.avi

ただし、現在、video-out.aviに残っているオーディオストリームは1つだけです。

# ffprobe video-out.avi
[avi @ 0x556576b6d080] non-interleaved AVI
Input #0, avi, from 'video-out.avi':
  Metadata:
    encoder         : Lavf57.83.100
  Duration: 00:00:20.04, start: 0.000000, bitrate: 10278 kb/s
    Stream #0:0: Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1920x1080, 10134 kb/s, 100 fps, 50 tbr, 100 tbn, 100 tbc
    Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 48000 Hz, stereo, s16p, 128 kb/s

しかし、現在はオーディオストリームが1つしか残っておらず、他のストリームは削除されているようです。

なぜこれが起こるのですか?

そして、どうすればこれを防ぐことができますか?

前もって感謝します!

1
MuadDev

-mapがない場合、ffmpegは各タイプのストリームを1つだけ選択します。 https://ffmpeg.org/ffmpeg.html#toc-Stream-selection を参照してください

したがって、マッピングを追加します。

ffmpeg -i video-double-audio.avi -map 0 -af 'dynaudnorm=n=0:c=1' -c:v copy video-out.avi

0
Gyan