入力動画から1フレームを取得する機能を実装したいので、サムネイルとして使用できます。
これらの線に沿った何かが機能するはずです:
// filename examples: "test.avi", "test.dvr-ms"
// position is from 0 to 100 percent (0.0 to 1.0)
// returns a bitmap
byte[] GetVideoThumbnail(string filename, float position)
{
}
誰かが.Net3.0でこれを行う方法を知っていますか?
正しい解決策は、この関数の「最良の」実装です。空白フレームの選択を回避するためのボーナスポイント。
私は自分のスタンドアロンクラスを(私が説明した単一のメソッドで)ロールすることになりました。ソースは ここで表示 になります。 メディアブラウザは GPLですが、そのファイル用に作成したコードがパブリックドメインであることに満足しています。 directshow.net プロジェクトからの相互運用機能を使用するため、コードのその部分をクリアする必要があることに注意してください。
このクラスはDVR-MSファイルでは機能しません。それらにはDirectShowフィルターを挿入する必要があります。
このプロジェクトは、AVIのトリックを実行します: http://www.codeproject.com/KB/audio-video/avifilewrapper.aspx
他のフォーマットなら、directshowを調べるかもしれません。役立つ可能性のあるプロジェクトがいくつかあります。
http://sourceforge.net/projects/directshownet/
http://code.google.com/p/slimdx/
1- ffmpeg.exeの最新バージョンを次の場所から入手します: http://ffmpeg.arrozcru.org/builds/
2-ファイルを抽出し、ffmpeg.exeをWebサイトにコピーします
3-このコードを使用します:
Process ffmpeg;
string video;
string thumb;
video = Server.MapPath("first.avi");
thumb = Server.MapPath("frame.jpg");
ffmpeg = new Process();
ffmpeg.StartInfo.Arguments = " -i "+video+" -ss 00:00:07 -vframes 1 -f image2 -vcodec mjpeg "+thumb;
ffmpeg.StartInfo.FileName = Server.MapPath("ffmpeg.exe");
ffmpeg.Start();
www.mitov.com に役立つライブラリがいくつかあります。これはDirectshow機能の一般的なラッパーであり、デモの1つはビデオファイルからフレームを取得する方法を示していると思います。