2016-02-11 67 views
1

有没有办法用ffmpeg的精确打破音频文件到一个特定的文件大小的小文件,或从文件中抽取样品的具体数目?如何获取特定文件大小的音频文件?

我正在使用语音到文本API,需要正好 160,000字节或80,000个16位采样的音频块。

我有一个视频流,并且我有一个FFMPEG命令从中提取音频:

ffmpeg -i "rtmp://MyFMSWorkspace/ingest/test/mp4:test_1000 live=1" -ar 16000 -f segment -segment_time 10 out%04d.wav 

所以现在我有具有16 kHz的采样率约10个第二音频块。有没有什么办法可以用ffmpeg将它分解成160kb,5秒的文件?

我尝试这样做:

ffmpeg -t 00:00:05.00 -i out0000.wav outCropped.wav 

但输出是这样的:

Input #0, wav, from 'out0000.wav': 
    Metadata: 
    encoder   : Lavf56.40.101 
    Duration: 00:00:10.00, bitrate: 256 kb/s 
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0]/0x0001), 16000 Hz, 1 channels, s16, 256 kb/s 
Output #0, wav, to 'outCropped.wav': 
    Metadata: 
    ISFT   : Lavf56.40.101 
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0]/0x0001), 16000 Hz, mono, s16, 256 kb/s 
    Metadata: 
     encoder   : Lavc56.60.100 pcm_s16le 
Stream mapping: 
    Stream #0:0 -> #0:0 (pcm_s16le (native) -> pcm_s16le (native)) 
Press [q] to stop, [?] for help 
size=  156kB time=00:00:05.00 bitrate= 256.1kbits/s 

但现在的大小是156KB

编辑:

我完成的命令是:

ffmpeg -i "url" -map 0:1 -af aresample=16000,asetnsamples=16000 -f segment -segment_time 5 -segment_format sw out%04d.sw 

回答

1

这输出看起来完全正确的。虽然说kB这ffmpeg的大小以KiB表示。 160000字节= 156.25 kB +一些标题数据。 ffmpeg显示隐藏小数部分的大小。如果你想有一个原始文件,没有头,输出.raw而不是.wav

+0

是啊,做输出.sw(原始类型)摆脱了头,我能拨一些其他的选择来获得正是我所需要的样本数量。 – Houseman