我试图使用Xuggler库,其中有两个数据流进行转码的FLV文件在Java中:
流0:视频,H264 AVC1
流1:音频,AAC,MP4AXuggler阅读某些FLV文件
现在,输入容器上的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的问题,因为我试图在转换时使用VLC和VLC崩溃来转换问题FLV,而我尝试了一个已知的工作mp4文件转换为MP3,并通过罚款