我必须使用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可能根本不应该是负面的。我不确定在提取音频过程中是否发生了错误,但是直到尝试转换所述音频之前,还是在实际转换中发现了错误,这种错误仍然没有被注意到。在这种情况下,我也不明白“颗粒”的含义,但也许我不需要。
答案 0 :(得分:0)
这些Ogg Opus文件还是Opus音频数据包封装在另一个容器中?尝试使用MKVToolNix提取音频流。
您提供的* .opus URL需要验证,我无法访问。