2008-12-27 115 views
3

我需要使用無損視頻編解碼器對幀序列進行編碼並在Java應用程序中播放它們。我不關心文件大小。輸出幀應該與輸入幀完全匹配。即使在高比特率下,有損編解碼器也不會這樣做。Java中的無損視頻編解碼器播放

無這些知名的無損視頻編解碼器的出現在JMFFMJ得到支持:

  • HuffYUV
  • CorePNG
  • Lagarith
  • FFV1
  • ...

你知道嗎Java中支持的任何無損視頻編解碼器的編碼?

其他選擇,我認爲:

  • GIF動畫:是回放保證有一個恆定的幀速率像真正的視頻編解碼器?
  • 加載並顯示單獨的幀:以固定幀速率完成此操作並且不會丟失太多幀會有多困難?
  • 程序:視頻播放庫需要Quicktime,這在我的平臺上不可用。

編輯:我終於決定以最高的質量解決JMF(非標準)MotionJPEG。它不是完全無損的,但仍然比MPEG4質量好得多。

回答

0

那麼,既然你說文件大小不是問題,gzip/bzip2可以是一個快速和無痛的選擇。它不會給予最大限度的壓縮,但如果您未能找到更好的答案,它可能是最後的追索權。

使用java.util.zip.GZIPInputStream可以透明地打開Gzip文件,並且類似的接口可用於Bzip2。

+0

這基本上是「加載並顯示單獨的框架」選項的變體。我擔心即使沒有壓縮,速度也不會太快。 – palm3D 2008-12-27 19:51:30

+0

爲什麼這個選項會變慢?我只能想象I/O成爲瓶頸,取決於視頻分辨率等細節。 CPU不會成爲瓶頸,因爲您通過準備使用數據來減少工作量。 PS。我實施了一次視頻解碼器(MPEG4 FGS)。 – ePharaoh 2008-12-28 02:33:52

1

FMJ確實支持存儲/播放一系列PNG圖像的實驗方法,MJPEG就是一系列JPEG圖像。一個是uuencode進行編碼的PNG圖像(相當臃腫)的實驗XML文件格式,另一個是x多部分混合替換HTTP格式,FMJ支持的文件格式具有擴展.mmr

1
  • 結束

    動畫GIF:是的,您可以定義動畫GIF的幀率(實際上您可以爲每個單幀設置延遲)

  • 手動顯示幀:取決於硬件,幀速率和圖像大小。在沒有硬件支持的情況下,30fps的高清分辨率將非常困難,縮略圖的大小在任何平臺上都不成問題。

  • 另一種選擇:根據你想要做什麼,你可以考慮'遠程控制'另一個玩家或框架,可能與一些本地代碼。例如,在* nix/X11上嵌入mplayer,或在Windows上使用COM來控制WMP或DirectShow。