gpt4 book ai didi

java - Java 中的 ScreenVideo 编码器

转载 作者:搜寻专家 更新时间:2023-11-01 01:30:07 26 4
gpt4 key购买 nike

有人知道免费的 ScreenVideo(v1 或 v2)Java 视频编码器吗?我知道 ffmpeg 有一个 C++ 版本,Lee Felarca 用 AS3 写了一个;但我真的很想用 Java 编写一个。
AS3:http://www.zeropointnine.com/blog/assets_code/SimpleFlvWriter.as.txt

最佳答案

我相信Xuggle库做你想做的事——尽管它实际上可能是 ffmpeg 等原生库的包装器。

这是将桌面屏幕截图编码为 flv (mp4) 的示例代码片段:

 final Robot robot = new Robot();
final Toolkit toolkit = Toolkit.getDefaultToolkit();
final Rectangle screenBounds = new Rectangle(toolkit.getScreenSize());

// First, let's make a IMediaWriter to write the file.
final IMediaWriter writer = ToolFactory.makeWriter("output.mp4");

// We tell it we're going to add one video stream, with id 0,
// at position 0, and that it will have a fixed frame rate of
// FRAME_RATE.
writer.addVideoStream(0, 0,
FRAME_RATE,
screenBounds.width, screenBounds.height);

// Now, we're going to loop
long startTime = System.nanoTime();
for (int index = 0; index < SECONDS_TO_RUN_FOR*FRAME_RATE.getDouble(); index++)
{
// take the screen shot
BufferedImage screen = robot.createScreenCapture(screenBounds);

// convert to the right image type
BufferedImage bgrScreen = convertToType(screen,
BufferedImage.TYPE_3BYTE_BGR);

// encode the image to stream #0
writer.encodeVideo(0,bgrScreen,
System.nanoTime()-startTime, TimeUnit.NANOSECONDS);
System.out.println("encoded image: " +index);

// sleep for framerate milliseconds
Thread.sleep((long) (1000 / FRAME_RATE.getDouble()));
}
// Finally we tell the writer to close and write the trailer if
// needed
writer.close();

此代码来自tutorial在 Xuggle 网站上。

更高级的编码,也在 Xuggle 网站上 here .

如果 native 包装器是您想要的,请运行网络搜索 "IContainerFormat flv"对于其他示例代码。

此外,已经有一个 very similar question


更新:原生 java 实现

查看 ScreenVideoEncoder.java来自 github 上的 bigbluebutton 项目。

关于java - Java 中的 ScreenVideo 编码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3653877/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com