Подтвердить что ты не робот

Получить продолжительность видео после загрузки

Какой лучший способ получить?

У меня есть поле, где пользователь будет загружать видео.

Когда вы нажимаете кнопку "Загрузить", видео загружается. Это отлично работает.

Мне понадобилась продолжительность видео с физического пути, я пробовал:

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

Но он не работает, я получаю ошибку:

Тип "WMPLib.WindowsMediaPlayerClass" не имеет определенных конструкторов. Тип Interop "WMPLib.WindowsMediaPlayerClass" не может быть встроен.

Как уловить продолжительность?

4b9b3361

Ответ 1

Вы можете использовать этот пакет nuget:

Install-Package Xabe.FFMpeg

Я пытаюсь сделать простую в использовании кросс-платформенную упаковку FFmpeg.

Дополнительную информацию об этом можно найти на https://github.com/tomaszzmuda/Xabe.FFmpeg

IVideoInfo videoInfo = new VideoInfo("videofile.mkv");
var videoDuration = videoInfo.VideoProperties.VideoDuration;

Дополнительная информация о длительности видеофайла по адресу: https://github.com/tomaszzmuda/Xabe.FFmpeg/wiki/Getting-an-information-about-video

Ответ 2

С помощью библиотеки обложек DirectShow.Net вы можете использовать объект DirectShow API MediaDet. Метод get_StreamLength - это тот, который получает длину видео в секундах, что может быть преобразовано в mins/hrs с использованием детерминированного алгоритма. Чтобы использовать этот API, убедитесь, что в вашей операционной системе установлена ​​зависимость MPEG-4.

или вы можете выбрать Media Info для получения информации из видеофайла.

См. реализацию с использованием библиотеки обложек DirectShow.NET: Получение длины видео

Ответ 3

Мы получаем видео Длительность во многих отношениях

Способ 1: API оболочки 32

Способ 2. WMPLib (Windows Media Player Library)

Способ 3: FFMpeg Wrapper

проверьте приведенные ниже ссылки

Способ 1 и метод 2 Ссылка get-the-a-video-in-С#

Метод 3 Ссылка Ссылка продолжительность видеофайла в ffmpeg

В этом методе, используемом для получения свойств видео и duraion, все эти три я был проверен ранее. Он отлично работает с некоторыми пользовательскими атрибутами в свойствах файлов, которые не отображаются в первых двух методах.

Метод 3 не работает в режиме общего хостинга. он запрашивается для выделенного сервера.

Ответ 4

Ваш код выглядит отлично, но если вы можете проверить атрибуты информации в формате Info, например:

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)) );
}

Ответ 5

Следующий фрагмент кода может помочь вам:

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

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

и не забудьте добавить ссылку wmp.dll, которая будет присутствует в папке System32.