Как использовать asp.net получить продолжительность видео - PullRequest
1 голос
/ 10 июня 2010
using Microsoft.DirectX.AudioVideoPlayback;

Video vvideo = new Video(FileUpload.FileName.ToString());
StringBuilder sb = new StringBuilder();
sb.Append(duration.toString());
error message;

«Установлена ​​попытка доступа к домену приложения.»

Создается экземпляр «vvideo». Msj: //

Но, найденные трески, я нашел рабочий код в c #. но asp.net не работает

string file1 = "c://ds.mpeg"
IMediaPosition m_objMediaPosition = null;
FilgraphManager m_objFilterGraph = new FilgraphManager();
m_objFilterGraph.RenderFile(filename);
m_objMediaPosition = m_objFilterGraph as IMediaPosition;

int s = (int)m_objMediaPosition.Duration;
int h = s / 3600;
int m = (s - (h * 3600)) / 60;
s = s - (h * 3600 + m * 60);

Я НЕ СНИМАЮ ВИДЕО ДЛИТЕЛЬНОСТИ МАЛЬЧИКОВ: /

Ответы [ 3 ]

1 голос
/ 14 июня 2010

Я делаю функцию везде, где она используется;)

public string f_VideoDuration((add path)parameters)
{

    try
    {
        string sInputVideo = Page.MapPath(add path);
        string sPath = " -i " + sInputVideo ;

        Process ffmepg = new Process();
        ffmepg.StartInfo.FileName = (Server.MapPath("ffmpeg.exe"));
        ffmepg.StartInfo.UseShellExecute = false;
        ffmepg.StartInfo.RedirectStandardOutput = true;
        ffmepg.StartInfo.RedirectStandardError = true;
        ffmepg.StartInfo.CreateNoWindow = true;
        ffmepg.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        ffmepg.StartInfo.Arguments = sPath;
        ffmepg.EnableRaisingEvents = true;
        ffmepg.Start();
        string sDuration = ffmepg.StandardError.ReadToEnd().ToString();
        ffmepg.Close();
        ffmepg.Dispose();

        sDuration = sDuration.Remove(0, sDuration.LastIndexOf("Duration: ") + 10);
        sDuration = sDuration.Substring(0, sDuration.IndexOf(","));
        return sDuration;
    }
    catch (Exception ex)
    {
        throw (ex);
    }
}
0 голосов
/ 29 июня 2019

Вы можете использовать нашу оболочку для ffprobe Alturos.VideoInfo . Вы можете использовать его, просто установив пакет nuget. Также требуется двоичный файл ffprobe .

PM> install-package Alturos.VideoInfo

Пример

var videoFilePath = "myVideo.mp4";

var videoAnalyer = new VideoAnalyzer("ffprobe.exe");
var analyzeResult = videoAnalyer.GetVideoInfo(videoFilePath);

var duration = analyzeResult.VideoInfo.Format.Duration;
0 голосов
/ 16 августа 2018

Сначала я пробую FFMPEG Wrapper, но выдает ошибку после того, как нашел простое решение.

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

Install-Package Microsoft.WindowsAPICodePack-Shell -Version 1.1.0

В вашем проекте добавьте два пространства имен

с использованием Microsoft.WindowsAPICodePack.Shell; using.Microsoft.WindowsAPICodePack.Shell.PropertySystem;

ShellFile so = ShellFile.FromFilePath("your file path");
double.TryParse(so.Properties.System.Media.Duration.Value.ToString(), out var nanoseconds);

if (nanoseconds > 0)
{
     double seconds = Convert100NanosecondsToMilliseconds(nanoseconds) / 1000;
     int ttl_seconds = Convert.ToInt32(seconds);
     TimeSpan time = TimeSpan.FromSeconds(ttl_seconds);
} 

public static double Convert100NanosecondsToMilliseconds(double nanoseconds)
{           
     return nanoseconds * 0.0001;
}

Здесь я сохраняю секунды в TimeSpan , так что его напрямую дают часы: минуты: секунды.

...