ffmpeg saluran stereo menjadi dua saluran mono


11

Saya ingin tahu apakah ada cara untuk membagi stereo menjadi dua file mono wav. Tebakan pertama saya adalah

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

karena video contoh saya memiliki informasi berikut:

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

Jadi saya punya streaming audio yang satu ini dengan dua saluran dan ingin dua saluran mono. Pada awalnya saya mencobanya dengan map_channel, tetapi itu tidak berhasil tetapi saya mendapatkan pesan kesalahan:

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

Jadi saya telah mencobanya lagi dengan kode yang disebutkan di atas dan setidaknya ffmpeg melakukan sesuatu, tetapi hasilnya tidak seperti yang saya harapkan, alih-alih memecahnya menjadi dua file mono wav, hasilnya adalah:

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

lagi dengan dua saluran audio, jadi di mana saya salah?

Jawaban:


17

Menggunakan ffmpeg ada beberapa metode yang saya tahu untuk beralih dari stereo ke dua file mono individu, atau dua mono stream dalam satu file:

stereo ke 2 output mono

stereo ke 2 output mono

-map_channel pilihan

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

pan filter audio

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

stereo ke 2 aliran mono

channelsplit filter audio

stereo ke 2 aliran mono

Ini akan membuat satu file keluaran yang memiliki dua aliran mono individual:

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

Lihat juga


Terima kasih, saya telah menemukan kekurangan saya. Ketika saya menggunakan -map_channelsaya tidak menggunakan titik tunggal tetapi saya menggunakan titik ganda, jadi tidak heran itu tidak berhasil. Sekarang berhasil!
— sebastian

1
mari kita anggap saya punya file dengan 6 saluran dalam satu aliran, bagaimana saya tahu saluran yang mana? Ketika saya memiliki 2 saluran itu mudah, selalu 0,0.0 kiri dan kanan 0,0.1. Saya telah melihat dokumentasi ffmpeg dan dikatakan -layoutstetapi tidak ada contoh cara kerjanya. Saya sudah mencobanya dan pesan yang saya dapatkan adalah Missing argument for option 'layouts'argumen apa yang diharapkan oleh ffmpeg?
— sebastian

@sebastian Anda ingin membuat enam file output mono dari input enam saluran?
— llogan

Saya memiliki dua atau tiga klip yang memiliki suara surround 5.1 dan tentu saja setelah saya menggunakan map_channel pada keenamnya, saya tidak dapat menentukan map_channel mana yang berada di posisi mana, berikut ini contohnya:, Audio ID : 2 Channel(s) : 6 channels Channel positions : Front: L C R, Side: L R, LFEtapi saya rasa saya sudah menemukan solusi untuk masalah ini.
— sebastian

@sebastian Apa solusi Anda?
— llogan

1

Anda harus menggunakan filter channelsplit untuk itu. -map tidak bisa melakukan ini. Sebagai contoh:

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

Periksa tautan ke dokumentasi yang saya berikan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.