3

これが可能かどうかを見つけるのに問題があります(どこにも情報がありません)。動画のアップロード中にフレーム (サムネイル) を抽出することはできますか? ユーザー側を抽出できる場合は、jscript を使用した抽出もオプションです。

助けてくれてありがとう!

4

5 に答える 5

7

この質問が投稿されてからほぼ 5 年が経ち、答えはイエスです。

ライブデモ

JavaScript を使用して動画のアップロード中にフレームを抽出する方法

コードを表示する前に、次のことを行います。

  1. 動画をアップロードする入力要素にイベント ハンドラーを設定します。
  2. ファイル システムからファイルが選択されたら、URLオブジェクトを使用してローカル ビデオ ファイルへの URL を作成します。
  3. videoその URL を要素に読み込みます。
  4. ビデオがメモリに読み込まれたら、canvasオブジェクトにフレームを描画します。
  5. キャンバスにレンダリングされたフレームをimage要素にエクスポートします (または、必要に応じてその画像をデータ URL としてサーバーに送信します)。

<input type="file" id="upload"/>
<img id="thumbnail"/>

<script>
var input = document.getElementById('upload');
var img = document.getElementById('thumbnail');

input.addEventListener('change', function(event){
    var file = this.files[0];
    var url = URL.createObjectURL(file);

    var video = document.createElement('video');
    video.src = url;

    var snapshot = function(){
        var canvas = document.createElement('canvas');
        var ctx = canvas.getContext('2d');

        ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
        img.src = canvas.toDataURL('image/png');

        video.removeEventListener('canplay', snapshot);
    };

    video.addEventListener('canplay', snapshot);
});
</script>
于 2016-03-16T20:57:14.257 に答える
0

PHPでそれを行う良い方法はないと思います。( https://stackoverflow.com/a/1309425/1488032 )

レンタルしたウェブスペースだけでなく、サーバーに他のソフトウェアをインストールして実行する権利がある場合は、ffmpeg などを使用し、system()passthru()またはexec()を使用して php 内から呼び出すことをお勧めします。必要なものを抽出し、残りの処理を php で再度実行します。

xhtml に埋め込まれた svg 画像に依存するブラウザー ゲームを実行していますが、一部のブラウザー (特にモバイル ブラウザー) は完全な svg 構文をサポートしていません。この場合、このようなsystem()呼び出しを使用して、imagemagick の変換バイナリを使用して svg から png への変換を行い、結果を自分のページに表示します。

system("echo '$svgString' | convert svg:- png:- | base64");

似たようなものに戻る必要があると思います。

ffmpeg を使用したフレームの抽出に関する情報を次に示します: http://ubuntuforums.org/showthread.php?t=1141293

于 2012-06-29T12:40:32.947 に答える
0

まず、フレームを抽出するプログラムを選択する必要があります。これには ffmpeg が一般的に使用されます。何を選択しても、部分的なファイルの内容を処理できる必要があります。

php スクリプトは、ファイルのアップロード全体が完了するまで実行を開始しませんが、php は最近、ファイルのアップロード中に別のphp スクリプトを実行できるようにする機能を取得し、スクリプト データのアップロードを取得できるようになります (ファイル名は重要です)。あなたに興味があります)。 http://php.net/manual/en/session.upload-progress.php

次に、基本的には、アップロード処理スクリプトでアップロードされている一時ファイル名を使用して、監視スクリプトからフレームを抽出する外部プログラムを呼び出します。

要約すると、ファイルを にアップロードしますupload.phpmonitor.phpにアップロードされている一時ファイル名を取得しupload.php、フレームを抽出します。

于 2012-06-29T16:16:54.093 に答える
0

Javascript: いいえ。

アップロード中: いいえ。

アップロードしたら、はい。

「開発者」はコメントに正しいリンクを提供しましたが、ビデオをサーバーに保存してから、ffMpeg を実行して画像を取得する必要があります。ffMPEG はhttp://ffmpeg.org/download.htmlからダウンロードできます(自分でビルドする自信がない場合は、必要なビルドを入手してください。Linux と Windows のビルドがあります)。

ドキュメントはここにあります: http://ffmpeg.org/ffmpeg.htmlですが、http: //linuxers.org/tutorial/how-extract-images-video-using-ffmpegをつかむための少し読みやすいチュートリアルがあります画像。

注: 「phpFFMPEG」という名前の PHP 拡張機能がありますが、使用しないことをお勧めします。PHP で「exec()」を介して目的のコマンドを実行するだけです。ffMPEG は CPU コアごとに 1 回しか実行できないため、エラーの戻り値を確認してください。同時に 2 回試行すると失敗する可能性があります。アクションをキューに入れるか、失敗した場合は再試行してください。

于 2012-06-29T12:50:35.563 に答える