- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的脚本从一些 .jpg
生成视频图像效果很好。此外,它还从现有的.flac
中添加了一个音频流。文件。该代码在处理小型音频文件时效果很好。但是使用我在 1GB
附近的实际文件我收到以下警告/异常:
22:00:03.366 [main] WARN com.xuggle.xuggler - error: not enough memory in internal frame buffer (../../../../../../../csrc/com/xuggle/xuggler/StreamCoder.cpp:1768)
Exception in thread "main" java.lang.RuntimeException: failed to encode audio
at com.xuggle.mediatool.MediaWriter.encodeAudio(MediaWriter.java:855)
at diaporama.Renderer.renderVideo(Renderer.java:129)
at diaporama.Renderer.<init>(Renderer.java:32)
at Run.main(Run.java:24)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
private void renderVideo() {
final IMediaWriter writer = ToolFactory.makeWriter(this.outputFileName);
// video stream
writer.addVideoStream(0, 0, this.videoCodec, this.width, this.height);
// audio stream
IContainer containerAudio = IContainer.make();
containerAudio.open(this.audioFile.getPath(), IContainer.Type.READ, null);
IStreamCoder coderAudio = containerAudio.getStream(0).getStreamCoder();
if (coderAudio.open(null, null) < 0)
throw new RuntimeException("Cannot open audio coder");
writer.addAudioStream(1, 0, this.audioCodec, coderAudio.getChannels(), coderAudio.getSampleRate());
// video rendering
// ... video rendering takes place here ...
// audio rendering
System.out.println("Adding audio file: " + this.audioFile.getPath() + " to stream");
// read audio file and create stream
IPacket packetaudio = IPacket.make();
IAudioSamples samples;
while (containerAudio.readNextPacket(packetaudio) >= 0) {
/*
* We allocate a set of samples with the same number of channels as the
* coder tells us is in this buffer.
*
* We also pass in a buffer size (1024 in our example), although Xuggler
* will probably allocate more space than just the 1024 (it's not important why).
*/
samples = IAudioSamples.make(1024, coderAudio.getChannels());
/*
* A packet can actually contain multiple sets of samples (or frames of samples
* in audio-decoding speak). So, we may need to call decode audio multiple
* times at different offsets in the packet's data. We capture that here.
*/
int offset = 0;
/*
* Keep going until we've processed all data
*/
while (offset < packetaudio.getSize()) {
int bytesDecoded = coderAudio.decodeAudio(samples, packetaudio, offset);
if (bytesDecoded < 0)
throw new RuntimeException("got error decoding audio in: " + this.audioFile);
offset += bytesDecoded;
/*
* Some decoder will consume data in a packet, but will not be able to construct
* a full set of samples yet. Therefore you should always check if you
* got a complete set of samples from the decoder
*/
if (samples.isComplete()) {
writer.encodeAudio(1, samples);
}
}
}
coderAudio.close();
containerAudio.close();
writer.close();
}
最佳答案
你给你的JVM多少内存?可能你应该增加最大允许的堆大小,-Xmx4g
(对于 4Gb 堆)或类似的东西。这里有很多选择。
由于 Xuggle 似乎是一个原生库,所以原生堆大小也可以很小。这很难解决,但您至少可以确保您运行的是 64 位版本的 JVM。
如果您使用某些 IDE,这些选项可以设置为运行配置。
关于java - 使用 Xuggler 解码大型音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30311995/
我正在尝试使用 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假装回答这个问题,但事实并非如此。相反,它指示您从源代码构建项目(并且构建说明非常复杂)。那种打败了整个观点:) 让世界上的每个人都不必再构建另一个开源项目来确定它是否真正解决了他
我是一名优秀的程序员,十分优秀!