- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 JAVA 和 Xuggler - 以下代码组合了一个 MP3 音频文件和一个 MP4 电影文件,并输出了一个组合的 mp4 文件。
我希望输出视频的持续时间等于输入视频文件的持续时间
如果我将循环条件设置为:
while (containerVideo.readNextPacket(packetvideo) >= 0)
它提供 400 次迭代 - 使电影运行 15 秒。完全符合我的要求。
但由于某种原因,音频在 10 秒后被切断 - 使电影的最后 5 秒无声。
看起来视频 IStreamCoder 的单次迭代的持续时间与音频 IStreamCoder 的单次迭代的持续时间不同。
如何让声音充满电影的整个 15 秒?
String inputVideoFilePath = "in.mp4";
String inputAudioFilePath = "in.mp3";
String outputVideoFilePath = "out.mp4";
IMediaWriter mWriter = ToolFactory.makeWriter(outputVideoFilePath);
IContainer containerVideo = IContainer.make();
IContainer containerAudio = IContainer.make();
// check files are readable
if (containerVideo.open(inputVideoFilePath, IContainer.Type.READ, null) < 0)
throw new IllegalArgumentException("Cant find " + inputVideoFilePath);
if (containerAudio.open(inputAudioFilePath, IContainer.Type.READ, null) < 0)
throw new IllegalArgumentException("Cant find " + inputAudioFilePath);
// read video file and create stream
IStreamCoder coderVideo = containerVideo.getStream(0).getStreamCoder();
if (coderVideo.open(null, null) < 0)
throw new RuntimeException("Cant open video coder");
IPacket packetvideo = IPacket.make();
int width = coderVideo.getWidth();
int height = coderVideo.getHeight();
// read audio file and create stream
IStreamCoder coderAudio = containerAudio.getStream(0).getStreamCoder();
if (coderAudio.open(null, null) < 0)
throw new RuntimeException("Cant open audio coder");
IPacket packetaudio = IPacket.make();
mWriter.addAudioStream(1, 0, coderAudio.getChannels(), coderAudio.getSampleRate());
mWriter.addVideoStream(0, 0, width, height);
while (containerVideo.readNextPacket(packetvideo) >= 0) {
containerAudio.readNextPacket(packetaudio);
// video packet
IVideoPicture picture = IVideoPicture.make(coderVideo.getPixelType(), width, height);
coderVideo.decodeVideo(picture, packetvideo, 0);
if (picture.isComplete())
mWriter.encodeVideo(0, picture);
// audio packet
IAudioSamples samples = IAudioSamples.make(512, coderAudio.getChannels(), IAudioSamples.Format.FMT_S32);
coderAudio.decodeAudio(samples, packetaudio, 0);
if (samples.isComplete())
mWriter.encodeAudio(1, samples);
}
coderAudio.close();
coderVideo.close();
containerAudio.close();
containerVideo.close();
mWriter.close();
最佳答案
不错的代码。谢谢。要捕获剩余的音频,请在末尾添加一个循环以读取音频数据包,直到没有更多为止。
while (samples.isComplete() ) {
containerAudio.readNextPacket(packetaudio);
coderAudio.decodeAudio(samples, packetaudio, 0);
writer.encodeAudio(iAudioStream, samples);
Utility.console(String.format("%s %d", Utility.timeStamp(),
samples.getPts() ));
}
关于JAVA - Xuggler - 结合 MP3 音频文件和 MP4 电影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19812480/
我正在尝试使用 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假装回答这个问题,但事实并非如此。相反,它指示您从源代码构建项目(并且构建说明非常复杂)。那种打败了整个观点:) 让世界上的每个人都不必再构建另一个开源项目来确定它是否真正解决了他
我是一名优秀的程序员,十分优秀!