任何人都知道ScreenVideo(v1或v2)的Java視頻編碼器是免費的嗎?我知道ffmpeg有一個C++版本,Lee Felarca在AS3中寫了一個;但我真的想在Java中有一個。
AS3:http://www.zeropointnine.com/blog/assets_code/SimpleFlvWriter.as.txtJava中的ScreenVideo編碼器
回答
相信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。
如果您想要的是原生包裝,請爲"IContainerFormat flv"運行網絡搜索以查找示例代碼的其他位。
而且,已經有一個very similar question
更新:本地Java實現從github上bigbluebutton項目
很好的答案,但Xuggle是「native」它提供了通過JNI訪問ffmpeg。我正在尋找純java代碼。 – 2010-10-01 19:41:54
Btw你的代碼示例不會編碼到「screenvideo」或ffmpeg「flashsv」中。這段代碼的輸出很可能是mp4容器中的h.264。 – 2010-10-01 21:27:24
我不是很熟悉「screenvideo」,你能提供一個鏈接到更多信息嗎?谷歌只搜索這個術語並沒有透露太多。 – Andy 2010-10-04 03:35:20
我相信BigBlueButton實現了一個,但我不知道他們是否開源。在那裏檢查。
沒有想過這些傢伙,但好主意。 – 2010-10-02 05:49:10
我不知道你是否發現用純Java寫的東西,而不使用本地代碼。視頻編碼是一項非常耗時的任務,因此通常使用'快速'本機代碼編寫,使用C或甚至彙編語言編寫。視頻編碼通常使用特殊的CPU和GPU指令來提高速度 - 這一切都無法從Java中獲得,因此在Java中編寫用於生產的視頻編碼器是沒有意義的。 如果我是你,我會採取一些本地解決方案,並將其嵌入到JNI,JNA或Swig(流行的Java到本機連接器)中。 如果您需要高可移植性(例如,32位Windows,64位Windows,32位Linux,64位Linux),只需爲這四個平臺編譯此本機庫並嵌入到JAR中即可。 如果您只需要編寫未壓縮的視頻,可以使用Java輕鬆完成,並且與原生代碼一樣快。只需將此SimpleFlvWriter.as發佈並重寫爲Java - 它不應該是一項艱鉅的任務。
沃納Randelshofer貼在自己的博客純Java屏幕記錄和還跟發佈來源: http://www.randelshofer.ch/blog/2011/05/pure-java-screen-recorder/ 它看起來你想要做什麼。
不確定Werner的編解碼器是否相同,我會看看。這是與問題相關的編解碼器http://wiki.multimedia.cx/index.php?title=Flash_screen_video – 2011-08-02 13:23:34
- 1. FlashPlayer是否支持ScreenVideo編解碼器?
- 2. JAVA ESAPI編碼器
- 3. JavaScript中的Java字節碼編譯器
- 4. Java中實現的編解碼器
- 5. Java中的編碼代碼
- 6. java字節碼編輯器?
- 7. 在Java中使用ESAPI編碼器
- 8. 在java中的url編碼?
- 9. Java中的Base64編碼/ Groovy
- 10. HmacSHA256在java中的編碼
- 11. Java中的編碼問題
- 12. Java中的URCPonnection編碼
- 13. Java中的MP3編碼
- 14. JTable的編碼在Java中
- 15. Java編碼 - 等同於Java中的sjisMS編碼
- 16. jQuery的編碼器需要在Java
- 17. 如何解碼java中的Unicode編碼?
- 18. Java - 用XML編碼的圖像編碼
- 19. 用Eclipse和Maven編碼的Java編碼
- 20. Hangman java編碼
- 21. Java Unicode編碼
- 22. UTF編碼java
- 23. Java dateFishion編碼
- 24. java編碼misunderstoud
- 25. 編碼在Java
- 26. Java URL編碼
- 27. JAVA Intellij編碼
- 28. 編碼:Java&Python
- 29. Java - 編碼URL
- 30. 用Java編碼
好的,所以要獲得賞金,就我而言,我希望它是純java代碼。沒有JNI,JNA等.. – 2010-10-01 19:40:39
我開始了一個純java版本,你可以在這裏看到:http://pastebin.com/X1cGeHat,但從來沒有完成它。 – 2010-10-01 19:44:07
看看我的更新。 – Andy 2010-10-04 15:22:27