我正在使用Xuggler並嘗試創建一個使用從視頻捕獲的幀的程序。Xuggler:在單獨的線程中捕獲視頻幀
我發現這個代碼:Xuggler: Deocde And Capture Frames
我設法得到它的工作和保存我需要的幀。現在
,我試圖把它融入我的GUI程序在一個單獨的線程保持一切從鎖起來,把抓住的幀。我幾乎只是將所有東西都複製到run方法中。我所做的唯一更改是糾正args文件名。我硬編碼它,並檢查了我的工作程序,以確保它是正確的路徑。
現在,當我嘗試運行框架抓在自己運行的線程代碼,它崩潰。 它似乎在這部分打開文件時崩潰:
IContainer container = IContainer.make();
if (container.open(filename, IContainer.Type.READ, null) < 0)
throw new IllegalArgumentException("could not open file: " + filename);
圍繞Xuggler網站經過一番研究,我看着爲的IContainer文件這裏打開方法:Xuggler: IContainer API open()
它說:「如果當前阻塞方法運行時,當前線程被中斷,方法將返回一個負值。 「
它返回一個負值崩潰之前,所以我想這可能是我的問題。雖然,這是目前我的程序中唯一的額外線程。我的程序只是我要用來顯示內容的一些基本框架和麪板。然後,創建這些之後,我嘗試啓動崩潰的抓取線程。
我不知道如何解決這個問題。有人能指出我正確的方向嗎?謝謝。
編輯:
發現這個帖子後:嗯,我沒有足夠的代表處發佈的第三連桿,因此它可以通過google搜索找到:icontainer.open xuggler用戶
我實現使用另一種需要格式的開放方法打開容器,它似乎工作。現在
,它拋出此異常時,它得到本節:
resampler = IVideoResampler.make(
videoCoder.getWidth(), videoCoder.getHeight(), IPixelFormat.Type.BGR24,
videoCoder.getWidth(), videoCoder.getHeight(), videoCoder.getPixelType());
if (resampler == null)
throw new RuntimeException(
"could not create color space resampler for: " + filename);
我試圖通過設置自己IFormat像這樣打開它:
IContainerFormat format = IContainerFormat.make();
format.setInputFormat("mp4");
,我試圖用null作爲像API這樣的格式表示讓類「猜測」格式。
雖然都拋出了相同的異常,所以我不知道該從哪裏走。我仍然在尋找。
這只是一個線程,但我也試過。它在輪胎打開容器時仍然崩潰,並以不利的結果退出。 – Lucas 2013-04-07 13:39:49