iPad不会使用HTML5呈现H.264视频

jgo*_*erg 9 html5 ffmpeg video-encoding ipad ios

我有一些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  
Run Code Online (Sandbox Code Playgroud)

持续时间: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
Run Code Online (Sandbox Code Playgroud)

使用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  
Run Code Online (Sandbox Code Playgroud)

持续时间: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,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
compatible_brands:M4VPM4A mp42isom
编码器:CoreMediaAuthoring 677,CoreMedia 420.17,i386

持续时间: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千字节/ s,25 fps,25 tbr,90k tbn,180k tbc

有人看到我编码视频的方式有问题吗?

编辑

起初我的理论是iPad对不同的容器格式很敏感; 但事实并非如此.我拍摄的视频在iPad上正确渲染并将其转换为.mov,它仍可在iPad上正常播放.因此,iPad如何处理基础H.264流一定存在问题.

jgo*_*erg 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

(或者,您可以在 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 即可。