簡體   English   中英

ffmpeg將mov文件轉換為mp4,用於HTML5視頻標簽IE9

[英]ffmpeg convert mov file to mp4 for HTML5 video tag IE9

我在這里和谷歌到處都是 - 沒有適用於IE9的有效命令。 一些IE9如何丟失的東西。 我試過的所有其他工作在其他地方:chrome,safari,移動設備等......我想要一個可以轉換它的命令,我可以在每個設備中使用它,假設支持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文件,適用於chrome,safari等...甚至當我使用窗口媒體播放器在Windows中啟動它們時也能工作。 當我把這個文件放在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視頻轉換器將相同的mov文件轉換為mp4 - 它轉換得很好,我可以在IE9中播放它! miro轉換器也在其中使用embedd ffmpeg,所以我確信它只是一個正確的ffmpeg命令和參數的metter。 在我的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

我很長時間都在努力,所以任何幫助都會非常感激。

謝謝!

對於ffmpeg

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

您還可以添加-q:v / -q:a參數以指定視頻的質量。 您也可以使用HandBrake,這是一個比ffmpeg更簡單的編碼器。

對於HandBrake

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

編輯:我找到了解決方案! 這是一個帶有工作演示的ZIP,我在IE 9和Firefox上測試過!

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

此外,上面的演示有一個閃回后退,所以它應該適用於IE8及更少。

使用相同的ffmpeg命令。
編輯:我不得不重新上傳視頻,因為我的托管服務暫時停止。 現在它托管在mediafire上。 我發現它們是最好的文件共享服務。 最低廣告,無注冊,30秒等待。

另外,請在videojs網站上查看此討論: 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`

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預設設置:

如果使用libx264預設(使用-vpre標志),則需要執行以下設置。

  1. 為指向主目錄的用戶創建HOME環境變量。 (例如,對於Vista / 7/8 C:/ Users / moose或對於XP C:/ Documents and Settings / moose)
  2. 在主目錄中創建.ffmpeg文件夾
  3. 將預設文件從C:/ Program Files / ffmpeg / share / * .ffpreset復制到%HOME%/。ffmpeg
  4. 現在您可以打開命令提示符並使用ffmpeg。 :D(例如,這是我的Vimeo視頻轉換命令.fffeg -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"

來自orig鏈接...

ffmpeg 0.6及更高版本完全支持WebM。 在命令行上,運行不帶參數的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,請檢查你是否安裝了兩個版本。沒關系,它們不會相互沖突。你只需要使用支持VP8的ffmpeg版本的完整路徑。)

我打算做兩遍編碼。 傳遞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的選項,但我還不知道它們是如何工作的。 一旦我找到了對它們的一個很好的解釋,我會在這里將它鏈接起來並將它們納入敘述中,如果這樣做是值得的。

對於第二次傳遞,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

這里有五個重要參數:

  • -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音頻。

我花了很多時間試圖找出那個。 我終於找到了如何使用avconv(或ffmpeg)正確地做到這一點

  1. 使用H.264編解碼器將視頻轉換為MPEG4。 你不需要任何花哨的東西,只需讓avconv為你完成這項工作:

     avconv -i video.mp4 -vcodec libx264 pre_out.mp4 
  2. 將文件信息移動到文件頭,這樣瀏覽器就可以在開始下載后立即開始播放。 這是IE9的關鍵!

     qt-faststart pre_out.mp4 out.mp4 

qt-faststart是一種Quicktime實用程序,也支持H.264 / ACC文件格式。 它是libav-tools包的一部分。

我的問題是像素格式。

添加-pix_fmt yuv420p為我修復它在IE中。

前一段時間遇到同樣的問題,我成功解決了這個問題:

首先,如果你想進行一些實驗,請下載最新版本的ffmpeg(或從官方github存儲庫( https://github.com/FFmpeg/FFmpeg )構建)。

然后嘗試這個:

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

希望這會有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM