2016-01-22 106 views
1

我有两个QT MOV,我想使用FFmpeg进行连接,但我无法理解如何映射音频通道。FFmpeg - 将4个音频通道映射到1个音轨

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

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

的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 

回答

0

可以摆脱channelsplit,因为你只需要1个流。改用channelmap:

...;[a]channelmap=map=FL|FR|SL|SR[outa]"。并且地图"[outa]"

+0

嗨Mulvya,感谢您的协助。当我尝试了频道映射时,它缺少一个带有以下MediaInfo结果的频道: 频道:2个频道 频道_原图:4频道 频道位置:正面:LCR,面:C – Avalon

+0

做了一些试验,并且似乎AAC编码器不尊重通道映射的输出。我会看看是否有另一种方式。 – Mulvya

+0

显然,不可能。见https://trac.ffmpeg.org/ticket/5179 – Mulvya

相关问题