- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我只是尝试使用 Xuggler 将 .mov 文件转换为 .webm,这应该可以工作,因为 FFMPEG 支持 .webm 文件。
这是我的代码:
IMediaReader reader = ToolFactory.makeReader("/home/user/vids/2.mov");
reader.addListener(ToolFactory.makeWriter("/home/user/vids/2.webm", reader));
while (reader.readPacket() == null);
System.out.println( "Finished" );
运行时,我得到这个错误:
[main] ERROR org.ffmpeg - [libvorbis @ 0x8d7fafe0] Specified sample_fmt is not supported.
[main] WARN com.xuggle.xuggler - Error: could not open codec (../../../../../../../csrc/com/xuggle/xuggler/StreamCoder.cpp:831)
Exception in thread "main" java.lang.RuntimeException: could not open stream com.xuggle.xuggler.IStream@-1921013728[index:1;id:0;streamcoder:com.xuggle.xuggler.IStreamCoder@-1921010088[codec=com.xuggle.xuggler.ICodec@-1921010232[type=CODEC_TYPE_AUDIO;id=CODEC_ID_VORBIS;name=libvorbis;];time base=1/44100;frame rate=0/0;sample rate=44100;channels=1;];framerate:0/0;timebase:1/90000;direction:OUTBOUND;]: Operation not permitted
at com.xuggle.mediatool.MediaWriter.openStream(MediaWriter.java:1192)
at com.xuggle.mediatool.MediaWriter.getStream(MediaWriter.java:1052)
at com.xuggle.mediatool.MediaWriter.encodeAudio(MediaWriter.java:830)
at com.xuggle.mediatool.MediaWriter.onAudioSamples(MediaWriter.java:1441)
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)
at com.mycompany.xugglertest.App.main(App.java:13)
Java Result: 1
有什么想法吗?
最佳答案
Xuggler 发生了一件奇怪的事情,它并不总是允许您设置 IAudioSamples
的采样率。您需要使用 IAudioResampler
。
我花了一段时间才弄明白这一点。 This post by Marty帮助很大,尽管他的代码现在已经过时了。
这里是你如何修复它。
我在这里假设音频输入已正确设置,生成一个名为 audioCoder
的 IStreamCoder
。
完成后,您可能会启动一个 IMediaWriter
并像这样添加一个音频流:
final IMediaWriter oggWriter = ToolFactory.makeWriter(oggOutputFile);
// Using stream 1 'cause there is also a video stream.
// For an audio only file you should use stream 0.
oggWriter.addAudioStream(1, 1, ICodec.ID.CODEC_ID_VORBIS,
audioCoder.getChannels(), audioCoder.getSampleRate());
现在创建一个 IAudioResampler
:
IAudioResampler oggResampler = IAudioResampler.make(audioCoder.getChannels(),
audioCoder.getChannels(),
audioCoder.getSampleRate(),
audioCoder.getSampleRate(),
IAudioSamples.Format.FMT_FLT,
audioCoder.getSampleFormat());
并告诉您的 IMediaWriter
更新到它的示例格式:
// The stream 1 here is consistent with the stream we added earlier.
oggWriter.getContainer().getStream(1).getStreamCoder().
setSampleFormat(IAudioSamples.Format.FMT_FLT);
您目前可能正在启动一个 IAudioSamples
并用音频数据填充它,如下所示:
IAudioSamples audioSample = IAudioSamples.make(512, audioCoder.getChannels(),
audioCoder.getSampleFormat());
int bytesDecoded = audioCoder.decodeAudio(audioSample, packet, offset);
现在为我们的重采样数据启动一个IAudioSamples:
IAudioSamples vorbisSample = IAudioSamples.make(512, audioCoder.getChannels(),
IAudioSamples.Format.FMT_FLT);
最后对音频数据进行重采样并写入结果:
oggResampler.resample(vorbisSample, audioSample, 0);
oggWriter.encodeAudio(1, vorbisSample);
让您的输出文件正常播放的提示:
关于java - Xuggler 不转换 .webm 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16291843/
我正在尝试使用 xuggler 从视频文件(.avi、*.mp4 等)制作音频文件(*.mp3、.wav 等),这是我的代码 Code: IMediaReader reader = ToolFacto
香港专业教育学院试图将视频转换为一个android设备的.mp3文件。 因此,经过长时间的搜索和搜索(不知道其分别的拼写是否如此),我找到了Xuggler。 它是最好的解决方案,因为我自己不能移植ff
我在我的应用程序中使用了 xuggle-xuggler5.4 来添加视频和音频播放功能,我已经深入谷歌并找到以下片段: long duration = container.getDuration();
我在我的 tomcat 环境中成功引入了 xuggle 并且它运行良好。然后发生了一些事情,从那一刻起,每当我的缩略图生成器被调用时(是使用 xuggle 最多的类)我得到了*java.lang.Un
我没有找到适用于 WINDOWS 或 LINUX 平台的预编译二进制文件,我正在尝试构建从 github 克隆的 Xuggler 代码库。我正在按照链接中给出的步骤操作:http://www.xugg
我有一份工作,我必须连续截屏并从桌面捕获声音,然后将它们发布为实时视频流。我使用 Wowza Media Server 3.0.3 进行流媒体发布。我还使用 Xuggler 生成图像帧并将它们与声音缓
我通过编码 BufferedImages 创建视频文件。如何将音频从 mp3 文件添加到此视频? IMediaWriter movie = ToolFactory.makeWriter("somefi
我正在致力于创建我的第一个 Xuggler 媒体应用程序。我通过观看他们关于如何创建第一个媒体应用程序的视频进行编码。 代码 package demo; import com.xuggle.xuggl
我想使用 Xuggler 将没有音频的视频文件 (flv) 与音频文件 (mp3) 合并。目前,我已经拍摄了两个流,并将这些流的视频和音频部分分别组合起来,就像画中画一样。现在我想将音频和视频文件相互
我使用 xuggler 但不明白。我有 ArrayList,我想用这些图像、视频制作。但是当我编译这段代码时,视频图像的前 5 秒没有改变,视频的最后 5 秒根本没有改变。怎么解决。 public c
我正在尝试使用以下教程制作一个简单的媒体播放器: http://www.youtube.com/watch?v=9aJvPPzhyik 首先,我将解释一下我到目前为止所做的事情,我在没有使用 Apac
我正在使用 Java 中的 Xuggler 库将视频转换为音频。程序中没有出现错误或异常,但生成的音频文件为 0 Kb。有人可以解决这个问题吗? 环境:Eclipse Helios,操作系统:Wind
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
我有一个 mp4 视频,我必须使用 java xuggler 从视频中提取特定帧的缩略图。 我怎样才能做到这一点? 最佳答案 https://github.com/artclarke/xuggle-x
我现在下载了 Xuggler 并试用了它。有些例子有效,有些则无效。演示文件中没有包含服务器和客户端的视频直播示例。有没有人已经建立了 Xuggler 视频直播并可以告诉我如何做,甚至发布服务器和客户
在我的 JAVA 应用程序中,我将 Xuggler 用于 ScreenCapture 和其他功能。现在它是一个 Maven 项目,所以我将 Xuggler 作为 Pom.xml 中的依赖项,如 Lin
要使用 Xuggler,您需要 xuggle-xuggler-5.4.jar。据做这个的人说,大多数用户只需要上面提到的JAR文件。然而,这就是他们关于使用 Xuggler 没有 Maven 或 Iv
我们目前正忙于一个项目,在该项目中,我们试图在一个窗口中播放来自 Java 实时流的视频文件。我们已经设法使用 InputStreamReader 通过 Socket 对象捕获流。 下一步是使用现有库
我正在尝试安装 Xuggler。为了安装它们,我应该先下载它们。于是,我去了他们的下载页面。http://www.xuggle.com/downloads 没有下载 .jar 文件的下载链接。但是一些
是的,我知道 FAQ假装回答这个问题,但事实并非如此。相反,它指示您从源代码构建项目(并且构建说明非常复杂)。那种打败了整个观点:) 让世界上的每个人都不必再构建另一个开源项目来确定它是否真正解决了他
我是一名优秀的程序员,十分优秀!