6.1 채널을 유지하면서 MKV의 오디오를 AC3 또는 DTS로 변환합니다.

6.1 채널을 유지하면서 MKV의 오디오를 AC3 또는 DTS로 변환합니다.

.mkvFLAC 형식의 6.1 오디오가 포함된 파일이 있습니다 . mediainfo다음 파일의 오디오 트랙을 다음과 같이 보고합니다.

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

나는 또한 6.1암페어의 "홈 시어터"를 가지고 있습니다(SonySTR-DE895, 누구든지 관심 있는 경우)는 S/PDIF(광 및 동축) 연결을 통해 다음 형식의 디지털 오디오를 허용합니다.

  • PCM(S/PDIF에서만 2채널)
  • 디지털 전송(5.1)
    • DTS-ES(6.1)
    • 뉴 6(6.1)
  • 돌비 디지털(5.1)
    • 디지털-EX(6.1)
    • 프로페셔널로직II

.mkv이 파일이 앰프의 모든 6.1 스피커를 구동하기를 원 하지만 .mkv다음과 같은 명령을 사용하여 파일을 변환하면:

ffmpeg -i Input.FLAC.6.1.mkv -c:s copy -c:v copy -c:a ac3 Output.AC3.6.1.mkv

그런 다음 5.1 오디오를 얻습니다. 즉, 중간 및 후면 채널이 손실됩니다. 모든 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

어떻게 변경되는지 확인하세요.

Channel(s)               : 7 channels
Channel positions        : Front: L C R, Side: L R, Back: C, LFE 

도착하다:

Channel(s)                   : 6 channels
Channel positions            : Front: L C R, Side: L R, LFE

채널 수를 강제로 설정하려고 하면 다음과 같은 결과가 -ac 7나옵니다.

[ac3 @ 0x43f2a40] Specified channel layout '6.1' is not supported

DTS정확히 동일한 결과를 얻기 위해 변환을 시도했습니다 . 즉, 다음을 교체하세요.

-c:a ac3

그리고:

-strict experimental -c:a dts

결과는 다음과 같습니다 mediainfo.

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

6.1을 강제로 적용하려고 하면 -ac 7위와 같은 오류가 발생합니다.'6.1' is not supported

가치 있는 일을 위해,ffmpeg위 테스트에 사용된예전에는 :

$ 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

그렇다면 .mkv6.1 채널 형식을 유지하면서 파일의 오디오를 내 시스템에서 지원하는 형식으로 어떻게 변환합니까?

답변1

부분 답변(테스트되지 않음):

따라서 주요 문제는 어떤 이유에서든 광섬유/동축 S/PDIF 연결에 갇혀 있다는 것입니다. 이 연결에는 대역폭이 충분하지 않습니다(실제로는 더 많은 작업을 수행할 만큼 대역폭이 충분하지 않습니다). 버전 5.1에서 압축된 두 개의 비압축 오디오 채널 이상).

ffmpeg6채널 이상의 인코딩은 지원되지 않는다는 코드를 보면 알 수 있습니다.디지털 전송 시스템또는커뮤니케이션 3. 지원 되지 않는다면 ffmpegLinux에 이를 지원하는 기성 도구가 없는 것 같습니다.

방법을 알아보세요DTS-ES그리고돌비 디지털 EX작동하면 둘 중 어느 것도 추가 독립 채널을 제공하지 않고 대신 후면 중앙 채널을 다른 채널에 혼합(또는 "매트릭스")하고 6.1 모드 데이터 흐름을 위한 특수 플래그 번호를 설정한다는 것을 알 수 있습니다. 그런 다음 인코더는 채널을 다시 분리해야 하는데, 이는 정보 손실로 인해 항상 가능한 것은 아니며 소스 자료에 따라 사운드 아티팩트가 발생할 수 있습니다.

(가능한 예외는 진정한 독립 채널이 있다고 주장하는 "DTS-ES Discrete 6.1"입니다.또한하지만 해당 채널이 어떻게 인코딩되는지, S/PDIF를 통해 전송되는 경우 제한된 S/PDIF 대역폭에 어떻게 맞아야 하는지 명확하지 않으므로 이러한 분리는 소스 자료에만 존재할 가능성이 높으며 어쨌든 손실됩니다. S/PDIF에서).

따라서 두 가지 질문이 있습니다. 데이터 스트림에서 6.1 플래그를 활성화하는 방법과 추가 채널을 기존 채널에 혼합하는 방법입니다. 다행히 SB DEC [MATRIX]Sony STR-DE895(수동32페이지) 플래그를 무시하고 플래그에 관계없이 항상 Dolby Digital EX 디코더 매트릭스를 적용합니다. 이는 ffmpeg소스 코드를 수정하지 않고 첫 번째 문제를 해결합니다 .

매트릭스 계수에 대한 정확한 정보를 찾을 수는 없지만 "실제로 Dolby의 초기 Pro Logic 형식과 유사"하기 때문에 중앙 채널을 3dB(0.5배)만큼 줄이는 것뿐입니다. 이는 첫 번째 근사치로 시도해 보겠습니다. 역방향 채널과 동일ffmpeg 필터링하고, 인코딩하고 ac3, 결과가 수용 가능한지 확인하세요.

이것이 작동한다고 가정하면 장기적인 해결책은 ALSA A52 플러그인을 해킹하여 내부 믹싱을 지원함으로써 진정한 6.1 채널 ALSA 장치를 갖추는 것입니다. 그런 다음 소스 자료를 다시 인코딩하지 않고도 이를 사용하여 모든 형식의 6.1 소스를 재생할 수 있습니다.

완전히 다른 또 다른 접근 방식(품질 차이와 가능한 사운드 아티팩트에 대한 아이디어를 얻기 위해 이것을 시도하고 청취 비교를 수행하는 것이 좋습니다)은 Multi Ch In 1Sony의 필드를 사용하는 것입니다.시뮬레이션7.1 사운드 카드(가지고 있거나 빌릴 수 있는 경우). 이는 진정한 채널 분리를 제공하지만 물론 이제는 Sony가 아닌 사운드 카드의 D/A 변환기를 사용하게 됩니다.

답변2

귀하의 앰프가 PCM을 지원하므로 이를 사용하십시오.

ffmpeg -i Input.FLAC.6.1.mkv -c:s copy -c:v copy -c:a pcm_s16le  Output.PCM.6.1.mkv

관련 정보