iPad无法使用HTML5渲染H.264视频

| 我有一些H.264编码的视频,它们可以在Web浏览器中以HTML5正确呈现,但是在iPad上却不能正确呈现。当我使用从互联网下载的H.264视频时,我的视频可以在iPad上正确呈现,因此这不是HTML问题。 这是有关我的视频的ffmpeg信息- 我的原始.mov视频:   似乎流1编解码器的帧速率与容器的帧速率不同:6000.00(6000/1)-> 30.00(30/1)      从\'a_video.mp4 \'输入#0,mov,mp4,m4a,3gp,3g2,mj2:      元数据:
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
使用Handbrake将我的.mov转换为mp4之后,却无法在iPad上呈现:   似乎流0编解码器的帧速率与容器的帧速率不同:180000.00(180000/1)-> 29.97(30000/1001)      从\'a_video.m4v \'输入#0,mov,mp4,m4a,3gp,3g2,mj2:      元数据:
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],35 kb / s,PAR 145161:141376 DAR 145161:87232、29.97 fps,29.97 tbr,90k tbn,180k tbc      流#0.1(eng):音频:aac,44100 Hz,立体声,s16、128 kb / s 这是我在网上找到的.mp4,可在iPad上进行渲染:   似乎流1编解码器的帧速率与容器的帧速率不同:180000.00(180000/1)-> 25.00(25/1)      从\'a_video_3_emu.mp4 \'输入#0,mov,mp4,m4a,3gp,3g2,mj2:      元数据:      major_brand:M4VP      minor_version:1      兼容品牌:M4VPM4A mp42isom      编码器:CoreMediaAuthoring 677,CoreMedia 420.17,i386      持续时间:00:01:38.01,开始:0.000000,比特率:1023 kb / s      流#0.0(und):音频:aac,32000 Hz,单声道,s16,97 kb / s      流#0.1(und):视频:h264,yuv420p,480x360 [PAR 1:1 DAR 4:3],914 kb / s,25 fps,25 tbr,90k tbn,180k tbc 有人认为我的视频编码方式有问题吗? 编辑 起初,我的理论是iPad对不同的容器格式很敏感。但事实并非如此。我拍了一段能在iPad上正确呈现的视频,并将其转换为.mov,但仍可以在iPad上正确播放。因此,iPad如何处理基础H.264流必定存在问题。     
已邀请:
        如果您具有H.264视频流(无论使用哪个容器(mov,m4v,mp4)),并且您的HTML5视频在网络浏览器中呈现但不在iPad上呈现,则有两种可能的解决方法: 第一种解决方案是将H.264视频流转换为mpeg4。
ffmpeg -i video_h264_not_working.mov -acodec copy -vcodec mpeg4 video_mpeg.mov
(或者,您可以在Handbrake中选择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。     
        按照Mark Pilgrim的Dive Into HTML5的“ Web上的视频”部分中的建议,我已经使用免费的Miro Video Converter(OS X,Windows)对HTML5视频进行编码和转码,取得了巨大的成功。 Miro Video Converter几乎可以将任何视频文件转换为MP4,Theora或MP3(仅音频)。它具有预设,可以将视频转换为适用于流行电话,iPod和其他媒体播放器的正确尺寸和格式。只需转换视频并将其复制到设备即可。 这是将几乎所有视频转换为MP4,WebM(vp8),Ogg Theora或Android,iPhone等的超级简单方法。您也会感到它100%免费和开源。 另一个名副其实的视频转换实用程序是Video Monkey,它是Mac专用的免费视频编码应用程序。它是在伟大的工具Visual Hub消亡之后创建的。 Video Monkey在概念上以及从作为TranscoderRedux发布到SourceForge的原始代码转储中,都从Visual Hub视频转换工具中大量借用。     
        
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命令。     

要回复问题请先登录注册