#2 调整视频文件中音频流的顺序

2021-08-28

ffprobe

ffprobe movie.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'movie.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 1
    compatible_brands: isomavc1
    creation_time   : 2020-02-20T06:07:54.000000Z
  Duration: 01:43:14.16, start: 0.000000, bitrate: 2844 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1495 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)
    Metadata:
      creation_time   : 2020-02-20T06:07:54.000000Z
    Stream #0:1(und): Audio: ac3 (ac-3 / 0x332D6361), 44100 Hz, stereo, fltp, 448 kb/s (default)
    Metadata:
      creation_time   : 2020-02-20T06:08:03.000000Z
    Side data:
      audio service type: main
    Stream #0:2(und): Audio: ac3 (ac-3 / 0x332D6361), 44100 Hz, 5.1(side), fltp, 448 kb/s (default)
    Metadata:
      creation_time   : 2020-02-20T06:09:02.000000Z
    Side data:
      audio service type: main
    Stream #0:3(und): Audio: ac3 (ac-3 / 0x332D6361), 44100 Hz, 5.1(side), fltp, 448 kb/s (default)
    Metadata:
      creation_time   : 2020-02-20T06:09:29.000000Z
    Side data:
      audio service type: main

ffmpeg

ffmpeg -loglevel info -i movie.mp4 -ss 00:29:08.0 -to 00:31:25.0 -s 1280x720 -c copy -map 0:v:0 -map 0:a:0 -map 0:a:1 -map 0:a:2 test.mp4

# 输入,复制,设置第一个音频流为默认,输出
# 发现其他几个音频流不见了,输出文件中只有一个音频流
ffmpeg -i movie.mp4 -c copy -disposition:a:1 default 冰雪奇缘2_new.mp4

ffmpeg -i movie.mp4 -c copy -map 0:v:0 -map 0:a:1 -map 0:a:0 -disposition:a:0 default  -disposition:a:1 0 冰雪奇缘2_new2.mp4

解析:输入,复制(不重新编码),

-map 0:v:0
-map 0:a:1
-map 0:a:0

-c / -codec
-c:v
-c:a
-c:s
-c:d
[mp4 @ 0x556a8afca7c0] track 1: codec frame size is not set

ffmpeg -i test.mp4 -frames 1 -f image2 /tmp/image.png