MediaSourceAPIを使用しています...
これは上記のフォールバックとは関係がないことは理解していますが、MP4ビデオが適切にエンコードされていれば、webmへのフォールバックは必要ないことを指摘することが重要だと思います。
MP4ビデオは、ファイル全体のダウンロードが完了する前にビデオを利用可能にするチャンクのダウンロードを可能にするMediaSourceAPIをサポートするようにエンコードすることもできます。
MP4実装はより広く使用されており、ほとんどのブラウザーでwebmフォールバックを必要としません。
MediaSourceAPI のビデオ形式のサポートを示すグラフはこちら。
FFmpegはこれとそのオープンソースを行います。
以下を参照してください:( FFmpegを使用してMediaElement.jsのh.264およびWebMビデオをエンコードします):
Chris Coulsonの書き込み: 2012年6月14日(Windows)
最近、クライアントのサイトにビデオプレーヤーを追加しました。John DyerのMediaElement.jsは、これを行うための優れたソリューションであることがわかりました。ビデオのh.264とWebMでエンコードされたバージョンの両方を提供する限り、ほとんどすべてのブラウザーでネイティブに再生されます。サポートされていないブラウザの場合は、Flashにフォールバックします。
クライアントのビデオはすべてwmvであったため、h.264とWebMに変換する必要があります。幸いなことに、ジョンはFFmpegを使用してこれらのフォーマットにエンコードするためのいくつかの指示も提供しました。
http://johndyer.name/ffmpeg-settings-for-html5-codecs-h264mp4-theoraogg-vp8webm/
残念ながら、コマンドが公開されてからFFmpegが変更されたため、若干の変更が必要でした。また、ビデオのアスペクト比が維持され、ビデオをより低いビットレートとより速い速度でエンコードするように、いくつかの変更を加えました。また、変換されるビデオの一部は非常に短く、サムネイルが作成される10秒のマークの前に終了していました。この問題を解決するために、スクリプトを変更して、1、2、3、5、および10秒のマークでサムネイルをキャプチャし、キャプチャが成功するたびに最後のマークを上書きしようとしました。
これが私が使用した更新されたバッチファイルです:
REM mp4 (H.264 / AAC)
"c:\program files\ffmpeg\bin\ffmpeg.exe" -y -i %1 -vcodec libx264 -pix_fmt yuv420p -vprofile high -preset fast -b:v 500k -maxrate 500k -bufsize 1000k -vf scale=trunc(oh*a/2)*2:480 -threads 0 -acodec libvo_aacenc -b:a 128k %1.mp4
REM webm (VP8 / Vorbis)
"c:\program files\ffmpeg\bin\ffmpeg.exe" -y -i %1 -vcodec libvpx -quality good -cpu-used 5 -b:v 500k -maxrate 500k -bufsize 1000k -vf scale=trunc(oh*a/2)*2:480 -threads 0 -acodec libvorbis -f webm %1.webm
REM jpeg (screenshot at 10 seconds, but just in case of a short video - take a screenshot earlier and overwrite)
"c:\program files\ffmpeg\bin\ffmpeg.exe" -y -i %1 -ss 1 -vframes 1 -r 1 -vf scale=trunc(oh*a/2)*2:480 -f image2 %1.jpg
"c:\program files\ffmpeg\bin\ffmpeg.exe" -y -i %1 -ss 2 -vframes 1 -r 1 -vf scale=trunc(oh*a/2)*2:480 -f image2 %1.jpg
"c:\program files\ffmpeg\bin\ffmpeg.exe" -y -i %1 -ss 3 -vframes 1 -r 1 -vf scale=trunc(oh*a/2)*2:480 -f image2 %1.jpg
"c:\program files\ffmpeg\bin\ffmpeg.exe" -y -i %1 -ss 5 -vframes 1 -r 1 -vf scale=trunc(oh*a/2)*2:480 -f image2 %1.jpg
"c:\program files\ffmpeg\bin\ffmpeg.exe" -y -i %1 -ss 10 -vframes 1 -r 1 -vf scale=trunc(oh*a/2)*2:480 -f image2 %1.jpg
また、特定のディレクトリ内のすべてのwmvを反復処理し、各ファイルに対してエンコーダバッチを実行する個別のバッチファイルを作成しました。
for /r %1 %%i in (*.wmv) do "c:\program files\ffmpeg\CreateWebVideos.bat" %
Faron Coderのコメント:2014年9月3日午後6時52分(* nix)
こんにちは– </ p>
unixベースのffmpegを使用している人のために–これはunixの名前の作者のコード(上記)に対応するものです。
ffmpeg -y -i $fileid -vcodec libx264 -pix_fmt yuv420p -vprofile high -preset fast -b:v 500k -maxrate 500k -bufsize 1000k -vf “scale=trunc(oh*a/2)*2:480″ -threads 0 -acodec libvo_aacenc -b:a 128k “$file.mp4″ < /dev/null
ffmpeg -y -i $fileid -vcodec libvpx -quality good -cpu-used 5 -b:v 500k -maxrate 500k -bufsize 1000k -vf "scale=trunc(oh*a/2)*2:480" -threads 0 -acodec libvorbis -f webm "$file.webm" < /dev/null
ffmpeg -y -i $fileid -ss 1 -vframes 1 -r 1 -vf "scale=trunc(oh*a/2)*2:480" -f image2 "$file.jpg" < /dev/null
ffmpeg -y -i $fileid -ss 2 -vframes 1 -r 1 -vf "scale=trunc(oh*a/2)*2:480" -f image2 "$file.jpg" < /dev/null
ffmpeg -y -i $fileid -ss 3 -vframes 1 -r 1 -vf "scale=trunc(oh*a/2)*2:480" -f image2 "$file.jpg" < /dev/null
ffmpeg -y -i $fileid -ss 5 -vframes 1 -r 1 -vf "scale=trunc(oh*a/2)*2:480" -f image2 "$file.jpg" < /dev/null
ffmpeg -y -i $fileid -ss 10 -vframes 1 -r 1 -vf "scale=trunc(oh*a/2)*2:480" -f image2 "$file.jpg" < /dev/null
お役に立てば幸いです。