2015-10-07 93 views
4

我正在嘗試使用DirectShow實現切割功能。基本上,當我嘗試通過設置開始和結束位置來剪切一個序列時,它就起作用。但是現在我想從同一個源文件中剪出第二個序列,並在第一次剪切結束時直接寫入。所以我再次設置開始和結束位置,並再次啓動圖形,但文件寫入器過濾器會覆蓋第一次剪切。 所以基本上我想知道如何改變這一點。DirectShow視頻切割

該問題肯定存在於爲文件編寫器創建寫入偏移量的avi複用器過濾器中。

回答

0

DirectShow多路複用器旨在完成會話後完成輸出文件。由於許多原因,您不能附加到已經存在的文件,只是爲了說明問題:多路複用器必須將新媒體類型與文件中存在的媒體類型進行比較,並進行流映射以決定是否追加。並不是說這是不可能的,他們根本就不會被這種用途所吸引。

除了DES,CPlusSharp已經在其他答案中提到的解決方案是立即寫輸出,分別從多個段收集數據並調整時間戳。您通常需要多個過濾器圖來完成任務,並以某種方式在圖之間傳輸數據。一個圖形正在寫入文件(一次),然後其他源圖形提供數據,例如,從已編碼的內容開始直接傳遞,不進行代碼轉換,然後另一個圖形添加新數據。

+0

那麼我現在正在用多圖解決方案。雖然認爲會有更簡單的解決方案 –

1

對不起,但是將多個場景剪切到具有DirectShow的新文件的唯一方法是使用DirectShow Editing Services。祝你好運,這是非常錯誤的,很難掌握,很長一段時間被微軟放棄。

+0

那麼我有一部分工作現在操縱時間戳,但AVI頭沒有寫。但我會看看編輯服務。 –