2013-03-19 45 views
11

這個問題聽起來有點複雜或模棱兩可,但我會盡量讓它儘可能清楚。我做了大量的谷歌搜索,花了很多時間,但沒有發現任何與Windows相關的東西。一起顯示兩個視頻,然後作爲合併視頻輸出到一個屏幕上

我想在一個屏幕上播放兩個視頻。一個在背景中全屏,一個在小窗口中,或者在右上角小寬度/高度。然後我想要一個包含兩個視頻在一個屏幕上一起播放的輸出。

所以基本上一個視頻覆蓋另一個視頻,然後我希望流輸出,以便用戶可以稍後播放該流。

我不是要求你編寫整個代碼,只是告訴我該怎麼做或如何去做,或者我必須使用哪個工具或第三方SDK來實現它。

更新: 嘗試了很多解決方案。

1. Xuggler - 不支持Android

2. JavaCVJJMPEG - 無法找到任何建議如何做的教程?

現在尋找FFMPEG-搜索了很長時間,但無法找到任何指導編碼方式的教程。我找到了命令行方式來解決它。 所以任何人都可以建議或指出FFMPEG的教程或告訴任何其他方式

+1

長時間陷在這個問題上,試圖在windows中使用ffmpeg。但對c/C++沒有深入的瞭解。也無法獲得谷歌的代碼。 – 2013-03-19 10:45:16

+0

我也試過FFMpeg,並且由於缺乏知識而導致同樣的問題,有沒有什麼辦法可以通過java修復它.. – Anil 2013-03-19 10:48:59

+0

如果你能夠做PIP(畫中畫),那麼我有一個簡單的解決方案。 – Varun 2013-03-19 12:00:40

回答

1

我會從JavaCV開始。這是相當不錯的和靈活的。它應該允許您抓取框架,將它們合成並將它們寫回到文件中。使用FFmpegFrameGrabber和Recorder類。構圖可以手動完成。

答案的其餘部分取決於幾件事情:

  • 你想從一個文件/ MEM/URL讀?
  • 要保存到文件/ mem/url嗎?
  • 你需要實時處理嗎?
  • 你需要比簡單的畫中畫更多的東西嗎?
+0

感謝您的回覆如此之快,但現在我想讀取兩個視頻文件,然後一起顯示並將該流視爲輸出。順便說一句,它在Windows環境中工作.. – Anil 2013-03-19 10:53:44

+1

所以JavaCV是要走的路。 – Zielony 2013-03-19 10:55:33

+1

@Zielony,嘿,你能指出任何教程嗎? – 2013-03-19 10:56:05

-2

ffmpeg是一個非常活躍的項目,很多的變化和釋放所有的時間。

您應該看看Xuggler項目,它提供了一個您想要做什麼的Java API,並且它們與ffmpeg緊密集成。

http://www.xuggle.com/xuggler/

你應該選擇往下走的Runtime.exec()的路徑,這Red5的線程應該是有用的:

http://www.nabble.com/java-call-ffmpeg-ts15886850.html

+0

使用計算機視覺庫,音頻回放會發生什麼?你知道Xuggler甚至不支持android。 :( – 2013-03-22 10:30:55

0

你可以使用OpenGL這樣的伎倆。但請注意,您需要渲染步驟,一個渲染FBO中的第一個視頻,然後第二個渲染第二個視頻,使用FBO作爲TEXTURE0,第二個作爲EXTERNAL_TEXTURE。

混合,和所有你想要的東西將由OpengL完成。

你可以在這裏查看源代碼:Using SurfaceTexture in Android和這裏的一些重要信息:Android OpenGL combination of SurfaceTexture (external image) and ordinary texture

我不知道的唯一的事情是,當媒體播放器的兩個實例並行運行會發生什麼。我想這不應該是一個問題。

相關問題