サーバーにアップロードされる前に、エンド ユーザーが自分のサイトにアップロードしたビデオ ファイルの解像度と期間を取得したいと考えています。このようにして、解像度と期間が要件を満たしているかどうかを確認したいと思います。多くの API を経て、それらはすべて、ビデオがサーバーにアップロードされた後にのみ、このメタデータ情報を提供します。私のサーバーはLinuxで実行されており、Java、Strutsを使用しています。動画ファイルがアップロードされる前にこの情報を提供する API はありますか?
3 に答える
Consider uploading, by AJAX, a small portion of the beginning of the file to the server side. In most file formats, 50-100 kbytes of data should be enough (and that number can be determined per file format; in FLV, AVI, MKV files even few kbytes should be enough). The server side can then use mediainfo, xuggle or plain ffmpeg to get the dimensions and duration, and accordingly allow or disallow the upload by the client.
HTML5 ファイル API を使用してファイルの一部のみを送信する方法のコード例を含むチュートリアルを次に示します。
HTML5 をサポートするブラウザーでは、MP4 パーサー ( mp4.jsなど) を使用してファイル ヘッダーを解析できます。
moov
ファイルのデュレーションを取得するには、ファイルのアトムを見つけ、その中にアトムを見つける必要がありますmvhd
。mvhd
秒単位の期間は、の Duration フィールドを TimeScale フィールドで 割ることによって計算できます。moov
解像度を取得するには、アトム内でビデオ トラックのアトムを見つける必要がありますtrak
(オーディオ トラックやその他のトラックに遭遇した場合は無視してください。通常、ファイルにはビデオ トラックが 1 つしかありません)tkhd
。幅と高さのフィールドがあります。
HTML5を使用して、クライアント側で(現在)サイズ(およびその他のいくつかのことですが、期間も解像度もありません)を確認できます:
http://www.html5rocks.com/en/tutorials/file/dndfiles/
と