2012-07-17 127 views
3

我有兩個網絡攝像機在一個房間裏拍攝很多視頻文件對。由於帶寬利用率,視頻文件具有可變的幀速率。據我瞭解,如果我們在時間軸上標記的幀是這樣的:如何以可變的幀速率同步兩個視頻?

variable frame rates

我想這兩個視頻同步。通過同步我的意思是填補空白,使得對於視頻中的給定幀,在另一個視頻中存在相應的幀。在我想最終兩者有這樣兩個視頻:

enter image description here

我曾經想過用轉換工具,這兩部影片轉換爲每秒25幀,雖然我會有他們將同步冗餘幀對。不過,我有與所有視頻的每個幀相關的信息,我將無法知道轉換後的關聯。

我想我需要以編程的方式做到這一點,以便我可以相應地保留與每一幀相關的信息。

到目前爲止,我已經嘗試OpenCV,VideoCapture財產CV_CAP_PROP_POS_MSEC給我的幀數,而不是幀的毫秒。即使它給了我正確的值,VideoWriter不支持可變幀頻。 MATLAB拒絕閱讀我的視頻文件,因爲它不支持編解碼器,它是MJPEG(運動jpeg)。我已經能夠使用Python中的pyglet來讀取frame#和相應的毫秒。但它只是解碼器,我還沒有任何東西可以寫入像「這是第#12幀這樣的視頻文件,這應該完全在視頻的1.76秒」。

我正在尋找最簡單的方法來實現這一點,語言,工具無關緊要。感謝您的Windows解決方案。非常感謝你的回答。

PS。我不介意輸出格式,但我更喜歡無損格式。

回答

1

最簡單的方法是將兩者轉換爲相同的fps(比如25),然後將它們匹配。 ffmpeg是一個很好的工具。查看此博客文章的更多詳細信息http://www.hdslr-cinema.com/news/workflow/convert-between-framerates/

但可能它會複製幀來覆蓋空插槽。如果這不能滿足您的要求,您應該考慮時間插值 - 在幀之間插入像素。但這是很多工作。 ffmpeg解決方案是一項5分鐘的任務,插值可能意味着閱讀和實施一些學術論文。

請注意,可能有一些專用的插值工具,但我不知道它們。這是值得調查的。

+0

我不介意插入我自己的,因爲我告訴有像(#1,info1),(#2,info2)幀的相關信息,所以如果我使用工具轉換他們兩個,我不會知道如何匹配以前的關聯和新的關聯。我將檢查ffmpeg庫。 – nimcap 2012-07-18 08:59:13

相關問題