10

アップロードした動画の最初のフレームを抽出して画像ファイルとして保存したい。
可能なビデオフォーマットは、mpeg、avi、wmvです。

もう1つ考慮すべきことは、ASP.NETWebサイトを作成しているということです。

4

3 に答える 3

8

FFMPEGを別のプロセス(最も簡単な方法)として使用し、最初のIDRをデコードさせることができます。ここに、GetThumbnail()メソッドを持つクラスFFMPEGがあります。これに、ビデオファイルのアドレス、作成するJPEG画像のアドレス、および画像の解像度を渡します。

using System.Diagnostics;
using System.Threading; 

public class FFMPEG
{
    Process ffmpeg;

    public void exec(string input, string output, string parametri)
    {
        ffmpeg = new Process();

        ffmpeg.StartInfo.Arguments = " -i " + input+ (parametri != null? " "+parametri:"")+" "+output; 
        ffmpeg.StartInfo.FileName = "utils/ffmpeg.exe";
        ffmpeg.StartInfo.UseShellExecute = false;
        ffmpeg.StartInfo.RedirectStandardOutput = true;
        ffmpeg.StartInfo.RedirectStandardError = true;
        ffmpeg.StartInfo.CreateNoWindow = true;

        ffmpeg.Start();
        ffmpeg.WaitForExit();
        ffmpeg.Close();     
    }


    public void GetThumbnail(string video, string jpg, string velicina)
    {
        if (velicina == null) velicina = "640x480";
        exec(video, jpg, "-s "+velicina);
    }
}

このように使用します:

FFMPEG f = new FFMPEG();
f.GetThumbnail("videos/myvid.wmv", "images/thumb.jpg", "1200x223");

これを機能させるには、フォルダー/ utilsにffmpeg.exeを配置するか、コードを変更してffmpeg.exeを見つける必要があります。

.NETラッパーのような.NETでFFMPEGを使用する他の方法があり、それらをグーグルで検索することができます。彼らは基本的にここで同じことをしますが、より良いだけです。したがって、FFMPEGで作業が完了した場合は、.NETラッパーを使用することをお勧めします。

于 2010-08-26T13:17:37.000 に答える
3

次のような引数文字列形式を作成してみてください。

ffmpeg.StartInfo.Arguments =" -i c:\MyPath\MyVideo -vframes 1 c:\MyOutputPath\MyImage%d.jpg"

それ以外の

ffmpeg.StartInfo.Arguments = " -i " + input+ (parametri != null? " "+parametri:"")+" "+output;

上記の回答コードで。

理由はわかりませんが、2番目に述べた引数行が私のマシンで機能していませんが、最初のコマンドのように引数を変更すると正常に機能します。

于 2012-02-22T10:36:51.940 に答える
0

おそらく、プログラムでビデオを操作するための最良のツールはFFMpegです。wmvも含め、多くの形式をサポートしています。.netラッパーもあると思います。

于 2010-08-26T13:14:21.933 に答える