2016-07-28 15 views
3

Ich muss einen Teil des Videoclips schneiden, die von ffmpeg möglich ist, aber nicht ffmpeg verwenden möchte und mit Media Foundation-Ansatz in asp.net strikt zu sein. Kann mir jemand vorschlagen, wie das möglich sein könnte? Voraussetzung ist, dass der Livestream von Endposition auf 4 Minuten zurückgeschnitten und dann in Videodatei gespeichert werden soll. Wir müssen das Video vom Live-Stream schneiden, nicht für das bereits gespeicherte Video.Schneiden Sie Videoclip mit Media Foundation C#

Antwort

4

Ich kann Ihnen empfehlen, ffmpeg oder andere Videoeditor zu verwenden. Media Foundation ist ein Low-Level-Framework, das zum Abspielen oder Codieren von Videos verwendet wird. Es enthält keine Funktionen zum Ausschneiden von Videoclips. Natürlich ist es möglich, Code für das Schneiden von Videos mit Media Foundation zu schreiben, aber es muss der gesamte Code von Grund auf neu geschrieben werden. Ich habe eine reiche Erfahrung mit Media Foundation und ich kann es mit "LEGO" -Blöcken vergleichen - Sammlung sehr "kleine" Elemente. Ich denke, es kann ein halbes Jahr oder länger dauern, bis Sie Ihre Idee umgesetzt haben.

Übrigens - Sie können meinen Quellcode für die Arbeit mit der Kamera über Media Foundation Capturing Live-video from Web-camera on Windows 7 and Windows 8 finden und Sie können Komplexität des Codes anzeigen. Es unterstützt die Aufteilung von Videos auf zwei Streams - Anzeige und andere (zum Beispiel Aufnahme). Es ist möglich, Video über einen anderen Stream in die Datei aufzunehmen, dann nach Abschluss der Videoaufnahme Media Foundation Media Session zu erstellen, eine temporäre Videodatei zu öffnen, den Positions-Videoreader für Minuten vom Ende an einzuschalten und in die Zieldatei zu schreiben. Sie müssen Media Foundation jedoch sehr gut verstehen. Es gibt ein Buch über die Medienstiftung. Es enthält Code für Media Foundation Media Session.

+0

völlig zustimmen ... Sie müssen nur einen einfachen Befehl aufrufen ... und Sie müssen nicht die Hussel der Video-stuff –

+0

Während der Verwendung von MediaCapture mit Media-Klasse.Ich speichere die MediaCapture in die Datei. Ich nehme die Bytes von der letzten Position in Richtung Start zu einer festen Größe aus dem gesamten Bytestrom. Aber ich kann das Video nicht wiedergeben. Könnten Sie bitte eine Lösung dafür vorschlagen, wie Sie die Metadaten an die defekten Bytes anhängen, um das Video abspielen zu können. - @Evgeny pergeguda –

+0

Sie können 'MediaClip.CreateFromFileAsync' aus [MSDN] (https://msdn.microsoft.com/en-us/library/windows/apps/windows.media.editing.mediadip.createfromfileasync.aspx) verwenden , aber es kann unter Windows 10 verwendet werden - es verwendet öffentliche 'Schnittstelle IStorageFile: IStorageItem, IRandomAccessStreamReference, IInputStreamReference' Windows.Media - ist High-Level-Wrapper um Media Foundation. –

0

Eine Möglichkeit, einen Subclip aus einer MP4-Datei zu erstellen, besteht darin, Source Reader und Sink Writer der Media Foundation-API zu verwenden, sodass Sie von allen gewünschten Streams an bestimmten Positionen "lesen" bzw. stoppen. Die Daten werden an die Sink Writer-Instanz übergeben, um eine Subclip-Datei zu erstellen.

Dies kann sowohl mit als auch ohne Video-Komprimierung erfolgen. Beachten Sie, dass Media Foundation eine API mit systemeigenem Code ist und Sie möglicherweise eine Wrapper-Bibliothek benötigen, die eine entsprechende Schnittstelle zu ASP.NET bereitstellt.

Eine andere Möglichkeit ist eine UWP MediaTranscoder-API mit TrimStartTime/TrimStopTime-Eigenschaften. Transcoding media sample sollte Ihnen einen Einblick geben.