Tenho alguns .mkv
arquivos que contém áudio 6.1 no formato FLAC. mediainfo
relata a faixa de áudio nesses arquivos como:
Audio
ID : 2
Format : FLAC
Format/Info : Free Lossless Audio Codec
Codec ID : A_FLAC
Duration : 2mn 29s
Bit rate mode : Variable
Channel(s) : 7 channels
Channel positions : Front: L C R, Side: L R, Back: C, LFE
Sampling rate : 48.0 KHz
Bit depth : 24 bits
Delay relative to video : 14ms
Writing library : libFLAC 1.3.0 (UTC 2013-05-26)
Language : English
Default : Yes
Forced : No
Eu também tenho um amplificador "Home Theater" 6.1 (Sony STR-DE895 , se alguém se importa) que aceita áudio digital nativamente através de uma conexão S/PDIF (óptica e coaxial) nos seguintes formatos:
- PCM (limitado a 2 canais em S/PDIF)
- DTS (5.1)
- DTS-ES (6.1)
- NEO6 (6.1)
- Dolby Digital (5.1)
- DIGITAL-EX (6.1)
- PRO LÓGICA II
Eu gostaria de ter esses .mkv
arquivos dirigindo todos os alto-falantes 6.1 do amplificador, mas se eu converter o .mkv
arquivo com um comando como este:
ffmpeg -i Input.FLAC.6.1.mkv -c:s copy -c:v copy -c:a ac3 Output.AC3.6.1.mkv
Então eu recebo áudio 5.1, ou seja, perco o canal traseiro central. Por mediainfo
:
Audio
ID : 2
Format : AC-3
Format/Info : Audio Coding 3
Mode extension : CM (complete main)
Format settings, Endianness : Big
Codec ID : A_AC3
Duration : 2mn 29s
Bit rate mode : Constant
Bit rate : 448 Kbps
Channel(s) : 6 channels
Channel positions : Front: L C R, Side: L R, LFE
Sampling rate : 48.0 KHz
Bit depth : 16 bits
Compression mode : Lossy
Delay relative to video : 9ms
Stream size : 8.00 MiB (9%)
Writing library : Lavc57.107.100 ac3
Language : English
Default : Yes
Forced : No
DURATION : 00:02:29.768000000
NUMBER_OF_FRAMES : 1755
NUMBER_OF_BYTES : 56974307
_STATISTICS_WRITING_APP : mkvmerge v8.2.0 ('World of Adventure') 64bit
_STATISTICS_WRITING_DATE_UTC : 2015-08-01 13:29:10
_STATISTICS_TAGS : BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Observe como mudou de:
Channel(s) : 7 channels
Channel positions : Front: L C R, Side: L R, Back: C, LFE
Para:
Channel(s) : 6 channels
Channel positions : Front: L C R, Side: L R, LFE
Se eu tentar forçar o número de canais -ac 7
, recebo:
[ac3 @ 0x43f2a40] Specified channel layout '6.1' is not supported
Tentar converter para DTS
tem exatamente o mesmo resultado. Ou seja, substituindo:
-c:a ac3
Com:
-strict experimental -c:a dts
Resultados em um mediainfo
de:
Audio
ID : 2
Format : DTS
Format/Info : Digital Theater Systems
Mode : 16
Format settings, Endianness : Big
Codec ID : A_DTS
Duration : 2mn 29s
Bit rate mode : Constant
Bit rate : 1 413 Kbps
Channel(s) : 6 channels
Channel positions : Front: L C R, Side: L R, LFE
Sampling rate : 48.0 KHz
Bit depth : 16 bits
Compression mode : Lossy
Delay relative to video : 14ms
Stream size : 25.2 MiB (23%)
Writing library : Lavc57.107.100 dca
Language : English
Default : Yes
Forced : No
DURATION : 00:02:29.774000000
NUMBER_OF_FRAMES : 1755
NUMBER_OF_BYTES : 56974307
_STATISTICS_WRITING_APP : mkvmerge v8.2.0 ('World of Adventure') 64bit
_STATISTICS_WRITING_DATE_UTC : 2015-08-01 13:29:10
_STATISTICS_TAGS : BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
E tentar forçar 6.1 -ac 7
causa o mesmo '6.1' is not supported
erro acima.
Por que vale a pena, o ffmpeg
usado nos testes acima foi:
$ ffmpeg -version
ffmpeg version 3.4.1-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 6.4.0 (Debian 6.4.0-10) 20171112
configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-6 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gray --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-librtmp --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzimg
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
Então, como posso converter o áudio do .mkv
arquivo para um formato suportado pelo meu sistema, preservando o formato de canal 6.1?