ffmpeg - especifica sinalizadores de layout de canal

7

Tenho o arquivo abaixo, no qual estou re-mapeando o áudio e tentando definir os sinalizadores de layout de canal em um arquivo Quicktime Prores, mas não consigo fazê-lo funcionar. Posso re-mapear com sucesso o áudio (de 8 discretos para 6 monos + estéreo), mas não consigo definir os sinalizadores de layout de canal para os 6 monos e estéreo, todos os monos saem como 'Mono' em vez de Frente esquerdo , Front Right, etc. Quero o seguinte layout de canal:

Video
Mono - FL
Mono - FR
Mono - FC
Mono - LFE
Mono - BL
Mono - BR
Stereo - DL+DR

Como faço para definir o layout deste canal para que os canais de áudio sejam sinalizados corretamente?

Aqui está a saída ffmpeg do arquivo:

ffmpeg -i /Users/kev/Movies/Test_descrete.mov -ss 20 -to 25 -filter_complex \
> "[0:1]pan=1c|c0=c0[FL]; \
>  [0:1]pan=1c|c0=c1[FR]; \
>  [0:1]pan=1c|c0=c2[FC]; \
>  [0:1]pan=1c|c0=c3[LFE]; \
>  [0:1]pan=1c|c0=c4[BL]; \
>  [0:1]pan=1c|c0=c5[BR]; \
>  [0:1]pan=2c|c0=c6|c1=c7[stereo]" \
> -map v:0 \
> -map "[FL]" \
> -map "[FR]" \
> -map "[FC]" \
> -map "[LFE]" \
> -map "[BL]" \
> -map "[BR]" \
> -map "[stereo]" \
> -vcodec prores -profile:v 3 -vtag apcn -f mov -y -c:a pcm_s24le /Users/kev/Movies/Test_Movie_Out2.mov
ffmpeg version 2.8.1-tessus Copyright (c) 2000-2015 the FFmpeg developers
  built with Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
  configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --as=yasm --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libass --enable-libbluray --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzmq --enable-version3 --disable-ffplay --disable-indev=qtkit --disable-indev=x11grab_xcb
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 60.100 / 56. 60.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 40.101 /  5. 40.101
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/kev/Movies/Test_descrete.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    creation_time   : 2015-10-17 18:55:33
  Duration: 00:01:58.04, start: 0.000000, bitrate: 170075 kb/s
    Stream #0:0(eng): Video: prores (apch / 0x68637061), yuv422p10le, 1920x1080, 160844 kb/s, 24 fps, 24 tbr, 24 tbn, 24 tbc (default)
    Metadata:
      creation_time   : 2015-10-17 18:55:33
      handler_name    : Apple Alias Data Handler
      encoder         : Apple ProRes 422 HQ
    Stream #0:1(eng): Audio: pcm_s24le (lpcm / 0x6D63706C), 48000 Hz, 8 channels (FL+FR+FC+LFE+SL+SR+DL+DR), s32 (24 bit), 9216 kb/s (default)
    Metadata:
      creation_time   : 2015-10-17 19:13:26
      handler_name    : Apple Alias Data Handler
[Parsed_pan_6 @ 0x7f91bbd05f80] Pure channel mapping detected: 6 7
[Parsed_pan_5 @ 0x7f91bbd05d20] Pure channel mapping detected: 5
[Parsed_pan_4 @ 0x7f91bbd05a20] Pure channel mapping detected: 4
[Parsed_pan_3 @ 0x7f91bbd05720] Pure channel mapping detected: 3
[Parsed_pan_2 @ 0x7f91bbd053e0] Pure channel mapping detected: 2
[Parsed_pan_1 @ 0x7f91bbd05060] Pure channel mapping detected: 1
[Parsed_pan_0 @ 0x7f91bbd04d60] Pure channel mapping detected: 0
Output #0, mov, to '/Users/kev/Movies/Test_Movie_Out2.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    encoder         : Lavf56.40.101
    Stream #0:0(eng): Video: prores (apch) (apch / 0x68637061), yuv422p10le, 1920x1080, q=2-31, 200 kb/s, 24 fps, 12288 tbn, 24 tbc (default)
    Metadata:
      creation_time   : 2015-10-17 18:55:33
      handler_name    : Apple Alias Data Handler
      encoder         : Lavc56.60.100 prores
    Stream #0:1: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s (default)
    Metadata:
      encoder         : Lavc56.60.100 pcm_s24le
    Stream #0:2: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
    Metadata:
      encoder         : Lavc56.60.100 pcm_s24le
    Stream #0:3: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
    Metadata:
      encoder         : Lavc56.60.100 pcm_s24le
    Stream #0:4: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
    Metadata:
      encoder         : Lavc56.60.100 pcm_s24le
    Stream #0:5: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
    Metadata:
      encoder         : Lavc56.60.100 pcm_s24le
    Stream #0:6: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
    Metadata:
      encoder         : Lavc56.60.100 pcm_s24le
    Stream #0:7: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, stereo, s32, 2304 kb/s
    Metadata:
      encoder         : Lavc56.60.100 pcm_s24le
Stream mapping:
  Stream #0:1 (pcm_s24le) -> pan (graph 0)
  Stream #0:1 (pcm_s24le) -> pan (graph 0)
  Stream #0:1 (pcm_s24le) -> pan (graph 0)
  Stream #0:1 (pcm_s24le) -> pan (graph 0)
  Stream #0:1 (pcm_s24le) -> pan (graph 0)
  Stream #0:1 (pcm_s24le) -> pan (graph 0)
  Stream #0:1 (pcm_s24le) -> pan (graph 0)
  Stream #0:0 -> #0:0 (prores (native) -> prores (native))
  pan (graph 0) -> Stream #0:1 (pcm_s24le)
  pan (graph 0) -> Stream #0:2 (pcm_s24le)
  pan (graph 0) -> Stream #0:3 (pcm_s24le)
  pan (graph 0) -> Stream #0:4 (pcm_s24le)
  pan (graph 0) -> Stream #0:5 (pcm_s24le)
  pan (graph 0) -> Stream #0:6 (pcm_s24le)
  pan (graph 0) -> Stream #0:7 (pcm_s24le)
Press [q] to stop, [?] for help
frame=    9 fps=1.6 q=-0.0 size=    4462kB time=00:00:00.50 bitrate=73099.2kbitsframe=   21 fps=3.4 q=-0.0 size=   16380kB time=00:00:01.00 bitrate=134183.6kbitframe=   35 fps=5.2 q=-0.0 size=   28001kB time=00:00:01.52 bitrate=150775.9kbitframe=   46 fps=6.4 q=-0.0 size=   38857kB time=00:00:02.00 bitrate=159158.1kbitframe=   57 fps=7.4 q=-0.0 size=   50044kB time=00:00:02.50 bitrate=163983.6kbitframe=   69 fps=8.3 q=-0.0 size=   62437kB time=00:00:03.00 bitrate=170495.5kbitframe=   80 fps=9.1 q=-0.0 size=   73925kB time=00:00:03.50 bitrate=173027.6kbitframe=   91 fps=9.8 q=-0.0 size=   85376kB time=00:00:04.00 bitrate=174850.3kbitframe=  103 fps= 10 q=-0.0 size=   97897kB time=00:00:04.50 bitrate=178216.6kbitframe=  114 fps= 11 q=-0.0 size=  109345kB time=00:00:05.00 bitrate=179151.2kbitframe=  120 fps= 11 q=-0.0 Lsize=  119787kB time=00:00:05.00 bitrate=196258.7kbits/s    
video:114148kB audio:5625kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.011179%
speedyrazor
fonte

Respostas:

1

Eu encontrei parcialmente uma resposta, embora o canal central, o total esquerdo e o total direito não estejam saindo no arquivo, todos os três estão saindo como Mono. Parece que o Center é um recurso ffmpeg, acho que Center e Mono são a mesma coisa, então o ffmpeg deixa o Mono. Idealmente, estou procurando um arquivo de patch ffmpeg, a ser aplicado antes da compilação, o que me forneceria os resultados necessários.

O resultado atualmente sai como:

Video
Front Left
Front Right
Mono (should be Center)
Left Surround
Right Surround
Mono (should be Left Total)
Mono (shold be Right Total)

Aqui está o comando:

ffmpeg -i /Volumes/GRAID/EXPORTS/DESCRETE_TEST.mov -ss 45 -to 50 -filter_complex \
"[0:1]pan=FL|c0=c0[FL]; \
 [0:1]pan=FR|c0=c1[FR]; \
 [0:1]pan=FC|c0=c2[FC]; \
 [0:1]pan=LFE|c0=c3[LFE]; \
 [0:1]pan=BL|c0=c4[BL]; \
 [0:1]pan=BR|c0=c5[BR]; \
 [0:1]pan=DL|c0=c6[DL]; \
 [0:1]pan=DR|c0=c7[DR]" \
-map v:0 \
-map "[FL]" \
-map "[FR]" \
-map "[FC]" \
-map "[LFE]" \
-map "[BL]" \
-map "[BR]" \
-map "[DL]" \
-map "[DR]" \
-vcodec prores -profile:v 3 -vtag apcn -f mov -y -c:a pcm_s24le /Volumes/GRAID/EXPORTS/DONE_TEST.mov

Abaixo está a saída ffmpeg disso.

ffmpeg -i /Volumes/GRAID/EXPORTS/DESCRETE_TEST.mov -ss 45 -to 50 -filter_complex \
> "[0:1]pan=FL|c0=c0[FL]; \
>  [0:1]pan=FR|c0=c1[FR]; \
>  [0:1]pan=FC|c0=c2[FC]; \
>  [0:1]pan=LFE|c0=c3[LFE]; \
>  [0:1]pan=BL|c0=c4[BL]; \
>  [0:1]pan=BR|c0=c5[BR]; \
>  [0:1]pan=DL|c0=c6[DL]; \
>  [0:1]pan=DR|c0=c7[DR]" \
> -map v:0 \
> -map "[FL]" \
> -map "[FR]" \
> -map "[FC]" \
> -map "[LFE]" \
> -map "[BL]" \
> -map "[BR]" \
> -map "[DL]" \
> -map "[DR]" \
> -vcodec prores -profile:v 3 -vtag apcn -f mov -y -c:a pcm_s24le /Volumes/GRAID/EXPORTS/DONE_TEST.mov
ffmpeg version 2.8.1-tessus Copyright (c) 2000-2015 the FFmpeg developers
  built with Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
  configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --as=yasm --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libass --enable-libbluray --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzmq --enable-version3 --disable-ffplay --disable-indev=qtkit --disable-indev=x11grab_xcb
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 60.100 / 56. 60.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 40.101 /  5. 40.101
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Volumes/GRAID/EXPORTS/DESCRETE_TEST.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    creation_time   : 2015-10-20 14:25:55
  Duration: 00:01:37.08, start: 0.000000, bitrate: 160894 kb/s
    Stream #0:0(eng): Video: prores (apch / 0x68637061), yuv422p10le, 1920x1080, 151675 kb/s, 24 fps, 24 tbr, 24 tbn, 24 tbc (default)
    Metadata:
      creation_time   : 2015-10-20 14:25:55
      handler_name    : Apple Alias Data Handler
      encoder         : Apple ProRes 422 HQ
    Stream #0:1(eng): Audio: pcm_s24le (lpcm / 0x6D63706C), 48000 Hz, 8 channels (FL+FR+FC+LFE+SL+SR+DL+DR), s32 (24 bit), 9216 kb/s (default)
    Metadata:
      creation_time   : 2015-10-20 14:28:55
      handler_name    : Apple Alias Data Handler
[Parsed_pan_7 @ 0x7fe7d1e05dc0] Pure channel mapping detected: 7
[Parsed_pan_6 @ 0x7fe7d1e05b60] Pure channel mapping detected: 6
[Parsed_pan_5 @ 0x7fe7d1e05860] Pure channel mapping detected: 5
[Parsed_pan_4 @ 0x7fe7d1e05580] Pure channel mapping detected: 4
[Parsed_pan_3 @ 0x7fe7d1e05280] Pure channel mapping detected: 3
[Parsed_pan_2 @ 0x7fe7d1e04f80] Pure channel mapping detected: 2
[Parsed_pan_1 @ 0x7fe7d1e04ba0] Pure channel mapping detected: 1
[Parsed_pan_0 @ 0x7fe7d1e048c0] Pure channel mapping detected: 0
Output #0, mov, to '/Volumes/GRAID/EXPORTS/DONE_TEST.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    encoder         : Lavf56.40.101
    Stream #0:0(eng): Video: prores (apch) (apch / 0x68637061), yuv422p10le, 1920x1080, q=2-31, 200 kb/s, 24 fps, 12288 tbn, 24 tbc (default)
    Metadata:
      creation_time   : 2015-10-20 14:25:55
      handler_name    : Apple Alias Data Handler
      encoder         : Lavc56.60.100 prores
    Stream #0:1: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels (FL), s32, 1152 kb/s (default)
    Metadata:
      encoder         : Lavc56.60.100 pcm_s24le
    Stream #0:2: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels (FR), s32, 1152 kb/s
    Metadata:
      encoder         : Lavc56.60.100 pcm_s24le
    Stream #0:3: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, mono, s32, 1152 kb/s
    Metadata:
      encoder         : Lavc56.60.100 pcm_s24le
    Stream #0:4: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels (LFE), s32, 1152 kb/s
    Metadata:
      encoder         : Lavc56.60.100 pcm_s24le
    Stream #0:5: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels (BL), s32, 1152 kb/s
    Metadata:
      encoder         : Lavc56.60.100 pcm_s24le
    Stream #0:6: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels (BR), s32, 1152 kb/s
    Metadata:
      encoder         : Lavc56.60.100 pcm_s24le
    Stream #0:7: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels (DL), s32, 1152 kb/s
    Metadata:
      encoder         : Lavc56.60.100 pcm_s24le
    Stream #0:8: Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 1 channels (DR), s32, 1152 kb/s
    Metadata:
      encoder         : Lavc56.60.100 pcm_s24le
Stream mapping:
  Stream #0:1 (pcm_s24le) -> pan (graph 0)
  Stream #0:1 (pcm_s24le) -> pan (graph 0)
  Stream #0:1 (pcm_s24le) -> pan (graph 0)
  Stream #0:1 (pcm_s24le) -> pan (graph 0)
  Stream #0:1 (pcm_s24le) -> pan (graph 0)
  Stream #0:1 (pcm_s24le) -> pan (graph 0)
  Stream #0:1 (pcm_s24le) -> pan (graph 0)
  Stream #0:1 (pcm_s24le) -> pan (graph 0)
  Stream #0:0 -> #0:0 (prores (native) -> prores (native))
  pan (graph 0) -> Stream #0:1 (pcm_s24le)
  pan (graph 0) -> Stream #0:2 (pcm_s24le)
  pan (graph 0) -> Stream #0:3 (pcm_s24le)
  pan (graph 0) -> Stream #0:4 (pcm_s24le)
  pan (graph 0) -> Stream #0:5 (pcm_s24le)
  pan (graph 0) -> Stream #0:6 (pcm_s24le)
  pan (graph 0) -> Stream #0:7 (pcm_s24le)
  pan (graph 0) -> Stream #0:8 (pcm_s24le)
Press [q] to stop, [?] for help
[pcm_s24le @ 0x7fe7d3007c00] not writing 'chan' tag due to lack of channel information 
[pcm_s24le @ 0x7fe7d3010a00] not writing 'chan' tag due to lack of channel information
frame=  120 fps=7.4 q=-0.0 Lsize=  129110kB time=00:00:05.00 bitrate=211534.5kbits/s    
video:123470kB audio:5625kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.011760%
speedyrazor
fonte