FFmpeg - 将4个音频通道映射到1个音轨

时间:2016-01-22 03:54:16

标签: qt audio ffmpeg

我想使用FFmpeg连接两个QT MOV,但我无法理解如何映射音频通道。

第一个MOV有2个通道,左前和右前。第二个MOV有4个通道,左前,右前,左左和右右。

如何创建1个音频轨道,其中4个通道映射为FL,FR,SL和SR?

MediaInfo报告以下内容(不需要的结果):

Audio #1
ID                                       : 2
Format                                   : AAC
Format/Info                              : Advanced Audio Codec
Format profile                           : LC
Codec ID                                 : 40
Duration                                 : 4mn 35s
Bit rate mode                            : Variable
Bit rate                                 : 126 Kbps
Maximum bit rate                         : 160 Kbps
Channel(s)                               : 2 channels
Channel(s)_Original                      : 4 channels
Channel positions                        : Front: L C R, Side: C
Sampling rate                            : 48.0 KHz
Frame rate                               : 46.875 fps (1024 spf)
Compression mode                         : Lossy
Stream size                              : 4.14 MiB (12%)
Default                                  : Yes
Alternate group                          : 1

Audio #2
ID                                       : 3
Format                                   : AAC
Format/Info                              : Advanced Audio Codec
Format profile                           : LC
Codec ID                                 : 40
Duration                                 : 4mn 35s
Bit rate mode                            : Variable
Bit rate                                 : 127 Kbps
Maximum bit rate                         : 160 Kbps
Channel(s)                               : 2 channels
Channel(s)_Original                      : 4 channels
Channel positions                        : Front: L C R, Side: C
Sampling rate                            : 48.0 KHz
Frame rate                               : 46.875 fps (1024 spf)
Compression mode                         : Lossy
Stream size                              : 4.18 MiB (12%)
Default                                  : No
Alternate group                          : 1

Audio #3
ID                                       : 4
Format                                   : AAC
Format/Info                              : Advanced Audio Codec
Format profile                           : LC
Codec ID                                 : 40
Duration                                 : 4mn 35s
Bit rate mode                            : Variable
Bit rate                                 : 110 Kbps
Maximum bit rate                         : 160 Kbps
Channel(s)                               : 2 channels
Channel(s)_Original                      : 4 channels
Channel positions                        : Front: L C R, Side: C
Sampling rate                            : 48.0 KHz
Frame rate                               : 46.875 fps (1024 spf)
Compression mode                         : Lossy
Stream size                              : 3.62 MiB (10%)
Default                                  : No
Alternate group                          : 1

Audio #4
ID                                       : 5
Format                                   : AAC
Format/Info                              : Advanced Audio Codec
Format profile                           : LC
Codec ID                                 : 40
Duration                                 : 4mn 35s
Bit rate mode                            : Variable
Bit rate                                 : 110 Kbps
Maximum bit rate                         : 160 Kbps
Channel(s)                               : 2 channels
Channel(s)_Original                      : 4 channels
Channel positions                        : Front: L C R, Side: C
Sampling rate                            : 48.0 KHz
Frame rate                               : 46.875 fps (1024 spf)
Compression mode                         : Lossy
Stream size                              : 3.61 MiB (10%)
Default                                  : No
Alternate group                          : 1

FFmpeg命令如下:

`ffmpeg -i "2chan.mov" -i "4chan.mov" -filter_complex "[0:v] [0:a] [1:v] [1:a] concat=n=2:v=1:a=1 [v] [a]; [v]scale=-1:288[v2]; [a]channelsplit=channel_layout=quad(side)[FL][FR][SL][SR]" -map "[v2]" -map "[FL]" -map "[FR]" -map "[SL]" -map "[SR]" -c:v libx264 -pix_fmt yuv420p -b:v 700k -minrate 700k -maxrate 700k -bufsize 700k -r 25 -sc_threshold 25 -keyint_min 25 -g 25 -qmin 3 -qmax 51 -threads 8 -c:a aac -strict -2 -b:a 160k -ar 48000 -async 1 -ac 4 combined.mp4`

控制台输出:

  ffmpeg version N-77883-gd7c75a5 Copyright (c) 2000-2016 the FFmpeg developers
      built with gcc 5.2.0 (GCC)
      configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
    isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
    le-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --
    enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-l
    ibilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enab
    le-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --en
    able-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --ena
    ble-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc
     --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enabl
    e-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --
    enable-lzma --enable-decklink --enable-zlib
      libavutil      55. 13.100 / 55. 13.100
      libavcodec     57. 22.100 / 57. 22.100
      libavformat    57. 21.101 / 57. 21.101
      libavdevice    57.  0.100 / 57.  0.100
      libavfilter     6. 25.100 /  6. 25.100
      libswscale      4.  0.100 /  4.  0.100
      libswresample   2.  0.101 /  2.  0.101
      libpostproc    54.  0.100 / 54.  0.100
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0000000000575c00] ignoring 'frma' atom of 'mp4a', str
eam format is 'mp4a'
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '2chan.mov':
  Metadata:
    major_brand     : qt
    minor_version   : 537199360
    compatible_brands: qt
    creation_time   : 2016-01-19 05:48:38
  Duration: 00:00:45.00, start: 0.000000, bitrate: 364 kb/s
    Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, smpte1
70m/smpte170m/bt709), 768x576, 196 kb/s, SAR 1:1 DAR 4:3, 25 fps, 25 tbr, 25 tbn
, 50 tbc (default)
    Metadata:
      creation_time   : 2016-01-19 05:48:40
      handler_name    : Apple Alias Data Handler
      encoder         : H.264
      timecode        : 00:00:00:00
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, flt
p, 159 kb/s (default)
    Metadata:
      creation_time   : 2016-01-19 05:48:42
      handler_name    : Apple Alias Data Handler
      timecode        : 00:00:00:00
    Stream #0:2(eng): Data: none (tmcd / 0x64636D74) (default)
    Metadata:
      creation_time   : 2016-01-19 05:49:42
      handler_name    : Apple Alias Data Handler
      timecode        : 00:00:00:00
[mov,mp4,m4a,3gp,3g2,mj2 @ 00000000005da420] ignoring 'frma' atom of 'mp4a', str
eam format is 'mp4a'
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '4chan.mov':
  Metadata:
    major_brand     : qt
    minor_version   : 537199360
    compatible_brands: qt
    creation_time   : 2016-01-19 04:11:52
  Duration: 00:19:58.00, start: 0.000000, bitrate: 5118 kb/s
    Stream #1:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, smpte1
70m/smpte170m/bt709), 768x576, 4955 kb/s, 25 fps, 25 tbr, 25k tbn, 50k tbc (defa
ult)
    Metadata:
      creation_time   : 2016-01-19 04:11:52
      handler_name    : Apple Alias Data Handler
      encoder         : H.264
      timecode        : 00:28:33:21
    Stream #1:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, quad, fltp,
 157 kb/s (default)
    Metadata:
      creation_time   : 2016-01-19 04:11:52
      handler_name    : Apple Alias Data Handler
    Stream #1:2(eng): Data: none (tmcd / 0x64636D74), 0 kb/s
    Metadata:
      rotate          : 0
      creation_time   : 2016-01-19 04:11:52
      handler_name    : Apple Alias Data Handler
      timecode        : 00:28:33:21
File 'Output_Complex_6.mp4' already exists. Overwrite ? [y/N] y
-async is forwarded to lavfi similarly to -af aresample=async=1:min_hard_comp=0.
100000:first_pts=0.
    Last message repeated 1 times
[libx264 @ 000000000057d260] using SAR=1/1
[libx264 @ 000000000057d260] using cpu capabilities: MMX2 SSE2Fast SSSE3 Cache64
 SlowShuffle
[libx264 @ 000000000057d260] profile High, level 2.1
[libx264 @ 000000000057d260] 264 - core 148 r2638 7599210 - H.264/MPEG-4 AVC cod
ec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=1 r
ef=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed
_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pski
p=1 chroma_qp_offset=-2 threads=8 lookahead_threads=1 sliced_threads=0 nr=0 deci
mate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_
adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=25 keyint_min=13
 scenecut=25 intra_refresh=0 rc_lookahead=25 rc=cbr mbtree=1 bitrate=700 ratetol
=1.0 qcomp=0.60 qpmin=3 qpmax=51 qpstep=4 vbv_maxrate=700 vbv_bufsize=700 nal_hr
d=none filler=0 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'Output_Complex_6.mp4':
  Metadata:
    major_brand     : qt
    minor_version   : 537199360
    compatible_brands: qt
    title           : TestTitle
    encoder         : Lavf57.21.101
    Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 384x28
8 [SAR 1:1 DAR 4:3], q=3-51, 700 kb/s, 25 fps, 12800 tbn, 25 tbc (default)
    Metadata:
      encoder         : Lavc57.22.100 libx264
    Side data:
      unknown side data type 10 (24 bytes)
    Stream #0:1: Audio: aac (LC) ([64][0][0][0] / 0x0040), 48000 Hz, 4.0, fltp,
160 kb/s
    Metadata:
      encoder         : Lavc57.22.100 aac
    Stream #0:2: Audio: aac (LC) ([64][0][0][0] / 0x0040), 48000 Hz, 4.0, fltp,
160 kb/s
    Metadata:
      encoder         : Lavc57.22.100 aac
    Stream #0:3: Audio: aac (LC) ([64][0][0][0] / 0x0040), 48000 Hz, 4.0, fltp,
160 kb/s
    Metadata:
      encoder         : Lavc57.22.100 aac
    Stream #0:4: Audio: aac (LC) ([64][0][0][0] / 0x0040), 48000 Hz, 4.0, fltp,
160 kb/s
    Metadata:
      encoder         : Lavc57.22.100 aac
Stream mapping:
  Stream #0:0 (h264) -> concat:in0:v0
  Stream #0:1 (aac) -> concat:in0:a0
  Stream #1:0 (h264) -> concat:in1:v0
  Stream #1:1 (aac) -> concat:in1:a0
  scale -> Stream #0:0 (libx264)
  channelsplit:FL -> Stream #0:1 (aac)
  channelsplit:FR -> Stream #0:2 (aac)
  channelsplit:SL -> Stream #0:3 (aac)
  channelsplit:SR -> Stream #0:4 (aac)
Press [q] to stop, [?] for help
frame=   85 fps=0.0 q=3.0 size=       6kB time=00:00:02.68 bitrate=  18.8kbits/s
frame=  150 fps=148 q=3.0 size=      14kB time=00:00:05.24 bitrate=  21.3kbits/s
frame=  198 fps=130 q=3.0 size=      65kB time=00:00:07.21 bitrate=  74.4kbits/s
frame=  238 fps=118 q=3.0 size=     125kB time=00:00:08.78 bitrate= 116.2kbits/s
frame=  271 fps=108 q=3.0 size=     171kB time=00:00:10.09 bitrate= 138.9kbits/s
frame=  304 fps=100 q=3.0 size=     218kB time=00:00:11.45 bitrate= 156.0kbits/s
frame=  339 fps= 96 q=3.0 size=     268kB time=00:00:12.84 bitrate= 171.0kbits/s
frame=  372 fps= 93 q=-1.0 Lsize=     376kB time=00:00:14.80 bitrate= 208.0kbits
/s speed=3.69x
video:27kB audio:319kB subtitle:0kB other streams:0kB global headers:0kB muxing
overhead: 8.551113%
[libx264 @ 000000000057d260] frame I:15    Avg QP: 3.01  size:  1370
[libx264 @ 000000000057d260] frame P:90    Avg QP: 3.00  size:    24
[libx264 @ 000000000057d260] frame B:267   Avg QP: 3.00  size:    17
[libx264 @ 000000000057d260] consecutive B-frames:  4.3%  0.0%  0.0% 95.7%
[libx264 @ 000000000057d260] mb I  I16..4: 95.8%  0.0%  4.2%
[libx264 @ 000000000057d260] mb P  I16..4:  0.0%  0.0%  0.0%  P16..4:  0.1%  0.0
%  0.0%  0.0%  0.0%    skip:99.9%
[libx264 @ 000000000057d260] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8:  0.0%  0.0
%  0.0%  direct: 0.0%  skip:100.0%  L0: 0.0% L1:100.0% BI: 0.0%
[libx264 @ 000000000057d260] 8x8 transform intra:0.0% inter:50.0%
[libx264 @ 000000000057d260] coded y,uvDC,uvAC intra: 3.1% 8.8% 8.2% inter: 0.0%
 0.0% 0.0%
[libx264 @ 000000000057d260] i16 v,h,dc,p: 90%  5%  5%  0%
[libx264 @ 000000000057d260] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 46% 29% 23%  0%  0%
 0%  0%  0%  0%
[libx264 @ 000000000057d260] i8c dc,h,v,p: 76%  7% 17%  0%
[libx264 @ 000000000057d260] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 000000000057d260] kb/s:14.64
[aac @ 0000000000578320] Qavg: 65394.652
[aac @ 0000000000593020] Qavg: 65473.359
[aac @ 0000000000593940] Qavg: 65536.000
[aac @ 0000000000594260] Qavg: 65536.000
Exiting normally, received signal 2.
Terminate batch job (Y/N)? Y

1 个答案:

答案 0 :(得分:0)

您可以摆脱channelsplit,因为您只需要1个流。改为使用频道图:

...;[a]channelmap=map=FL|FR|SL|SR[outa]"。并映射"[outa]"