我想使用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
答案 0 :(得分:0)
您可以摆脱channelsplit,因为您只需要1个流。改为使用频道图:
...;[a]channelmap=map=FL|FR|SL|SR[outa]"
。并映射"[outa]"
。