首页 文章

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

提问于
浏览
9

我有一些H.264编码的视频,它们在Web浏览器中正确呈现HTML5,但无法在iPad上正确呈现 . 当我使用从互联网上下载的H.264视频时,我的视频在iPad上正确呈现,因此它不是HTML问题 .

这是关于我的视频的ffmpeg信息 -

我原来的.mov视频:

似乎流1编解码器帧速率与容器帧速率不同:6000.00(6000/1) - > 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流#0.0(eng):音频:aac,44100 Hz,立体声,s16,94 kb / s
流#0.1(eng):视频: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)输入#0,mov,mp4,m4a,3gp,3g2,mj2,来自'a_video.m4v':元数据:major_brand:mp42
minor_version:0
compatible_brands:mp42isomavc1
编码器: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 Stream#0.1(eng):音频:aac,44100 Hz,立体声,s16,128 kb / s

这是我在网上找到的.mp4,可在iPad上呈现:

似乎流1编解码器帧速率与容器帧速率不同:180000.00(180000/1) - > 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,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

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

Edit

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

3 回答

  • 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 .

  • 0

    我使用Mark Pilgrim在Video on the Web section of Dive Into HTML5中推荐的免费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从Visual Hub视频转换工具中大量借用,从概念上和从作为TranscoderRedux发布到SourceForge的原始代码转储中借用 .

  • 1

    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命令 .

相关问题