Xuggler читает определенные файлы FLV

Я пытаюсь перекодировать FLV-файл на Java с помощью библиотек Xuggler, которые имеют два потока:
Поток 0: видео, H264 avc1
Поток 1: аудио, AAC, mp4a

Теперь вызов getNumStreams() для входного контейнера возвращает 2 потока, что верно.
Моя проблема возникает из-за того, что оба потока имеют тип CODEC_TYPE_UNKNOWN, а не CODEC_TYPE_VIDEO/AUDIO.

Следовательно, мой код здесь:
stream.getStreamCoder().getCodecType().equals(ICodec.Type.CODEC_TYPE_AUDIO)
никогда не соответствует конкретному потоку.

Я попытался вручную назначить поток потоку 2, который проходит нормально, однако, когда я запрашиваю кодек из IStreamCoder, он равен нулю. CodecID того же IStreamCoder - правильный CODEC_ID_AAC, а тип кодека CODEC_TYPE_UNKNOWN, как я уже упоминал выше.

Теперь мой вопрос: почему эти потоки помечены как неизвестные, а не правильные аудио/видео? Этот фрагмент кода безупречно работает для большинства других форматов, таких как контейнеры mp4. Моя общая цель - извлечение аудиопотоков для перекодирования.

Пожалуйста, сообщите, если вам нужен пример сегмента кода, чтобы лучше ответить на этот вопрос, так как мне придется вырезать довольно много того, что у меня есть, чтобы что-то создать.


Редактировать: я думаю, что это не Xuggler проблема, поскольку я пытался преобразовать рассматриваемый FLV с помощью VLC, и VLC дает сбой при преобразовании, тогда как я пытался преобразовать известный рабочий файл mp4 в mp3, и все прошло нормально


person Antix    schedule 13.12.2012    source источник


Ответы (1)


Нашел ответ:
Я использовал следующий метод для открытия файлов, так как он блокировал все остальные файлы (mp4 и т. д.) и приводил к сбою программы.

if (input.open(file.getName(), IContainer.Type.READ, null, false, false) < 0)

Хотя это работает для всех других файлов, поиск информации о потоке FLV во всем файле не выполняется.
Я изменил это так:

if (input.open(file.getName(), IContainer.Type.READ, null) < 0)

И теперь работает корректно. Должен быть просто случай простого условия для обработки файлов flv с этого момента.

person Antix    schedule 13.12.2012