Làm cách nào để thay đổi độ sâu bit trong FFmpeg?


14

Tôi cần FFmpeg để lấy nguồn cấp âm thanh và mã hóa lại thành FLAC 16 bit.

Làm cách nào để buộc đầu ra FLAC 16 bit?

./ffmpeg -i http://7359.live.streamtheworld.com:80/CONTINENTALAAC_SC -vn -ac 1 -ar 16000 -acodec flac -map 0 -f segment -segment_list /flac/out.list -segment_time 00:00:12.00 /flac/out%03d.flac
ffmpeg version N-49622-g127ff88 Copyright (c) 2000-2013 the FFmpeg developers
  built on Feb  6 2013 05:11:38 with gcc 4.6 (Debian 4.6.3-1)
  configuration: --prefix=/root/ffmpeg-static/32bit --arch=x86_32 --extra-cflags='-m32 -I/root/ffmpeg-static/32bit/include -static' --extra-ldflags='-m32 -L/root/ffmpeg-static/32bit/lib -static' --extra-libs='-lxml2 -lexpat -lfreetype' --enable-static --disable-shared --disable-ffserver --disable-doc --enable-bzlib --enable-zlib --enable-postproc --enable-runtime-cpudetect --enable-libx264 --enable-gpl --enable-libtheora --enable-libvorbis --enable-libmp3lame --enable-gray --enable-libass --enable-libfreetype --enable-libopenjpeg --enable-libspeex --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-version3 --enable-libvpx
  libavutil      52. 17.101 / 52. 17.101
  libavcodec     54. 91.100 / 54. 91.100
  libavformat    54. 61.104 / 54. 61.104
  libavdevice    54.  3.103 / 54.  3.103
  libavfilter     3. 35.101 /  3. 35.101
  libswscale      2.  2.100 /  2.  2.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  2.100 / 52.  2.100
[aac @ 0xa163680] max_analyze_duration 5000000 reached at 5015510 microseconds
[aac @ 0xa163680] Estimating duration from bitrate, this may be inaccurate
Input #0, aac, from 'http://7359.live.streamtheworld.com:80/CONTINENTALAAC_SC':
  Duration: 150:52:44.61, bitrate: 29 kb/s
    Stream #0:0: Audio: aac, 44100 Hz, stereo, fltp, 29 kb/s
[flac @ 0xa16ee40] encoding as 24 bits-per-sample
Output #0, segment, to '/flac/out%03d.flac':
  Metadata:
    encoder         : Lavf54.61.104
    Stream #0:0: Audio: flac, 16000 Hz, mono, s32, 128 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (aac -> flac)
Press [q] to stop, [?] for help
size=N/A time=00:00:19.22 bitrate=N/A    
video:0kB audio:647kB subtitle:0 global headers:0kB muxing overhead -100.003322%

Câu trả lời:


25

Theo mặc định, bộ mã hóa FFmpeg FLAC lấy độ sâu bit của bản gốc. Độ sâu bit có thể được thay đổi với sample_fmttùy chọn, ví dụ:

ffmpeg -i … -c:a flac -sample_fmt s16 output.flac

Lưu ý rằng không phải tất cả các định dạng đều được hỗ trợ bởi mọi bộ mã hóa.

Để biết danh sách tất cả các định dạng mẫu được hỗ trợ, hãy chạy:

ffmpeg -sample_fmts

Xem chương Tùy chọn âm thanh trong tài liệu dòng lệnh FFmpeg.


Điều này tạo ra đầu ra với độ sâu bit là 4 đối với tôi, ngay cả khi tôi chỉ định s16(độ sâu bit 16). Lệnh đầy đủ:ffmpeg -i newwave.wav -c:a adpcm_ima_qt -sample_fmt s16 -ar 22500 newwave.aiff
xjcl

@xjcl Bộ giải mã bạn đang sử dụng chỉ hỗ trợ 4 bit.
slhck

Sự khác biệt giữa ví dụ s16s16p
theonlygusti

Điều này không làm việc cho tôi. Tôi nhận được "Định dạng mẫu được chỉ định s16 không hợp lệ hoặc không được hỗ trợ"
Arete

@Aittle Hãy chắc chắn rằng bạn đang chạy một phiên bản ffmpeg gần đây và bạn thực sự đang sử dụng flacbộ mã hóa với tệp đầu ra FLAC. Định dạng mẫu phải tương thích với bộ mã hóa đã chọn.
slhck
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.