왼쪽 채널 만 사용하여 Ffmpeg Audio Stereo to Mono


12

다음 명령을 사용하여 '.MTS'레코드 (비디오)의 비디오 부분을 추출합니다.

ffmpeg -i 00402.MTS -s 1280x720 -r 25 -ss 0:00:05.38608 -vcodec libxvid -qscale:v 2 -acodec ac3 -ar 48000 -ab 256k -t 0:00:06.613917 m001_mono.avi

오디오 스트림은 스테레오이지만 올바른 채널은 잡음 만 녹음했습니다. 입력 정보는 다음과 같습니다.

Stream #0.0[0x1011]: Video: h264 (High), yuv420p, 1440x1080 [PAR 4:3 DAR 16:9], 50 fps, 50 tbr, 90k tbn, 50 tbc
Stream #0.1[0x1100]: Audio: ac3, 48000 Hz, stereo, s16, 256 kb/s

출력의 오디오 스트림을 모노로 유지하고 싶습니다 (원래 왼쪽 채널에서만). 이미 '-ac 1'옵션을 사용하여 테스트를했지만이 경우 두 채널이 병합되고 ~ 6dB의 게인이 손실됩니다.

올바른 채널을 버리고 모노 오디오 스트림으로 출력하려면 어떤 옵션을 사용해야합니까?

편집 : map_channel 옵션으로 ffmpeg 출력

/home/eric/buildsys/ffmpeg-2.0.1/ffmpeg -i 00402.MTS -s 1280x720 -r 25 -ss 0:00:05.38608    -vcodec libxvid -qscale:v 2 -acodec ac3 -ar 48000 -ab 256k -t 0:00:06.61391 -map_channel -1 -map_channel 0.1.0 m001_test.avi
ffmpeg version 2.0.1 Copyright (c) 2000-2013 the FFmpeg developers
 built on Sep 24 2013 05:31:18 with gcc 4.8 (Debian 4.8.1-10)
configuration: --extra-cflags=-I../static/include --extra-ldflags='-L../static/lib -static' --enable-gpl --enable-version3 --enable-static --disable-shared --disable-debug --enable-runtime-cpudetect --enable-libmp3lame --enable-libx264 --enable-libspeex --enable-libvorbis --enable-libvpx --enable-libfreetype --enable-libxvid --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-gray --enable-libopenjpeg --disable-ffserver
libavutil      52. 38.100 / 52. 38.100
libavcodec     55. 18.102 / 55. 18.102
libavformat    55. 12.100 / 55. 12.100
libavdevice    55.  3.100 / 55.  3.100
libavfilter     3. 79.101 /  3. 79.101
libswscale      2.  3.100 /  2.  3.100
libswresample   0. 17.102 /  0. 17.102
libpostproc    52.  3.100 / 52.  3.100
Input #0, mpegts, from '00402.MTS':
Duration: 00:01:18.25, start: 0.455556, bitrate: 12217 kb/s
Program 1 
Stream #0:0[0x1011]: Video: h264 (High) (HDMV / 0x564D4448), yuv420p, 1440x1080 [SAR 4:3 DAR 16:9], 25 fps, 50 tbr, 90k tbn, 50 tbc
Stream #0:1[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 256 kb/s
File 'm001_test.avi' already exists. Overwrite ? [y/N] y
-map_channel is forwarded to lavfi similarly to -af pan=0x3:c1=c0.
[pan @ 0x248a560] This syntax is deprecated. Use '|' to separate the list items.
[pan @ 0x248a560] Pure channel mapping detected: M 0
Output #0, avi, to 'm001_test.avi':
Metadata:
ISFT            : Lavf55.12.100
Stream #0:0: Video: mpeg4 (libxvid) (xvid / 0x64697678), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 25 tbn, 25 tbc
Stream #0:1: Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, stereo, fltp, 256 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (h264 -> libxvid)
Stream #0:1 -> #0:1 (ac3 -> ac3)
Press [q] to stop, [?] for help
frame=  166 fps= 23 q=2.0 Lsize=    4012kB time=00:00:06.64 bitrate=4950.3kbits/s    
video:3787kB audio:207kB subtitle:0 global headers:0kB muxing overhead 0.464949%

답변:


11

비디오 스트림을 다시 인코딩하지 않고도 비디오 파일을 직접 수정할 수 있습니다. 그러나 오디오 스트림을 다시 인코딩해야합니다.

왼쪽 채널에서 모노로 :

ffmpeg -i video.mp4 -map_channel 0.1.0 -c:v copy mono.mp4

왼쪽 채널에서 스테레오로 :

ffmpeg -i video.mp4 -map_channel 0.1.0 -map_channel 0.1.0 -c:v copy stereo.mp4

올바른 채널을 사용하려면 0.1.1대신에 쓰십시오 0.1.0.

ffmpeg 버전으로 작업 3.1.3.


일명 shadowplay 오른쪽 채널 손상 버그 해결하는 방법
Pyrolistical

언급 할 가치는 -c:a copy오디오 와 함께 사용할 때 단일 채널의 직접 사본을 원하더라도 수정되지 않는다는 것입니다.
termil0r

4

다음은 ffmpeg 버전 2.4.1-tessus에서 확인 된 작업 예입니다.

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

FFMPEG의 오디오 채널 페이지 에 대한 추가 정보 .


BTW는 스테레오로 돌아가는 추가 단계가 필요하지만 두 채널이 최대 볼륨을 유지하도록 (즉, 기본적으로 왼쪽 채널을 오른쪽 채널 위에 복사) 누구나 할 수 있습니다.ffmpeg -i inputfile.wav -map_channel 0.0.0 -map_channel 0.0.0 outputfile.wav
Kev

2

ffmpeg로 오디오 채널 조작

음소거 A를 채널

이 예제는 첫 번째 채널 (왼쪽 채널)을 음소거하지만 두 번째 채널은 그대로 유지합니다.

ffmpeg -i stereo.wav -map_channel -1 -map_channel 0.0.1 output.wav

귀하의 경우 올바른 채널을 음소거해야합니다. 권리?


인식 할 수없는 옵션 'map_channel'.
Eric

1
@Eric ffmpeg 버전이 너무 오래되었거나 실제로 FFmpeg가 아닌 Libav에서 온 것으로 추측합니다 (출력을 포함하지 않았기 때문에) . : 새로운 하나를 시도 ffmpeg.org/download.html
slhck

@ArcherGodson-동일한 ffmpeg coammnd를 수정하여 음소거 된 채널을 음소거 해제 할 수 있습니까
Prakash V Holkar

2

마지막 버전의 Ffmpeg (2.0.1)를 사용하여 문제를 해결했습니다. 다음 명령 줄이 작동합니다.

/home/eric/buildsys/ffmpeg-2.0.1/ffmpeg -i 00402.MTS -s 1280x720 -ss 0 : 00 : 05.38608 -vcodec libxvid -qscale : v 2 -acodec ac3 -ar 48000 -ab 256k -t 0 : 00 : 06.61391 -af 팬 = 1 : c0 = c0 m001_mono.avi

Btw,이 게시물 은 매우 유익했습니다!

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