トップ回答者
wmvファイルからJPEGファイルへ

質問
回答
-
ちょっと調べてみましたが、totojo さんが書かれている FFmpeg を使うのが簡単そうです。一応、以下の
コードで試してみましたが、wmv から直接 jpeg のサムネイルを作ることが可能でした(以前のバージョン
では flv からでないとサムネイルは作れなかったそうですが)。protected void btnUpload_Click(object sender, EventArgs e)
{
if (!FileUpload1.HasFile)
{
return;
}HttpPostedFile postedfile = FileUpload1.PostedFile;
string fullFilename = postedfile.FileName;
string filename = System.IO.Path.GetFileName(fullFilename);
string path = Page.Server.MapPath("~/FileUploadTest/");if (System.IO.File.Exists(path + filename))
{
return;
}
else
{
postedfile.SaveAs(path + filename);
string command = Page.Server.MapPath("~/Bin/") + "ffmpeg.exe";
string option = " -i " + path + filename + " -ss 1 -vframes 1 -f image2 " + path + filename + ".jpg";
System.Diagnostics.Process.Start(command, option);
}
}FFmpeg は以下のサイトで入手できます。
ただし、上記のサイトから入手できるのはソースですので、自分は以下のサイトから Windows 向けバイナリを
いただきました。テストでは、ここから入手した ffmpeg.exe と pthreadGC2.dll を使っています。i43z Technology News
http://i43z.com/- 回答としてマーク kyulove 2009年7月5日 12:04
-
パスを通す必要があるとか、wmv ファイルが存在しないとダメとか、基本的なことは理解されてい
るでしょうか。
まず、ダウンロードした ffmpeg.exe をコマンドラインから実行してみて、jpeg ファイルが作成され
ることを確認してください。
次に、先に私がアップしたコードをそのまま使って試してみてください。その際、ffmpeg.exe と
pthreadGC2.dll はアプリケーション・ルート直下に Bin フォルダを作ってその中に入れ、さらに
wmv ファイルと jpeg ファイルの格納用に FileUploadTest フォルダを作ってください。- 回答としてマーク kyulove 2009年7月5日 12:04
すべての返信
-
変換するソフトウェアだったり、
変換するソフトでいいのではないでしょうか。
次の URL には FFMPEG を使ってサムネイルを作る方法が紹介されています。
Image for uploaded .wmv file
http://social.microsoft.com/Forums/en-US/Offtopic/thread/0d77262e-92cf-493d-b54b-1029ac691239
こういう便利なツールを用いて簡単に済ますのがよろしいのではないでしょうか。 -
やりたいことは、
> 動画の最初の映像部分(1フレーム)をjpegファイルに変換して表示させたい
と理解していましたが、違うのでしょうか? それに間違いなければ、検索して見つけたツールを
使ってサムネイル(jpeg ファイル)を作れると思いますが・・・ひょっとして、 wmv ファイルをアップロードすると、自動的にそれからサムネイルを取得して表示
し、それをクリックすると wmv ファイルを再生するように当該ファイルへのリンクをはるような
ASP.NET のコントロールを探しています?残念ながら、そのような便利なコントロールは ASP.NET のライブラリにはないです(自分の知る
限りですが)。複数のコントロール、ライブラリ、プラグインなどを利用し、足りないところは自分でコードを書い
て、必要な機能を一つ一つ Web アプリに作り込んでいくほか手段はないと思います。サムネイルを作って、それを Web ページに貼り付けて、アップロードした wmv ファイルへのリ
ンクをはってはどうですか? サムネイルをクリックすると wmv ファイルがダウンロードされ、
Windows Media Player が立ち上がって動画が表示されるはずです。 -
ちょっと調べてみましたが、totojo さんが書かれている FFmpeg を使うのが簡単そうです。一応、以下の
コードで試してみましたが、wmv から直接 jpeg のサムネイルを作ることが可能でした(以前のバージョン
では flv からでないとサムネイルは作れなかったそうですが)。protected void btnUpload_Click(object sender, EventArgs e)
{
if (!FileUpload1.HasFile)
{
return;
}HttpPostedFile postedfile = FileUpload1.PostedFile;
string fullFilename = postedfile.FileName;
string filename = System.IO.Path.GetFileName(fullFilename);
string path = Page.Server.MapPath("~/FileUploadTest/");if (System.IO.File.Exists(path + filename))
{
return;
}
else
{
postedfile.SaveAs(path + filename);
string command = Page.Server.MapPath("~/Bin/") + "ffmpeg.exe";
string option = " -i " + path + filename + " -ss 1 -vframes 1 -f image2 " + path + filename + ".jpg";
System.Diagnostics.Process.Start(command, option);
}
}FFmpeg は以下のサイトで入手できます。
ただし、上記のサイトから入手できるのはソースですので、自分は以下のサイトから Windows 向けバイナリを
いただきました。テストでは、ここから入手した ffmpeg.exe と pthreadGC2.dll を使っています。i43z Technology News
http://i43z.com/- 回答としてマーク kyulove 2009年7月5日 12:04
-
たびたび貴重なご意見ありがとうございます。
SurferOnWww 様のご意見を参考にさせていただき、
下記のようにテストコードを入力しましたが、次のような
エラーが帰ってきます。
ffmpeg.exe と pthreadGC2.dll と動画ファイルは、
念のため、webサイトと同じ場所に置いております。
----テストコード-----
string filename = Server.MapPath(".") + "a.wmv";
if (System.IO.File.Exists(filename))
{
return;
}
else
{
string command = "ffmpeg.exe";
string option = " -i " + filename + " -ss 1 -vframes 1 -f image2" + filename + ".jpg";
System.Diagnostics.Process.Start(command, option);
}
----エラー内容-----
System.ComponentModel.Win32Exception はユーザー コードによってハンドルされませんでした。
Message="指定されたファイルが見つかりません。"
Source="System"
ErrorCode=-2147467259
NativeErrorCode=2
StackTrace:
場所 System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
場所 System.Diagnostics.Process.Start()
場所 System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
場所 System.Diagnostics.Process.Start(String fileName, String arguments)
場所 Default2.Button1_Click(Object sender, EventArgs e) 場所 d:\sample\Default2.aspx.cs:行 34
場所 System.Web.UI.WebControls.Button.OnClick(EventArgs e)
場所 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
場所 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
場所 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
場所 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
場所 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
----------------たびたび申し訳ありませんが、今一度アドバイスをお願い
できないでしょうか -
パスを通す必要があるとか、wmv ファイルが存在しないとダメとか、基本的なことは理解されてい
るでしょうか。
まず、ダウンロードした ffmpeg.exe をコマンドラインから実行してみて、jpeg ファイルが作成され
ることを確認してください。
次に、先に私がアップしたコードをそのまま使って試してみてください。その際、ffmpeg.exe と
pthreadGC2.dll はアプリケーション・ルート直下に Bin フォルダを作ってその中に入れ、さらに
wmv ファイルと jpeg ファイルの格納用に FileUploadTest フォルダを作ってください。- 回答としてマーク kyulove 2009年7月5日 12:04
-
開発者以前の問題として、一般ユーザーとしてコマンドの起動方法がわかってなさそうですよね。
別のアプローチとして、
Windows Explorerでファイルのサムネイル(縮小版)を表示する機能が提供されていますが、これは内部的にはCOMインターフェースとして開発者向けに提供されています。
そこでWMVのサムネイルを取得してみたんですが…エラーになりました(ぁ
Vistaからインターフェースが変わったとか何とか、でもJPEGに対しては取得できました…うーん。
IDLはあるもののTLBが提供されていないのでC#からアクセスするのも結構やっかいで、サンプルコードは諦めました。
ということで没案。