JavaScriptでビデオファイルの最初のフレームを画像として取得するにはどうすればよいですか?
5 に答える
コントロールも自動再生もなしで、ビデオタグをページに追加するだけです。
<video width="96" height="54" class="clip-thumbnail"> ... </video>
欠点は、ユーザーがサムネイルを右クリックし、コンテキスト メニューで [再生] を選択すると、ビデオを再生できることです。クリックイベントをリッスンしてキャンセルする(サムネイルからコンテキストメニューを削除する)小さなJavaScriptが必要になるのを避けるために。
Javascriptはこれを行うことができません。
前述のとおり、Javascript ではこれを行うことができません。
ビデオのサムネイルを作成する場合は、サムネイル サーバー側を作成し、他の画像と同じようにクライアントで画像を提供するだけです。
これを達成するために私が選んだ方法は、ffmpegデコーダーです。多数のファイル形式を処理でき、必要なことを実行できます。という名前のビデオがある場合は、次のhello.avi
ようにします。
ffmpeg -itsoffset -1 -i /path/to/hello.avi -vcodec mjpeg -vframes 1 -an -f rawvideo -s 200x150 /path/to/hello.jpg
このコマンド (パスとサイズを修正する...) を使用しているサーバー側の言語で実行すると、ビデオ ファイルのサムネイルが作成されます。
ビデオがユーザーによって選択されたファイルである場合<input type="file">
、FileReader API を使用して base-64 ビデオ データを取得できます。
https://developer.mozilla.org/en-US/docs/DOM/FileReader
そこから、ビデオをデコードし、javascript で単一のフレームを何らかの方法で選択してレンダリングするという非常に扱いにくい問題が残ります。または、ここに示すように、ビデオ全体を「サムネイル プレビュー」として含めることもできます (これが、これを行っている理由だと思いますか?)。
http://hacks.mozilla.org/2009/12/file-drag-and-drop-in-firefox-3-6/
ただし、最後の例の互換性や、より大きなビデオ ファイルでどれだけうまく機能するかについてはわかりません (URL の長さの制限に簡単にぶつかることができると聞きました)。