无法在Silverlight中的某些H.264视频中搜索超出下载的数据

时间:2011-01-17 17:20:38

标签: silverlight iis-7 ffmpeg video-streaming video-encoding

我目前正在开发的项目是使用基于Silverlight的播放器来流式传输通过WME编码的wmv视频。 但是我们希望将来能够从Silverlight转移到HTML5中的视频标签,因此我们需要在mp4容器中将视频编码为H.264。

一切都很好,除了小问题之外,不可能超越已经下载的内容,至少不是低质量的编码。 我们的测试文件之一是HD wmv视频,我们使用FFmpeg编码低至2 Mbit,1 Mbit和0.5 Mbit,并使用mp4box对moov原子进行重新排序。

在2和1 Mbit编码中,Silverlight MediaElement可以识别超出我们所希望下载的内容,并请求视频数据并从搜索点开始播放。
但是,如果没有发生0.5 Mbit视频,而视频会在正常下载视频时冻结。

使用来自Youtube的低质量H.264视频,所以我不知道FFmpeg的参数是否是问题或其他原因。

这是编码命令行:

ffmpeg -y -i fooHD.wmv -an                               -vcodec libx264 -vpre slow -level 41 -b 2000k -bufsize 20000k -maxrate 25000k -g 250 -coder 1 -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -flags2 +dct8x8+bpyramid -me_method umh -subq 7 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -rc_eq 'blurCplx^(1-qComp)' -bf 16 -b_strategy 1 -bidir_refine 1 -refs 6 -deblockalpha 0 -deblockbeta 0 -threads 0 -pass 1 -f rawvideo nul
ffmpeg -y -i fooHD.wmv -acodec libfaac -ar 44100 -ab 96k -vcodec libx264 -vpre slow -level 41 -b 2000k -bufsize 20000k -maxrate 25000k -g 250 -coder 1 -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -flags2 +dct8x8+bpyramid -me_method umh -subq 7 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -rc_eq 'blurCplx^(1-qComp)' -bf 16 -b_strategy 1 -bidir_refine 1 -refs 6 -deblockalpha 0 -deblockbeta 0 -threads 0 -pass 2 bar2000k.mp4
ffmpeg -y -i fooHD.wmv -acodec libfaac -ar 44100 -ab 96k -vcodec libx264 -vpre slow -level 41 -b 1000k -bufsize 20000k -maxrate 25000k -g 250 -coder 1 -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -flags2 +dct8x8+bpyramid -me_method umh -subq 7 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -rc_eq 'blurCplx^(1-qComp)' -bf 16 -b_strategy 1 -bidir_refine 1 -refs 6 -deblockalpha 0 -deblockbeta 0 -threads 0 -pass 2 bar1000k.mp4
ffmpeg -y -i fooHD.wmv -acodec libfaac -ar 44100 -ab 96k -vcodec libx264 -vpre slow -level 41 -b 500k -bufsize 20000k -maxrate 25000k -g 250 -coder 1 -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -flags2 +dct8x8+bpyramid -me_method umh -subq 7 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -rc_eq 'blurCplx^(1-qComp)' -bf 16 -b_strategy 1 -bidir_refine 1 -refs 6 -deblockalpha 0 -deblockbeta 0 -threads 0 -pass 2 bar500k.mp4

mp4box.exe -inter bar2000k.mp4
mp4box.exe -inter bar1000k.mp4
mp4box.exe -inter bar500k.mp4

fooHD.wmv长2:17,运行速度为8 Mbit / s @ 29.97 fps。

1 个答案:

答案 0 :(得分:0)

我的问题很快就出现了与缺少关键帧有关的问题,但我看到-g 250用于所有编码设置。然而,根据编码器在低带宽下使用I帧设置快速和松散的一些过去问题,我仍然建议回读I帧/关键帧统计数据,看看你的500k文件是否没有按照你要求的方式进行编码。