首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解密Xuggle/ffmpeg错误(新手)

解密Xuggle/ffmpeg错误(新手)
EN

Stack Overflow用户
提问于 2010-08-04 05:31:19
回答 2查看 3.6K关注 0票数 4

我最近开始与Xuggle合作,将各种格式的视频文件转换成相应的FLV(通过jwplayer在我们的网站上播放)。我使用的代码非常简单;基本上就是他们在基本视频转换教程中所展示的内容:

代码语言:javascript
复制
IMediaReader reader = ToolFactory.makeReader(file.getPath());
reader.addListener(ToolFactory.makeWriter(tempFileName, reader));

while (reader.readPacket() == null)
;

这对我尝试过的视频中大约50%的视频效果很好。然而,对于一些视频(我遇到的所有.MP4s,以及一些.MOVs),我得到以下错误

代码语言:javascript
复制
Caused by: java.lang.RuntimeException: Error Operation not permitted, failed to write header to container com.xuggle.xuggler.IContainer@-635072136[url:/tmp/1280786368521.flv;type:WRITE;format:com.xuggle.xuggler.IContainerFormat@-631842520[oname:flv;olongname:FLV format;omimetype:video/x-flv;oextensions:flv;];] while establishing stream com.xuggle.xuggler.IStream@-615272544[index:1;id:2;streamcoder:com.xuggle.xuggler.IStreamCoder@-677475184[codec=com.xuggle.xuggler.ICodec@-635131032[type=CODEC_TYPE_AUDIO;id=CODEC_ID_MP3;name=libmp3lame;];time base=1/48000;frame rate=0/0;sample rate=48000;channels=2;];framerate:0/0;timebase:1/90000;direction:OUTBOUND;]
        at com.xuggle.mediatool.MediaWriter.getStream(MediaWriter.java:1065)
        at com.xuggle.mediatool.MediaWriter.encodeAudio(MediaWriter.java:837)
        at com.xuggle.mediatool.MediaWriter.onAudioSamples(MediaWriter.java:1448)
        at com.xuggle.mediatool.AMediaToolMixin.onAudioSamples(AMediaToolMixin.java:89)
        at com.xuggle.mediatool.MediaReader.dispatchAudioSamples(MediaReader.java:628)
        at com.xuggle.mediatool.MediaReader.decodeAudio(MediaReader.java:555)
        at com.xuggle.mediatool.MediaReader.readPacket(MediaReader.java:469)
        ... 10 more

我很难确定这个错误的根本原因是不是与Xuggle/ffmpeg/lame/etc.安装有关,还是我的代码有问题。

我认为第一步是解密错误日志,并使用该信息尝试使用本地ffmpeg调用转换视频。如果这是可行的,我假设有理由相信这些组件是正确安装的?

因此,对于像这样的日志消息:

代码语言:javascript
复制
Error Operation not permitted, failed to write header to container com.xuggle.xuggler.IContainer@-635072136
[url:/tmp/1280786368521.flv;type:WRITE;format:com.xuggle.xuggler.IContainerFormat@-631842520[oname:flv;olongname:FLV format;omimetype:video/x-flv;oextensions:flv;];] 

while establishing stream com.xuggle.xuggler.IStream@-615272544
[index:1;id:2;streamcoder:com.xuggle.xuggler.IStreamCoder@-677475184[codec=com.xuggle.xuggler.ICodec@-635131032[type=CODEC_TYPE_AUDIO;id=CODEC_ID_MP3;name=libmp3lame;];time base=1/48000;frame rate=0/0;sample rate=48000;channels=2;];framerate:0/0;timebase:1/90000;direction:OUTBOUND;]

我如何将其转换为ffmpeg命令?

有没有其他的调试小贴士给这个徐谷新手?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-05 05:57:31

问题解决了。这是因为FLV只支持采样率为44.1、22.05和11.025 kHz的音频流。在侦听onAudioSamples()的自定义MediaTool侦听器中使用了徐谷的IAudioResampler类,以将音频重新采样为支持的速率。

票数 5
EN

Stack Overflow用户

发布于 2011-05-18 20:55:01

我最近也遇到了同样的问题。花了几天的时间直到我找到答案here

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3400900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档