2011-06-21 69 views
7

我有一些H.264編碼的視頻,它們在Web瀏覽器中正確呈現HTML5,但不能在iPad上正確呈現。當我使用我從互聯網上下載的H.264視頻時,我的視頻在iPad上正確呈現,因此它不是HTML問題。iPad無法渲染帶有HTML5的H.264視頻

這裏是關於我的視頻ffmpeg的信息 -

我原來的.mov影片:

似乎流1編解碼器的幀速率不同於容器幀速率:6000.00(1分之6000) - > 30.00(30/1)

輸入#0,MOV,MP4,M4A,3GP,3G2,MJ2,從 'a_video.mp4':

元數據:

major_brand  : qt 
minor_version : 537199360 
compatible_brands: qt 

時間:00:00:42.74,啓動:0.000000,比特率:220 kb/s的

Stream #0.0(eng): Audio: aac, 44100 Hz, stereo, s16, 94 kb/s 
Stream #0.1(eng): Video: h264, yuv420p, 762x464, 122 kb/s, 30 fps, 30 tbr, 3k tbn, 6k tbc 

使用手剎我的.MOV轉換爲MP4,但不會對渲染後ipad公司:

似乎流的編解碼器0的幀速率從容器幀速率不同:180000.00(1分之180000) - > 29.97(30000/1001)

輸入#0,MOV,MP4,M4A,3GP, 3g2,mj2,來自'a_video.m4v':

元數據:

major_brand  : mp42 
minor_version : 0 
compatible_brands: mp42isomavc1 
encoder: HandBrake 0.9.5 2011010300 

時間:00:00:42.77,啓動:0.000000,比特率:169 kb/s的

流#0.0(UND):視頻:H264,YUV420P,752x464 [ PAR 381:376 DAR 381:232],35kb/s,PAR 145161:141376 DAR 145161:87232,29.97 fps,29.97 tbr,90k tbn,180k tbc
流#0.1(eng):音頻:aac,44100Hz ,立體聲,s16,128kb/s

這裏是的.mp4我在網上找到,其不會對iPad渲染:

似乎流1編解碼幀速率從容器幀速率不同:180000.00(1分之180000) - > 25.00(25/1)

輸入# 0,MOV,MP4,M4A,3GP,3G2,MJ2,從 'a_video_3_emu.mp4':

元數據: major_brand:M4VP
minor_version:1個
compatible_brands:M4VPM4A mp42isom
編碼器:CoreMediaAuthoring 677,CoreMedia 420.17,i38 6

時間:00:01:38.01,啓動:0.000000,比特率:1023 kb/s的

流#0.0(UND):音頻:AAC,32000赫茲,單聲道,S16,97 kb/s的
流#0。1(UND):視頻:H264,YUV420P,小480x360 [PAR 1:1 DAR 4:3],914 kb/s的,每秒25幀,25 TBR,90K TBN,180K TBC

有誰看到一些錯與我編碼我的視頻的方式?

編輯

起初,我的理論是,iPad的是不同的容器格式敏感的;但似乎並非如此。我拍了一段在iPad上正確渲染並將其轉換爲.mov的視頻,並且它仍然仍在在iPad上正確播放。所以iPad在處理底層H.264數據流方面肯定有問題。

+0

查看桌面瀏覽器頁面時是否MP4的工作? – Niklas

+0

是的。這隻發生在iPad上。它與mp4和m4v有關。 -acodec複製-vcodec MPEG4 output.mp4的ffmpeg -i a_video_3_emu.mp4: – jgoldberg

+0

我只是在視頻中並在iPad上呈現運行此命令。 output.mp4仍然適用於iPad。看起來它可能不是一個容器問題,而是底層流。 – jgoldberg

回答

3

如果您擁有H.264視頻流 - 無論容器(mov,m4v,mp4)如何 - 並且您的HTML5視頻在Web瀏覽器中呈現,但不在iPad上呈現,則有兩種可能修復:

第一個解決方案是將H.264視頻流轉換爲mpeg4。

ffmpeg -i video_h264_not_working.mov -acodec copy -vcodec mpeg4 video_mpeg.mov

(或者,也可以在選擇手剎MPEG4代替H.264。)

第二種解決方案是重新處理H.264視頻使用以下參數:

ffmpeg -i video_h264_not_working.mov -vcodec libx264 -r 25 -b 516k -bt 516k -crf 22 -vpre normal video_h264.mov

第二種解決方案來自:http://houseoflaudanum.com/navigate/howtos/html5-video-no-webm/

我猜在前一種情況下,mpeg4編解碼器在iPad上更加輕鬆;而在後一種情況下,iPad不喜歡來自原始H.264編碼的一些流參數,因此「清潔」是必要的。

要確定您的視頻流實際上是,只是做的ffmpeg -i myvideo.mov。

1

Mark Pilgrim的Video on the Web section of Dive Into HTML5推薦使用免費的Miro Video Converter(OS X,Windows)編碼和轉碼HTML5視頻。

Miro視頻轉換器可以將幾乎任何視頻文件轉換爲MP4,Theora或MP3(僅音頻)。它具有預設功能,可將視頻轉換爲流行手機,iPod和其他媒體播放器的正確尺寸和格式。只需轉換您的視頻並將其複製到您的設備。

這是一個超級簡單的方法,可以將幾乎任何視頻轉換爲MP4,WebM(vp8),Ogg Theora或Android,iPhone等等。你會感覺很好,它也是100%免費且開源的。

另一個名副其實的視頻轉換工具是Video Monkey,這是一款專門用於Mac的免費視頻編碼應用程序。它是在偉大工具Visual Hub消失後創建的。 Video Monkey從Visual Hub視頻轉換工具中大量借用,從概念上以及從原始代碼轉儲作爲TranscoderRedux發佈到SourceForge。

+0

我有同樣的問題。米羅不工作。實際上,當我將.wmv轉換爲.webm以與Chrome一起使用時,它會崩潰。 (僅供參考:手剎和VLC也不適用於iPad,但兩者都可以製作各種格式的視頻) – Bobby

0

sudo port install ffmpeg和嘗試這個祕密武器:

#!/bin/bash 
BR=512k 
WIDTH=640 
HEIGHT=272 
input=${1} 

# strip off the file extension 
output=$(echo ${input} | sed 's/\..*//') 

# works for most videos 
ffmpeg -y -i ${input} -f mpegts -acodec libmp3lame -ar 48000 -ab 64k -s ${WIDTH}x${HEIGHT} -vcodec libx264 -b ${BR} -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -subq 7 -trellis 0 -refs 0 -coder 0 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 200k -maxrate ${BR} -bufsize ${BR} -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6 -qmin 30 -qmax 51 -qdiff 4 -level 30 -aspect ${WIDTH}:${HEIGHT} -g 30 -async 2 ${output}-iphone.ts 

調整寬度和高度,以原始視頻,並設置比特率,你認爲合適。將原始視頻作爲參數傳遞給腳本。幾乎可以使用任何源格式。您需要macports作爲port命令。