2010-10-08 60 views
1

我們正在開發一款應用程序,以各種格式拍攝視頻文件,對文件執行一些簡單編輯,並將它們輸出爲特定格式。加載視頻文件並選擇單個幀

我可以處理一切,除了通過FFMPEG的編輯部分,作爲編輯要求用戶指定某些事情。我需要一個用戶來指定任何需要修剪的幀範圍(僅從開始或結束,從不中間),用於淡入或淡出的開始/結束幀號以及覆蓋文本。

我已經看到了Splicer和Directshow.NET包裝器,但我不確定是否值得花時間將所有編輯內容導入到我們的應用程序中,而不僅僅是使用avisynth/ffmpeg/mencoder來執行實際用戶設置上述所有內容後進行編輯。

我真正需要的是一個控制或包裝,所以我可以創建一個控件,這將播放/暫停錄像,幀之間的運動,讓我抓住視頻的特定幀編號。我可以從中生成AVS文件來完成剩下的工作。如果它會在某個級別使用DirectShow,以便機器上安裝的任何編解碼器都可用,那麼它會很好,因爲視頻可以是WMV,FLV,Divx,MP4等,我們需要支持所有那些。

任何意見或建議將被考慮,但我們會以最快速度(代碼編寫,不執行)執行。

回答

1

我們最終什麼事做:

我們使用Windows Media Player ActiveX控件,讓用戶選擇點在視頻爲變淡和修剪設置。然後,我們從中生成Avisynth腳本,並通過mencoder運行它以獲得最終視頻。

我們選擇了使用從WMP控制,指定在剪輯播放的currentPosition的雙重屬性。這足夠滿足我們的需求,可以根據每秒鐘的剪輯幀數生成幀編號,並在AviSynth腳本中使用currentPosition。

+0

事實證明,事情並不像它需要的那樣精確。我猜測WMP控件的currentPosition屬性並不完全準確,我們進一步考慮,AviSynth報告的幀數越多越好。 – Matt 2010-10-18 16:34:30