Xuggler阅读某些FLV文件

时间:2012-12-13 11:31:47

标签: java audio flv aac xuggler

我正在尝试使用Xuggler库在Java中转码FLV文件,该库有两个流:
流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的{​​{1}}是正确的IStreamCoder,编解码器类型是CODEC_ID_AAC

现在我的问题是,为什么这些流标记为未知而不是正确的音频/视频?这段代码可以完美地用于大多数其他格式,例如mp4容器。我的总体目标是提取用于转码的音频流。

请告知您是否需要一个示例代码段来更好地回答这个问题,因为我必须先剪掉一些我要生产的东西。
  

<小时/> 编辑:我认为这不是一个Xuggler问题,因为我试图在转换时使用VLC和VLC崩溃转换有问题的FLV,而我尝试了一个已知的工作mp4文件转换为mp3并且它经历了很好的

< / p>

1 个答案:

答案 0 :(得分:0)

找到答案:
我使用以下方法打开文件,因为它阻塞了所有其他文件(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文件的简单条件。

相关问题