Я пытаюсь перекодировать 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, и все прошло нормально