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で圧縮された2つの非圧縮オーディオチャンネル以上)。

ffmpeg6チャンネル以上のエンコーディングはサポートされていないというコードを見るとわかります。デジタル伝送システムまたはコミュニケーション3。サポートされていない場合は、ffmpegLinuxにそれをサポートする既製のツールがないようです。

方法を学ぶDTS-ESそしてドルビーデジタルEX機能すると、どちらも追加の独立チャネルを提供せず、代わりに背面中央チャネルを別のチャネルに混在(または「マトリックス」)し、6.1モードのデータフロー用の特別なフラグ番号を設定することがわかります。その後、エンコーダはチャネルを再び分離する必要があります。これは情報の損失によって常に可能ではなく、ソースデータによっては音のアーティファクトが発生する可能性があります。

(可能な例外は、真の独立チャネルがあると主張する「DTS-ES Discrete 6.1」です。またただし、そのチャネルがどのようにエンコードされているのか、S / PDIFを介して送信される場合は、制限されたS / PDIF帯域幅にどのように適合するのかは不明であるため、これらの分離はソースデータにのみ存在する可能性が高く、とにかく失われます。 S/PDIFから)。

したがって、2つの質問があります。データストリームで6.1フラグを有効にする方法と、追加のチャネルを既存のチャネルに混在させる方法です。幸い、SB DEC [MATRIX]Sony STR-DE895(手動32ページ)フラグを無視し、フラグに関係なく常にDolby Digital EXデコーダマトリックスを適用します。これはffmpegソースコードを変更せずに最初の問題を解決します。

マトリックス係数に関する正確な情報を見つけることはできませんが、「実際にドルビーの初期のPro Logicフォーマットと似ています」ので、中央チャネルを3dB(0.5倍)だけ減らすだけです。これは最初の近似で試してみましょう。リバースチャンネルと同じffmpeg ファンフィルタリング、エンコードac3、結果が許容できることを確認してください。

これがうまくいくと仮定すると、長期的な解決策は、ALSA A52プラグインをハッキングして内部ミキシングをサポートすることによって、真の6.1チャンネルALSAデバイスを備えていることです。その後、ソース素材を再エンコードすることなく、それを使用して任意の形式の6.1ソースを再生できます。

まったく異なるアプローチ(品質の違いと考えられるサウンドアーティファクトのアイデアを得るためにこれを試してリスニング比較を実行することをお勧めします)は、Multi Ch In 1Sonyのフィールドを使用することです。シミュレーション7.1サウンドカード(持っているか借りることができる場合)。これは真のチャンネル分離を提供しますが、もちろん今ではソニーではなくサウンドカードのD / Aコンバータを使用します。

おすすめ記事