3

C# で動画の URL からサムネイルを生成したいと考えています。私はきちんとした方法を見つけるためにたくさん検索しましたが、成功しませんでした。私は使用NrecoMediaToolKitましたが、サムネイル画像を抽出するものはありません。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

誰にも解決策はありますか?動作するサンプルコードはありますか?

4

3 に答える 3

4

NReco を使用してビデオ サムネイルを作成する:

私の問題を見つけました:

1: Server.MapPath を使用していません。私はちょうどrelativePathを入力しました。

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);
于 2015-02-05T12:56:55.867 に答える
0

私は質問が答えられているのを見ることができますが、明確に書かれていません, だからここに私の答えがあります: 最初に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);

このコードを実行して、サムネイル ファイルが作成された場所を確認します。

于 2015-05-18T12:15:31.880 に答える