java - Xuggler读取某些FLV文件

标签 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查询编解码器时,它为null。如上所述,相同CodecIDIStreamCoder是正确的CODEC_ID_AAC,编解码器类型是CODEC_TYPE_UNKNOWN

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

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

编辑:我认为这不是一个Xuggler问题,因为我尝试使用VLC转换有问题的FLV,并且转换时VLC崩溃,而我尝试了一个已知的有效mp4文件转换为mp3,并且一切顺利

最佳答案

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

关于java - Xuggler读取某些FLV文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13858921/

相关文章:

actionscript-3 - 如何无缝循环FLV

android - 如何从YouTube视频获取flv网址

java - 有没有办法使用 Derby DB 创建 Java 应用程序安装程序

java - 将字符串数组转换为 java.util.List

java - 使用 java.sound.sampled.Clip 播放声音文件的正确方法是什么

python - 如何设置循环 pygame.mixer 播放列表在后台播放?

Java ehCache,如何替换成员

java - 两个 JFrames 同时运行

python - 从 python3 中的 .wav 文件中删除文件头

ffmpeg - 如何使用 FFMPEG 将 MP4 视频文件转换为 FLV 格式