我正在使用以下命令将 FLV 文件转换为音频文件以输入 julian,这是一个语音转文本程序。
cat ./jon2.flv | ffmpeg -i - -vn -acodec pcm_s16le -ar 16000 -ac 1 -f wav - | cat - > jon2.wav
cat 用于调试目的,因为最终用途将是一个正在运行的程序,它将 FLV 通过管道传输到 ffmpeg 的标准输入,标准输出传输到 julian。
生成的波形文件由"file"标识为:
jon3.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 16000 Hz
VLC(基于 ffmpeg)播放文件,但没有其他工具可以打开/查看数据。它们显示空 wav 文件或不会打开/播放。例如来自 CS4 的 Sound Booth。
有没有其他人有类似的问题? Julian 需要 16000 Hz 的 wav 文件 16 位单声道。朱利安似乎确实阅读了该文件,但似乎并未浏览整个文件(可能无关)。
谢谢,
-rr
最佳答案
尝试让 ffmpeg 直接对输入/输出文件进行操作,而不是通过管道将数据传入和传出 ffmpeg:ffmpeg -i INPUT_FILE.FLV -vn -acodec pcm_s16le -ar 16000 -ac 1 -f wav OUTPUT_FILE.WAV
问题可能是因为您正在为 ffmpeg 提供一个流,并要求它写入一个流,它要么不知道输入流的长度,或者更可能的是,它无法返回并重写头部中的长度数据输出文件。
关于ffmpeg 0.5 flv 到 wav 的转换会创建其他程序无法打开的 wav 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2581229/