Bagaimana cara mengubah kedalaman bit di FFmpeg?


14

Saya perlu FFmpeg untuk mengambil umpan audio dan memasukkannya kembali ke FLAC 16-Bit.

Bagaimana cara memaksa output 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%

Jawaban:


25

Secara default, FFmpeg FLAC encoder mengambil kedalaman bit dari aslinya. Kedalaman bit dapat diubah dengan sample_fmtopsi, misalnya

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

Perhatikan bahwa tidak semua format didukung oleh setiap enkoder.

Untuk daftar semua format sampel yang didukung, jalankan:

ffmpeg -sample_fmts

Lihat bab Opsi Audio di dokumentasi baris perintah FFmpeg.


Ini menghasilkan output dengan kedalaman 4 bit untuk saya, bahkan ketika saya tentukan s16(kedalaman bit 16). Perintah penuh:ffmpeg -i newwave.wav -c:a adpcm_ima_qt -sample_fmt s16 -ar 22500 newwave.aiff
xjcl

@ xjcl Codec yang Anda gunakan hanya mendukung 4 bit.
slhck

Apa perbedaan antara eg s16dans16p
theonlygusti

Ini tidak bekerja untuk saya. Saya mendapatkan "Format sampel yang ditentukan s16 tidak valid atau tidak didukung"
Arete

@Accre Pastikan Anda menjalankan ffmpeg versi terbaru, dan bahwa Anda memang menggunakan flacencoder dengan file output FLAC. Format sampel harus kompatibel dengan pembuat enkode yang dipilih.
slhck
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.