web-dev-qa-db-ja.com

ffmpeg movファイルをHTML5ビデオタグIE9のmp4に変換します

私はこことグーグルでどこでも見ました-IE9で動作する有効なコマンドはありません。 IE9が何かを失っている方法。私が試したすべては、クロム、サファリ、モバイルデバイスなど、どこでも機能しました...それを変換するコマンドが1つ必要であり、HTML5ビデオタグでmp4をサポートすると仮定して、すべてのデバイスで使用できます。

私はこのコマンドを使用します:

ffmpeg -i movie.mov -vcodec copy -acodec copy out.mp4
ffmpeg -i movie.mov -vcodec libx264 -vprofile high -preset slow -b:v 500k -maxrate 500k -bufsize 1000k -vf scale=-1:480 -threads 0 -acodec libvo_aacenc -b:a 128k -pix_fmt yuv420p outa.mp4
ffmpeg -i movie.mov -b:V 1500k -vcodec libx264 -preset fast -g 30 adel.mp4
ffmpeg -i movie.mov -acodec aac -strict experimental -ac 2 -ab 160k -vcodec libx264 -preset slow -f mp4 -crf 22 lamlam.mp4
ffmpeg -i movie.mov -acodec aac -strict experimental -ac 2 -ab 160k -vcodec libx264 -preset slow -profile:v baseline -level 30 -maxrate 10000000 -bufsize 10000000 -f mp4 -threads 0 adiel.mp4

など。このコマンドはすべて、クロム、サファリなどで動作する有効なmp4ファイルを生成し、ウィンドウメディアプレーヤーを使用してウィンドウ自体で起動しても動作します。 IE9でこのファイルをビデオタグ( http://videojs.com/ を使用しています)に配置すると、機能しません!

<div class="vidoco-content" style="margin-top: 20px;">
<video id="divVid" class="video-js vjs-default-skin vidoco-center" controls preload="none" width="600" height="400" poster="<?php echo(DOMAIN); ?>static/test.jpg">
    <source src="<?php echo(DOMAIN); ?>static/out.mp4" type="video/mp4" />
</video>

ソフトウェア miro video converter を使用して同じmovファイルをmp4に変換すると、問題なく変換され、IE9で再生できます! miroコンバーターもその中にffmpegを組み込んで使用しているので、正しいmpmpegコマンドとパラメーターの単なるメッターであると確信しています。 Apache htaccessでファイルの正しいMIMEタイプを設定しました。IE開発者ツールを見ると、本当に正しいことがわかります。

AddType audio/aac .aac
AddType audio/mp4 .mp4 .m4a
AddType audio/mpeg .mp1 .mp2 .mp3 .mpg .mpeg
AddType audio/ogg .oga .ogg
AddType audio/wav .wav
AddType audio/webm .webm

AddType video/mp4 .mp4 .m4v
AddType video/ogg .ogv
AddType video/webm .webm

私はこれに長い間苦労していますので、どんな助けでも大歓迎です。

ありがとう!

48
Adidi

ffmpegの場合:

ffmpeg -i {input}.mov -vcodec h264 -acodec aac -strict -2 {output}.mp4

-q:v/-q:aパラメーターを追加して、ビデオの品質を指定することもできます。また、ffmpegよりも簡単なエンコーダーであるHandBrakeを使用することもできます。

HandBrakeの場合:

handbrakecli -i {input}.mov -e x264 -E facc -o {output}.mp4

編集:私は解決策を見つけました! IE 9およびFirefox!

http://www.mediafire.com/download/kyavlpudybg0bc1/HTML5_video.Zip

また、上記のデモにはフラッシュフォールバックがあるため、IE8以下で動作します。

同じffmpegコマンドが使用されました。
編集:ホスティングサービスが現在停止しているため、動画を再アップロードする必要がありました。現在、mediafireでホストされています。彼らは最高のファイル共有サービスであることがわかりました。最小広告、登録なし、30秒待機なし。

また、videojs Webサイトでこのディスカッションをチェックしてください。 http://help.videojs.com/discussions/problems/1020-ffmpeg-command-produce-your-demonstration-video

非常に重要です! ローカルで実行しているときにビデオを許可するには、[アクティブコンテンツを許可する]ボタンをクリックしてください。

私が抱えている問題と私の解決策のビデオ: 上記の私のデモを参照してください。

テスト中に使用されるHTMLコード:

<!DOCTYPE html>
<html>
<body>

<video width="320" height="240" controls>
  <source src="movie.mp4" type="video/mp4">
  <source src="movie.ogg" type="video/ogg">
  Your browser does not support the video tag.
</video>

</body>
</html>

私はw3schoolsが提供する実際のテストビデオを分析し(IEで動作します)、ビデオをエンコードするためにHandBrakeを使用していることがわかりました。

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'movie.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42isomavc1
    creation_time   : 2010-05-11 10:32:06
    encoder         : HandBrake 0.9.4 2009112300
  Duration: 00:00:12.61, start: 0.000000, bitrate: 202 kb/s
    Chapter #0.0: start 0.000000, end 12.612000
    Metadata:
      title           :
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 320x240, 80 kb/s, 29.65 fps, 29.97 tbr, 90k tbn, 59.31 tbc
    Metadata:
      creation_time   : 2010-05-11 10:32:06
    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 115 kb/s
    Metadata:
      creation_time   : 2010-05-11 10:32:06
    Stream #0:2(und): Subtitle: mov_text (text / 0x74786574)
    Metadata:
      creation_time   : 2010-05-11 10:32:06`
91
MDTech.us_MAN

Ffmpegへの主な旅


最新のffmpegとそのプリセットをダウンロード http://www.ffmpeg.org/download.html

指示に従ってWindowsにFfmpeg Binaryをインストールします


手順:

  1. Arrozcru autobuildsページから最新のビルドを取得します
  2. C:/ Program Files/ffmpegにフォルダーを解凍します
  3. C:/ Program Files/ffmpeg/binをシステムのPATH環境変数に追加します

オプションのlibx264プリセットのセットアップ:

(-vpreフラグを使用して)libx264プリセットを使用する場合、次のセットアップを行う必要があります。

  1. ホームディレクトリを指すユーザーのHOME環境変数を作成します。 (例:Vista/7/8 C:/ Users/mooseまたはfor XP C:/ Documents and Settings/moose)
  2. ホームディレクトリに.ffmpegフォルダーを作成します。
  3. C:/ Program Files/ffmpeg/share/*。ffpresetから%HOME%/。ffmpegにプリセットファイルをコピーします
  4. これで、コマンドプロンプトを開き、ffmpegを使用できます。 :D(たとえば、これは私のVimeoビデオ変換コマンドです。ffmpeg-i input.mov -vcodec libx264 -vpre hq -crf 24 -g 25 -acodec libmp3lame -ab 192k -ar 44100 output.mp4)
    *注:libfaacは非フリープラグインと見なされるため、libfaacはビルドに含まれません。

WindowsでHOME環境変数を設定することを忘れないでください

  1. 環境変数フォルダーの下のプリセットをコピーします
  2. Ffmpegを使用して変換するには、次のコマンドを使用する必要があります。

mp4(H.264/ACC)の場合:

ffmpeg -i INPUTFILE -b 1500k -vcodec libx264 -vpre slow -vpre baseline -g 30 "OUTPUTFILE.mp4"

webm(VP8/Vorbis)の場合:

ffmpeg -i "INPUTFILE"  -b 1500k -vcodec libvpx -acodec libvorbis -ab 160000 -f webm -g 30 "OUTPUTFILE.webm"

ogv(Theora/Vorbis)の場合:

ffmpeg -i "INPUTFILE" -b 1500k -vcodec libtheora -acodec libvorbis -ab 160000 -g 30 "OUTPUTFILE.ogv"
11
7-isnotbad

元のリンクから...

WebMは、ffmpeg 0.6以降で完全にサポートされています。コマンドラインで、パラメーターなしでffmpegを実行し、VP8サポートを使用してコンパイルされたことを確認します。

you@localhost$ ffmpeg
FFmpeg version SVN-r23197, Copyright (c) 2000-2010 the FFmpeg developers
built on May 19 2010 22:32:20 with gcc 4.4.3
configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-postproc 
--enable-pthreads --enable-libfaac --enable-libfaad --enable-libmp3lame 
--enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora 
--enable-libx264 --enable-libxvid --enable-x11grab --enable-libvorbis 
--enable-libvpx

魔法の言葉「--enable-libvorbis」および「--enable-libvpx」ffmpegの正しいバージョンがありません。 (ffmpegを自分でコンパイルした場合は、2つのバージョンがインストールされているかどうかを確認してください。それらは互いに競合しません。VP8対応バージョンのffmpegのフルパスを使用するだけです。)

2パスエンコードを行います。 1を渡すだけで、入力ビデオファイル(-i pr6.dv)をスキャンし、ログファイル(pr6.dv-0.logという名前が自動的に付けられます)に統計情報を書き出します。 -vcodecパラメーターを使用してビデオコーデックを指定します。

you@localhost$ ffmpeg -pass 1 -passlogfile pr6.dv -threads 16  -keyint_min 0 -g 250 -skip_threshold 0 -qmin 1 -qmax 51 -i pr6.dv -vcodec libvpx -b 614400 -s 320x240 -aspect 4:3 -an -y NUL

Ffmpegコマンドラインのほとんどは、VP8またはWebMとは関係ありません。 libvpxは、ffmpegに渡すことができるVP8固有のオプションを多数サポートしていますが、どのように機能するかはまだわかりません。それらの適切な説明を見つけたら、ここにリンクし、説明する価値がある場合は物語に組み込みます。

2回目のパスでは、ffmpegは最初のパスで書き込んだ統計を読み取り、実際にビデオとオーディオのエンコードを行います。 .webmファイルを書き出します。

you@localhost$ ffmpeg -pass 2 -passlogfile pr6.dv -threads 16  -keyint_min 0 -g 250 -skip_threshold 0 -qmin 1 -qmax 51 -i pr6.dv -vcodec libvpx -b 614400 -s 320x240 -aspect 4:3 -acodec libvorbis -y pr6.webm

ここには5つの重要なパラメーターがあります。

  • -vcodec libvpxは、VP8ビデオコーデックでエンコードすることを指定します。 WebMは常にVP8ビデオを使用します。
  • -b 614400はビットレートを指定します。他の形式とは異なり、libvpxはキロビットではなく実際のビットでビットレートを想定しています。 600 kbpsのビデオが必要な場合は、600に1024を掛けて614400を取得します。
  • -s 320x240は、ターゲットのサイズ、高さによる幅を指定します。
  • -aspect 4:3は、ビデオのアスペクト比を指定します。通常、標準解像度のビデオは4:3ですが、ほとんどの高解像度ビデオは16:9または16:10です。私のテストでは、ffmpegに依存して自動検出するのではなく、コマンドラインで明示的に指定する必要があることがわかりました。
  • -acodec libvorbisは、Vorbisオーディオコーデックでエンコードすることを指定します。 WebMは常にVorbisオーディオを使用します。
4
Robert Rowntree

私の問題はピクセルの書式設定でした。

-pix_fmt yuv420pを追加すると、IEで修正されました。

1
max kaplan

私はそれを理解しようとして何時間も費やしました。私はついにavconv(またはffmpeg)を使用してこれを適切に行う方法を見つけました

  1. H.264コーデックを使用してビデオをMPEG4に変換します。特別なものは必要ありません。avconvに任せてください。

    avconv -i video.mp4 -vcodec libx264 pre_out.mp4
    
  2. ファイル情報をファイルヘッダーに移動すると、ブラウザはダウンロードを開始するとすぐに再生を開始できます。これIS IE9の鍵!!!

    qt-faststart pre_out.mp4 out.mp4
    

qt-faststartは、H.264/ACCファイル形式もサポートするQuicktimeユーティリティです。 libav-toolsパッケージの一部です。

1
Gael Lafond

少し前に同じ問題を抱えていましたが、次のようにして正常に解決しました。

最初に、最新バージョンのffmpegをダウンロードします(または、実験を行う場合は、公式のgithubリポジトリからビルドします( https://github.com/FFmpeg/FFmpeg ))。

それからこれを試してください:

ffmpeg -i input.mov -c:v libx264 -c:a libfaac -strict experimental output.mp4

これが役立つことを願っています!

0
enzo.rivello