kênh trích xuất ffmpeg mà không cần chuyển đổi


0

Tôi đang sử dụng lệnh ffmpeg sau đây để chuyển đổi wav multitrack thành nhiều bản nhạc đơn âm:

ffmpeg -i input.wav \
  -map_channel 0.0.0 a.wav \
  -map_channel 0.0.1 b.wav \
  -map_channel 0.0.2 c.wav \
  -map_channel 0.0.3 d.wav \

Điều này hoạt động tốt nhưng nó chuyển đổi các kênh thành PCM 16 bit:

...
Stream #0:0 -> #0:0 (pcm_s24le (native) -> pcm_s16le (native))
Stream #0:0 -> #1:0 (pcm_s24le (native) -> pcm_s16le (native))
Stream #0:0 -> #2:0 (pcm_s24le (native) -> pcm_s16le (native))
Stream #0:0 -> #3:0 (pcm_s24le (native) -> pcm_s16le (native))
...

Tôi cũng đã thử "-sample_fmt pcm_s24le" hoặc "-sample_fmt s32" nhưng cả hai tham số đều không được nhận ra.

Làm cách nào tôi có thể trích xuất các kênh của tệp multiwav mà không thay đổi độ sâu bit?

Câu trả lời:


2

Bộ mã hóa pcm_s16le đang được sử dụng cho .wavđầu ra của bạn . Bộ mã hóa này chỉ hỗ trợ định dạng mẫu s16 (xem ffmpeg -h encoder=pcm_s16leffmpeg -sample_fmts).

Bạn có thể chọn bộ mã hóa pcm_s24le:

ffmpeg -i input.wav \
  -map_channel 0.0.0 -c:a pcm_s24le a.wav \
  -map_channel 0.0.1 -c:a pcm_s24le b.wav \
  -map_channel 0.0.2 -c:a pcm_s24le c.wav \
  -map_channel 0.0.3 -c:a pcm_s24le d.wav

Cảm ơn rất nhiều llogan, điều này hoạt động hoàn hảo. Tôi không biết rằng tôi có thể sử dụng -c: một tham số cho mỗi map_channel ...
rimshot
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.