尝试使用ffmpeg

时间:2020-03-10 16:12:53

标签: ffmpeg opus

我必须使用ffmpeg将一堆.opus文件转换为.wav。致电

ffmpeg -i input_file.opus -acodec pcm_s16le -ac 1 -ar 16000 output_file.wav

我明白了

Unsupported huge granule pos -123480

这不取决于特定的ffmpeg选项。可以在here中找到示例.opus文件。 .opus文件是从.mkv容器格式的youtube视频中提取的声音流的一部分,其中.opus是具有最高可用质量的音频流。相应的ffmpeg调用为

ffmpeg -ss 00:15:00.00 -i input_file.mkv -to 00:15:00.00 -vn -acodec copy output_file.opus

引发原始异常的行是

if (os->granule > (1LL << 62)) {av_log(avf, AV_LOG_ERROR, "Unsupported huge granule pos %"PRId64 "\n", os->granule); return AVERROR_INVALIDDATA; }

可以在this文件的第121-124行中找到。 granule被定义为uint_64t here

所以,到目前为止,我一直认为uint可能根本不应该是负面的。我不确定在提取音频过程中是否发生了错误,但是直到尝试转换所述音频之前,还是在实际转换中发现了错误,这种错误仍然没有被注意到。在这种情况下,我也不明白“颗粒”的含义,但也许我不需要。

1 个答案:

答案 0 :(得分:0)

这些Ogg Opus文件还是Opus音频数据包封装在另一个容器中?尝试使用MKVToolNix提取音频流。

您提供的* .opus URL需要验证,我无法访问。