it-swarm.com.de

Dauer des Videos nach dem Hochladen abrufen

Was ist der beste Weg zu bekommen?

Ich habe ein Feld, in das der Nutzer ein Video hochladen kann.

Wenn Sie auf die Schaltfläche zum Hochladen klicken, wird das Video hochgeladen. Das funktioniert perfekt.

Ich brauchte die Dauer des Videos vom physischen Pfad, ich habe versucht:

using WMPLib;
WindowsMediaPlayer wmp = new WindowsMediaPlayerClass();
IWMPMedia mediaInfo = wmp.newMedia(Server.MapPath("~/Uploads/test.mp4"));
double duration = mediaInfo.duration;

Aber es funktioniert nicht, ich bekomme einen Fehler: 

Für den Typ 'WMPLib.WindowsMediaPlayerClass' sind keine Konstruktoren definiert. Der Interop-Typ 'WMPLib.WindowsMediaPlayerClass' kann nicht eingebettet werden.

Wie fange ich die Dauer ein?

15
user6448640

Sie können dieses Nuget-Paket verwenden: 

Install-Package Xabe.FFMpeg

Ich versuche, den plattformübergreifenden FFmpeg-Wrapper einfach zu verwenden. 

Weitere Informationen hierzu finden Sie unter Xabe.FFmpeg

IMediaInfo mediaInfo = await MediaInfo.Get("videofile.mkv");
var videoDuration = mediaInfo.VideoStreams.First().Duration;

Weitere Informationen zum Abrufen der Dauer der Videodatei finden Sie unter: https://xabe.net/product/xabe_ffmpeg/#documentation

10
Tomasz Żmuda

Wir bekommen das Video Durations in vielerlei Hinsicht 

Methode 1: Shell 32-API

Methode 2: WMPLib (Windows Media Player-Bibliothek)

Methode 3: FFMpeg-Wrapper 

Überprüfen Sie die untenstehenden Links

Methode 1 und Methode 2 Link Holen Sie sich die Länge eines Videos in-c #

Methode 3 Referenz Link Videodatei-Zeitdauer in ffmpeg

Bei dieser Methode, die für das Abrufen der Videoeigenschaften und der Duraion verwendet wird, wurden alle diese drei Elemente zuvor überprüft. Es funktioniert einwandfrei. Einige benutzerdefinierte Attribute in den Dateieigenschaften werden in den ersten beiden Methoden nicht angezeigt.

die Methode 3 funktioniert nicht im Shared Hosting. es ist für dedizierten Server erforderlich.

2
umasankar

Mit der DirectShow.Net-Wrapperbibliothek können Sie das DirectShow-API-Objekt MediaDet verwenden. Die Methode get_StreamLength ist diejenige, die die Länge des Videos in Sekunden ermittelt und mit einem deterministischen Algorithmus in Minuten/Stunden konvertiert werden kann. Um diese API zu verwenden, stellen Sie sicher, dass die Abhängigkeit von MPEG-4 auf Ihrem Betriebssystem installiert ist.

oder Sie können sich für Media Info library entscheiden, um Informationen aus einer Videodatei abzurufen.

Sehen Sie sich eine Implementierung mithilfe der DirectShow.NET-Wrapperbibliothek an: Länge des Videos abrufen

2
Danyal Imran

Ihr Code sieht gut aus, aber wenn Sie die Attribute der Medien-Info überprüfen können, wie:

using WMPLib; // this file is called Interop.WMPLib.dll
WindowsMediaPlayerClass wmp = new WindowsMediaPlayerClass();
string FilePath = "yourFilePath";
IWMPMedia mediaInfo = wmp.newMedia(FilePath);

// write duration
Console.WriteLine("Duration = " + mediaInfo.duration);

// write named attributes
for (int i=0; i < mediaInfo.attributeCount; i++) 
{
    Console.WriteLine(mediaInfo.getAttributeName(i) + " = " +  mediaInfo.getItemInfo(mediaInfo.getAttributeName(i)) );
}
2
user5377037

Der folgende Code-Ausschnitt kann Ihnen helfen:

using WMPLib;
// ...your code here...

var player = new WindowsMediaPlayer();
var clip = player.newMedia(VideoFilePath);
Console.WriteLine(TimeSpan.FromSeconds(clip.duration));

und vergessen Sie nicht, die Referenz vonwmp.dllhinzuzufügen, die im OrdnerSystem32vorhanden sein wird.

0
Rish