2016-07-28 82 views
3

我需要削減ffmpeg可能的視頻剪輯的一部分,但不想使用ffmpeg並希望嚴格使用asp.net中的Media Foundation方法。任何人都可以建議我怎麼可能。 要求是希望將直播流從結束位置剪切爲4分鐘,然後保存在視頻文件中。我們必須從實時流中剪切視頻,而不是已經保存的視頻。使用媒體基礎c剪切視頻剪輯#

回答

4

我可以推薦你使用ffmpeg或其他視頻編輯器。 Media Foundation是用於播放或編碼視頻的低級框架。它不包括任何剪輯視頻剪輯的功能。當然,可以使用Media Foundation編寫視頻剪輯代碼,但它需要從頭開始編寫所有代碼。我對媒體基金會有豐富的經驗,我可以將它與'樂高'積木進行比較 - 收集非常「微小」的元素。我認爲實施你的想法可能需要半年或更長的時間。

順便說一句 - 您可以通過Media Foundation Capturing Live-video from Web-camera on Windows 7 and Windows 8找到我的相機源代碼,您可以查看代碼的複雜性。它支持在兩個流上分割視頻 - 查看和其他(例如錄製)。可以通過其他流將視頻錄製到文件中,然後在完成視頻錄製後創建Media Foundation Media Session,打開臨時視頻文件,將位置視頻閱讀器設置爲開啓數分鐘,然後重新寫入目標文件。但是,您必須非常瞭解媒體基礎。有一本關於媒體基金會的書。它包括媒體基礎媒體會話的代碼。

+0

完全同意...你只需要調用一個簡單的命令...並且你不需要打擾視頻內容的胡斯爾 –

+0

當使用媒體捕獲使用媒體class.I保存mediaCapture到文件。我從總字節流中挑選從最後位置開始的字節到固定大小。但我無法播放視頻。您能否爲此建議解決方案,如何將元數據附加到已損壞的字節以便播放視頻。 - @Evgeny pergeguda –

+0

您可以使用[MSDN]中的MediaClip.CreateFromFileAsync'(https://msdn.microsoft.com/en-us/library/windows/apps/windows.media.editing.mediaclip.createfromfileasync.aspx) ,但它可以在Windows 10上使用 - 它使用公共接口IStorageFile:IStorageItem, IRandomAccessStreamReference,IInputStreamReference'Windows.Media - 是Media Foundation的高級包裝器。 –

0

從MP4文件創建子剪輯的一種方法是使用Media Foundation API的Source ReaderSink Writer,以便您可以分別從特定位置的所有感興趣的流開始「讀取」。數據將被傳遞給Sink Writer實例以生成子剪輯文件。

這可以在有或沒有視頻重新壓縮的情況下完成。請注意,Media Foundation是本機代碼API,您可能需要一個包裝庫,它提供了各自的ASP.NET接口。

另一種方法是帶有TrimStartTime/TrimStopTime屬性的UWP MediaTranscoder API。 Transcoding media sample應該給你一個見解。