Получить продолжительность видео после загрузки
Какой лучший способ получить?
У меня есть поле, где пользователь будет загружать видео.
Когда вы нажимаете кнопку "Загрузить", видео загружается. Это отлично работает.
Мне понадобилась продолжительность видео с физического пути, я пробовал:
using WMPLib;
WindowsMediaPlayer wmp = new WindowsMediaPlayerClass();
IWMPMedia mediaInfo = wmp.newMedia(Server.MapPath("~/Uploads/test.mp4"));
double duration = mediaInfo.duration;
Но он не работает, я получаю ошибку:
Тип "WMPLib.WindowsMediaPlayerClass" не имеет определенных конструкторов. Тип Interop "WMPLib.WindowsMediaPlayerClass" не может быть встроен.
Как уловить продолжительность?
Ответы
Ответ 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
.