두 개의 모노 채널로 ffmpeg 스테레오 채널


11

스테레오를 두 개의 모노 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

그래서 나는 두 개의 채널을 가진이 하나의 오디오 스트림을 가지고 있으며 두 개의 모노 채널을 ​​원합니다. 처음에는 map_channel로 시도했지만 그 트릭을 수행하지 않고 오류 메시지가 나타납니다.

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

그래서 위에서 언급 한 코드로 다시 시도했지만 적어도 ffmpeg가 무언가를했지만 결과는 두 개의 모노 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

다시 두 개의 오디오 채널을 사용하면 어디로 잘못 갔습니까?

답변:


17

ffmpeg를 사용하면 스테레오에서 두 개의 개별 모노 파일 또는 하나의 파일에서 두 개의 모노 스트림으로 이동하는 방법을 알 수 있습니다.

스테레오-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 개의 모노 스트림

이렇게하면 두 개의 개별 모노 스트림이있는 하나의 출력 파일이 생성됩니다.

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

참조


고맙습니다, 내 결함을 찾았습니다. 내가 -map_channel사용할 때 단일 점을 사용하지 않고 이중 점을 사용했기 때문에 작동하지 않았다는 것은 놀라운 일이 아닙니다. 이제 작동합니다!
sebastian

1
한 스트림에 6 개의 채널이있는 파일이 있다고 가정합니다. 어떤 채널이 어떤 채널인지 어떻게 알 수 있습니까? 두 개의 채널이 있으면 쉽게 0,0.0 왼쪽과 0.0.1 오른쪽입니다. ffmpeg 설명서를 살펴 보았지만 -layouts작동 방법에 대한 예는 없습니다. 나는 그것을 시도했고 내가 얻는 메시지 Missing argument for option 'layouts'는 ffmpeg가 기대하는 논쟁입니까?
sebastian

@sebastian 6 개의 채널 입력에서 6 개의 모노 출력 파일을 만들고 싶습니까?
llogan

5.1 서라운드 사운드가있는 두 개 또는 세 개의 클립이 있으며 6 개 모두에서 map_channel을 사용한 후에는 어떤 map_channel이 어떤 위치에 속하는지 알 수 없습니다. 예를 들어 보았습니다. Audio ID : 2 Channel(s) : 6 channels Channel positions : Front: L C R, Side: L R, LFE그러나 이미 해결책을 찾았습니다. 이 문제에 대해.
sebastian

@sebastian 솔루션은 무엇입니까?
llogan

1

이를 위해 채널 분할 필터 를 사용해야 합니다. -map이 할 수 없습니다. 예를 들면 다음과 같습니다.

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

내가 제공 한 문서에 대한 링크를 확인하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.