ffmpeg - "Unsupported huge granule pos -123480"尝试使用 ffmpeg 从视频中提取的 .opus 转换为 .wav 时

标签 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 选项。可以找到一个示例 .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/

相关文章:

ffmpeg - 在 FFmpeg 中,-filter_complex 可以做 -filter 可以做的所有事情吗? (即是否直接替换)

android - FFMPEG 中需要哪些参数才能将 (HLS) 流式传输到现代 Android 设备?

android - 用于在 android 中合并 mp4 视频的 FFMPEG 命令问题

wireshark - 使用 Wireshark 解码 Opus-48

ffmpeg - 在 avcodec_decode_video2 之后转储 yuv 值的正确方法

cocoa - 从 libswscale 中获取 PIX_FMT_YUYV422

android - ffmpeg 在 c++ 中将 AV_SAMPLE_FMT_S16 转换为 AV_SAMPLE_FMT_FLTP

audio - vlc - 不播放由 opus 库中的演示创建的 opus 文件

c++ - Portaudio + 作品 : Horrible sound quality

go - 如何在 Golang 中使用字节保存 opus 文件?