私は cms を構築していて、ユーザーが動画をアップロードできるようにしたいのですが、動画のアップロードと変換に慣れていません。例はありますか、またはこのようなソリューションをコーディングした人はいますか? ffmpeg について聞いたことがありますが、asp.net と統合する方法がわかりません。
簡単な解決策として、クライアントに flv ファイルをアップロードさせることができますが、それでもその fvl からスクリーンショットを取得する必要があります。
ありがとう
私は cms を構築していて、ユーザーが動画をアップロードできるようにしたいのですが、動画のアップロードと変換に慣れていません。例はありますか、またはこのようなソリューションをコーディングした人はいますか? ffmpeg について聞いたことがありますが、asp.net と統合する方法がわかりません。
簡単な解決策として、クライアントに flv ファイルをアップロードさせることができますが、それでもその fvl からスクリーンショットを取得する必要があります。
ありがとう
著者の質問に答える:
ffmpegはサーバー側にインストールする必要がありますか、それともexeだけで十分ですか?
ffmpeg.exeで十分であり、インストールは必要ありません。
以下のコードは、変数でcaptureTime
指定されたビデオのスクリーンショットを取得videoFilename
し、パスに保存しimageFilename
ます。
Process ffmpeg = new Process();
ffmpeg.EnableRaisingEvents = true;
ffmpeg.StartInfo = new ProcessStartInfo
{
FileName = this.ffmpegPath,
Arguments = string.Format(
"-i \"{0}\" -an -y -s 320x240 -ss {1} -vframes 1 -f image2 \"{2}\"",
this.videoFilename,
DateTime.MinValue.Add(this.captureTime).ToString("HH:mm:ss:ff", CultureInfo.InvariantCulture),
this.imageFilename
),
WorkingDirectory = this.workingDirectory,
UseShellExecute = false,
RedirectStandardError = true,
RedirectStandardOutput = true,
WindowStyle = ProcessWindowStyle.Hidden
};
ffmpeg.Start();
ffmpeg.WaitForExit(this.timeout);
私は ffmpeg を使用しましたが、コンパイル済みの .exe バージョンを使用する方が簡単であることがわかりました。したがって、バックエンドでは、必要なコマンドライン引数を指定して ffmpeg.exe を起動して変換を実行し、変換が完了すると、完成したファイルの準備が整いました。
ずっと前の PHP4 時代に、次の方法を使用して、シェルで ffmpeg を呼び出し、スクリーンショットを作成しました。
/**
* Create a snapshot of a videofile and save it in jpeg format
*/
function snapshot($sourcefile,$destfile,$width=184,$height=138,$time=1){
$width=floor(($width)/2)*2;
$height=floor(($height)/2)*2;
exec("ffmpeg -i {$sourcefile} -s {$width}x{$height} -t 0.0001 -ss {$time} -f mjpeg {$destfile}");
}
サポートされているビデオ ファイルを $sourcefile として受け取ります。スクリーンショットの目的のファイルの場所は、$destfile パラメーターで指定できます。もちろん、指定された場所が実行ユーザーにとって書き込み可能であることを確認してください。
うまくいけば、これは正しい構文を探している他の人にも使用できます.