создать миниатюру из URL-адреса видео в С#

Я хочу создать миниатюру из URL-адреса видео на С#. Я много искал, чтобы найти аккуратный способ, но безуспешно. Я использовал Nreco и MediaToolKit, но ни один из них не извлекал уменьшенное изображение. использование ffmpeg также имеет ненужную ерунду, которая не сработала!

с помощью NReco:

var ffMpeg = new NReco.VideoConverter.FFMpegConverter();
string thumbnailJPEGpath = "http://localhost:81882/content/hashem.jpeg";
ffMpeg.GetVideoThumbnail(videoUrl,thumbnailJPEGpath);

используя ffmpeg:

try
        {
            System.Diagnostics.Process ffmpeg;

            string video;
            string thumb;

            video = Server.MapPath("~/Content/Movies/bye.mp4");
            thumb = Server.MapPath("~/Content/frame.jpg");

            ffmpeg = new System.Diagnostics.Process();

            ffmpeg.StartInfo.Arguments = " -i " + video + " -ss 00:00:07 -vframes 1 -f image2 -vcodec mjpeg " + thumb;
            ffmpeg.StartInfo.FileName = Server.MapPath("~/Content/ffmpeg.exe");
            ffmpeg.Start();
            ffmpeg.WaitForExit();
            ffmpeg.Close();
        }
        catch (Exception ex)
        {
            Response.Write("Error: " + ex.Message);
        }

считать видеофайлы не локальными и у меня есть только прямая ссылка на файл: например: http://phytonord.com/Film-Series/hana/26.mp4

у кого-нибудь есть решение? любой пример кода, который работает?


person Hashem Aboonajmi    schedule 30.01.2015    source источник
comment
возможный дубликат получить эскиз видеофайла в C#   -  person rducom    schedule 30.01.2015
comment
проверил оба, но не работает. не могли бы вы проверить с предоставленной ссылкой на видео?   -  person Hashem Aboonajmi    schedule 30.01.2015


Ответы (2)


Использование NReco для создания миниатюр видео:

Я нашел свою проблему:

1: я не использовал Server.MapPath. Я только что ввел относительный путь.

2: видеофайл не обязательно должен быть локальным, он может быть размещен где-то еще. NReco просто загрузит нужную часть видео, а затем извлечет миниатюру. ваш видеофайл должен находиться в каталоге localHost вашего локального сервера. Я имею в виду, что если ваш сайт находится в разработке, а видеофайл находится в папке вашего локального компьютера, это НЕ БУДЕТ работать, потому что NReco требует поддержки диапазона байтов в файле заголовка ответа HTTP.

Недопустимая ссылка: "http://localhost:81882/content/AVSEQ01.mp4< /а>"

поэтому для моего локального теста я переместил свой видеофайл в локальный каталог IIS: ‪C:\inetpub\wwwroot\AVSEQ01.mp4

//sample remote video file
//string videoUrl = "http://phytonord.com/Film-Series/peik%20sahar/1.mp4";

 //local video file
string localVideoFile = "http://localhost/AVSEQ01.mp4"
var ffMpeg = new NReco.VideoConverter.FFMpegConverter();
string thumbnailJPEGpath = Server.MapPath("~/Content/videoThumb.jpg");
ffMpeg.GetVideoThumbnail(videoUrl, thumbnailJPEGpath);
person Hashem Aboonajmi    schedule 05.02.2015
comment
Я думал, что мне нужно сначала загрузить файл на локальный путь. Оказывается, я могу просто использовать URL. Спасибо, что разъяснили это. - person Weihui Guo; 29.08.2018

Я вижу, что на вопрос дан ответ, но он написан нечетко. Итак, вот мой ответ: сначала загрузите DLL

ffMpeg.GetVideoThumbnail(inputFile,outputFile, frameTime);
// Summary:
    //     Extract video frame from local video file at specified position
    //
    // Parameters:
    //   inputFile:
    //     path to local video file
    //
    //   outputFile:
    //     path to thumbnail jpeg file
    //
    //   frameTime:
    //     video position (in seconds)

вот как я сделал в своем проекте

            var thumbNailMovieImage = PHYSICAL_PATH_UPLOAD_FILE + "/" + folder + "/thumb_" + filenameWithoutExtn + ".jpg";
            var ffMpeg = new FFMpegConverter();
            ffMpeg.GetVideoThumbnail(path, thumbNailMovieImage, 1);

Теперь запустите этот код и проверьте, где создан ваш файл миниатюр.

person DropAndTrap    schedule 18.05.2015
comment
Есть ли способ получить обратное изображение из фактической ссылки на видео? - person kabijoy; 09.08.2019
comment
bcoz Я использую тот же видео конвертер. И я не хочу возвращать изображение в локальную папку. Я хочу делать некоторые обновления из возвращаемого изображения (из видеофайла/url). - person kabijoy; 09.08.2019