我必须使用 ffmpeg 将一堆 .opus 文件转换为 .wav。打电话时ffmpeg -i input_file.opus -acodec pcm_s16le -ac 1 -ar 16000 output_file.wav
我明白了Unsupported huge granule pos -123480
这不依赖于特定的 ffmpeg 选项。可以找到一个示例 .opus 文件 here . .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 可能不应该是负数。我不确定在提取音频期间是否发生错误,但在尝试转换所述音频或错误是否在实际转换中之前一直未被注意到。我也不明白“颗粒”在这种情况下应该是什么意思,但可能我不需要。
最佳答案
这些 Ogg Opus 文件或 Opus 音频数据包是否封装在另一个容器中?尝试使用 MKVToolNix提取音频流。
您提供的 *.opus URL 需要身份验证,我无法访问。
关于ffmpeg - "Unsupported huge granule pos -123480"尝试使用 ffmpeg 从视频中提取的 .opus 转换为 .wav 时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60621646/