Ffmpeg Audio Stereo sang Mono chỉ sử dụng kênh trái


12

Tôi sử dụng lệnh sau để trích xuất các phần video của bản ghi '.MTS' (video).

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

Luồng âm thanh là âm thanh nổi nhưng kênh bên phải chỉ ghi lại tiếng ồn. Dưới đây là thông tin đầu vào:

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

Tôi muốn luồng âm thanh của đầu ra là đơn âm (chỉ với kênh bên trái ban đầu). Tôi đã thực hiện các thử nghiệm bằng tùy chọn '-ac 1', nhưng trong trường hợp này, hai kênh được hợp nhất và tôi mất ~ 6dB mức tăng.

Tôi nên sử dụng tùy chọn nào để loại bỏ kênh phải và đầu ra với luồng âm thanh đơn âm?

EDIT: đầu ra ffmpeg với tùy chọn map_channel

/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%

Câu trả lời:


11

Bạn có thể sửa đổi tệp video trực tiếp mà không phải mã hóa lại luồng video. Tuy nhiên, luồng âm thanh sẽ phải được mã hóa lại.

Kênh trái sang đơn âm:

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

Kênh trái sang âm thanh nổi:

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

Nếu bạn muốn sử dụng đúng kênh, hãy viết 0.1.1thay vì 0.1.0.

Làm việc với phiên bản ffmpeg 3.1.3.


aka làm thế nào để sửa chữa shadowplay cầu môn bên mình tham nhũng lỗi
Pyrolistical

Đáng nói là khi sử dụng với -c:a copyâm thanh sẽ không được sửa đổi mặc dù bạn muốn có bản sao trực tiếp của một kênh.
termil0r

4

Sau đây là một ví dụ hoạt động được xác nhận với phiên bản ffmpeg 2.4.1-tessus:

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

Thông tin thêm về Trang Kênh Âm thanh của FFMPEG .


BTW cho bất kỳ ai cần thêm bước quay lại âm thanh nổi nhưng có cả hai kênh vẫn ở mức âm lượng đầy đủ (nghĩa là về cơ bản sao chép kênh bên trái vượt qua kênh bên phải), bạn có thể làmffmpeg -i inputfile.wav -map_channel 0.0.0 -map_channel 0.0.0 outputfile.wav
Kev

2

Thao tác các kênh âm thanh với ffmpeg

Chương Tắt tiếng một kênh

Ví dụ này sẽ tắt tiếng kênh đầu tiên (kênh bên trái) nhưng vẫn giữ kênh thứ hai như sau:

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

trong trường hợp của bạn cần phải tắt tiếng kênh bên phải. đúng?


Tùy chọn không được nhận dạng 'map_channel'.
Eric

1
@Eric Tôi đoán (vì bạn chưa bao gồm đầu ra) rằng phiên bản ffmpeg của bạn quá cũ hoặc thực sự là từ Libav chứ không phải FFmpeg . Hãy thử với một cái mới hơn: ffmpeg.org/doad.html
slhck

@ArcherGodson - Chúng tôi có thể Unmute kênh bị tắt tiếng bằng cách sửa đổi coammnd ffmpeg tương tự
Prakash V Holkar

2

Tôi đã giải quyết vấn đề bằng cách sử dụng phiên bản cuối cùng của Ffmpeg (2.0.1). Dòng lệnh sau đây làm cho công việc:

/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 00: 06.61391 -af pan = 1: c0 = c0 m001_mono.avi

Btw, bài này rất hướng dẫn!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.