2011-06-21 39 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命令。