«Неподдерживаемый posh-gran34le гранулы -123480» при попытке конвертировать из .opus, извлеченного из видео, в .wav с помощью ffmpeg - PullRequest
0 голосов
/ 10 марта 2020

Я должен конвертировать кучу файлов .opus в .wav, используя ffmpeg. При вызове

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

я получаю

Unsupported huge granule pos -123480

Это не зависит от указанных параметров c ffmpeg. Пример файла .opus можно найти здесь . Файл .opus является частью звукового потока, извлеченного из видео YouTube в формате контейнера .mkv с .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; }

Его можно найти в строках 121- 124 из этого файла. granule определяется как uint_64t здесь .

Итак, я до сих пор считал, что, вероятно, uint, в конце концов, не должен быть отрицательным. Я не уверен, произошла ли ошибка во время извлечения аудио, но остается незамеченной до тех пор, пока не будет предпринята попытка конвертировать указанное аудио, или ошибка присутствует в фактическом преобразовании. Я также не понимаю, что означает «гранула» в этом контексте, но, вероятно, мне не нужно.

1 Ответ

1 голос
/ 27 апреля 2020

Это файлы Ogg Opus или аудиопакеты Opus инкапсулированы в другом контейнере? Попробуйте использовать MKVToolNix для извлечения аудиопотока.

Предоставленный вами URL-адрес * .opus требует аутентификации, и я не могу получить к нему доступ.

...