ffmpegステレオチャネルを2つのモノチャネルに


11

ステレオを2つのモノWAVファイルに分割する方法があるかどうか知りたいと思いました。私の最初の推測は

ffmpeg -threads "16" -i "$2" -map 0:1:1 "$3"

私のサンプル動画には次の情報があるため:

Audio
ID                                       : 2
Format                                   : AAC
Format/Info                              : Advanced Audio Codec
Format profile                           : LC
Codec ID                                 : 40
Duration                                 : 39mn 0s
Bit rate mode                            : Constant
Bit rate                                 : 256 Kbps
Channel(s)                               : 2 channels
Channel positions                        : Front: L R

だから私はこれが2つのチャンネルを持つ1つのオーディオストリームを持っていて、2つのモノチャンネルが欲しいです。最初はmap_channelで試しましたが、うまくいきませんでした。エラーメッセージが表示されていました。

Syntax error, mapchan usage: [file.stream.channel|-1][:syncfile:syncstream]

だから私は上記のコードでもう一度試してみましたが、少なくともffmpegは何かをしましたが、結果は私が期待したものではなく、2つのモノwavファイルに分解するのではなく、結果は次のとおりでした。

info.system.container = WAVE
info.system.size = 449413166 Bytes
info.system.size = 428.59 MiB
info.system.playtime = 2340.69 s
info.audio0.codec = PCM
info.audio0.desc = 
info.audio0.format_endianness = Little
info.audio0.format_sign = Signed
info.audio0.format_resolution = 16 bits
info.audio0.samprate = 48000 Hz
info.audio0.channels = 2

再び2つのオーディオチャネルがあるので、どこで問題が発生しましたか?

回答:


17

ffmpegを使用すると、ステレオから2つの個別のモノファイル、または1つのファイル内の2つのモノストリームに移動するために知っているいくつかの方法があります。

ステレオから2モノ出力

ステレオから2モノ出力

-map_channel オプション

ffmpeg -i stereo.wav -map_channel 0.0.0 left.wav -map_channel 0.0.1 right.wav

pan オーディオフィルター

ffmpeg -i stereo.wav -filter_complex \
"[0:0]pan=1|c0=c0[left]; \
 [0:0]pan=1|c0=c1[right]" \
-map "[left]" left.wav -map "[right]" right.wav

ステレオから2モノストリーム

channelsplit オーディオフィルター

ステレオから2モノストリーム

これにより、2つの個別のモノストリームを持つ1つの出力ファイルが作成されます。

ffmpeg -i input.m4a -filter_complex channelsplit out.mka

また見なさい


ありがとう、私は私の欠陥を見つけました。使っていた-map_channel時はシングルドットではなくダブルドットを使っていたので動かなかったのも無理はありません。今ではうまくいきます!
セバスチャン

1
1つのストリームに6つのチャネルを持つファイルがあるとしましょう。どのチャネルがどれであるかを知るにはどうすればよいですか?私が2つのチャンネルを持っているときは、その左は常に0.0.0、右は0.0.1です。私はffmpegのドキュメントを調べてみましたが、それ-layoutsがどのように機能するかについての例はありません。私はそれを試しました、そして私が得るメッセージMissing argument for option 'layouts'はffmpegが期待している引数は何ですか?
セバスチャン

@sebastian 6チャンネル入力から6つのモノ出力ファイルを作成しますか?
llogan 2013

私は、5.1サラウンドサウンド、そしてもちろん、私は私がどの位置に属するmap_channel伝えることができないそれらのすべて6にmap_channelを使用した後を持つ2つのまたは3つのクリップを持って、ここでは一例ですAudio ID : 2 Channel(s) : 6 channels Channel positions : Front: L C R, Side: L R, LFEが、私はすでに解決策を見つけたと思いますこの問題のために。
セバスチャン2013

@sebastianあなたの解決策は何ですか?
llogan 2013

1

そのためには、channelslitフィルターを使用する必要があります。-mapはこれを行うことができません。例えば:

ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv

私が提供したドキュメントへのリンクを確認してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.