java - xuggle并发转码

标签 java multithreading video concurrency xuggle

我是 xuggle primer,我想将视频转码为各种格式/质量。作为新手,我想使用 Xuggle MediaTool。因为我需要高效地完成它,所以我想在一个单独的线程中处理每个目标格式。这种情况下正确的并发模式是什么?

假设我有 file.avi,我想将它转码为 .flv.mov。我很好奇 xuggle 是否在以下情况下为每个 Writer 启动线程:

IMediaReader reader = ToolFactory.makeReader("file.avi");
reader.addListener(ToolFactory.makeWriter("file.flv", reader));
reader.addListener(ToolFactory.makeWriter("file.mov", reader));
while (reader.readPacket() == null){}

或者也许我应该在单独的线程中为每种格式开始转换?

(代码来自:MediaTool Introduction)

最佳答案

Xuggle 不会启动任何线程(1),由您来管理线程。此外,Xuggle 对象不是线程安全的——您必须自己控制访问。

然而,在您添加多个线程之前,开箱即用地测量性能可能是值得的。多核机器上的多个线程肯定会加快编码速度,但您可能不需要这种好处。

艺术

(1) 不完全正确,但在您的情况下,Xuggle 不会启动任何线程。 Xuggle 将(从 4.0 版开始)最多启动一个用于内存清理的其他线程。

关于java - xuggle并发转码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8833883/

相关文章:

java : A fatal error is coming while runnig Swing Application(. 6.0_18-b07)

java - 为休息服务实现 JUnit 测试

java - 当socket io.read()无法获取任何数据时,java线程的状态是什么

iOS AVCaptureVideoPreviewLayer 未显示在 UIView 中?

java - DynamoDB POJO 是否需要实现序列化?

java - 使用 jQuery for Java 应用程序的 Web 界面

c++ - 线程安全对象的包装类是否也需要成为线程安全的?

java - 如何在java中加入一个线程与另一个线程?

linux - 如何使用 ffmpeg 高质量将 flv 转换为 avi

ios - 在 safari/iOS 上寻找 HTML 5 视频