【原创】P2P-NEXT测试结论和遗留问题

目前P2P-NEXT的测试环境已经搭建好,并进行了测试。

已经测试过的点: 
1.通过VLC模拟的直播源发送直播流到一个直播流转换工具(转成BT支持的格式)进行相应转换,产生用于直播的文件(其中包括加入该直播流的.tstream种子文件) 
2.多台机器均运行P2P-MEXT的PC客户端,读取种子文件即可加入该直播流 
3.同时可以在WEB服务器上编译HTML5代码,实现通过P2P方式传输直播流 


【测试结果】( --> 代表格式转换 ) 

1.ogg --> mp4(H.264+MP3) 
无法正常播放 
[mp3 @ 09028240] Header missing 
[mp3 @ 09028240] Header missing 
ogg.mp4 DLSTATUS_DOWNLOADING  1.40% None up     0.00KB/s down    52.68KB/s 
videoplay: gui_vod_event: resume 
videoplay: gui_vod_event: resume 
videoplay: gui_vod_event: pause 


2.ogg --> webm(VP80+Vorbis) 
无法正常播放 
[aac @ 090bcde0] More than one AAC RDB per ADTS frame is not implemented. Update your Libav version to the newest one from 
 the problem still occurs, it means that your file has a feature which has not been implemented. 
[aac @ 090bcde0] Error decoding AAC frame header. 


3.ogg --> ts(h.264+mp3) 
能非常流畅且清晰的播放(平均下载速度达到100k/s以上,转码机器CPU负载vlc占用10%-30%左右) 


4.ogg --> ts(Dirac+mp3) 
能播放,但是图像不清晰,卡顿现象较严重(平均下载速度30k/s--60k/s,转码机器CPU负载vlc占用20%-30%左右) 


5.ogg --> ogg(Theora+Vorbis) 
能比较流畅且比较清晰的播放,偶尔卡顿(平均下载速度达到70k/s-100k/s以上,转码机器CPU负载vlc占用10%-30%左右) 


6.ogg --> ogg(Theora+Flac) 
无法正常播发 
[09021788] theora decoder error: this bitstream does not contain Theora video data 


7.ogg --> ts(mpeg-2+mpga) 
能非常流畅且比较清晰的播放,(平均下载速度达到100k/s以上,转码机器CPU负载vlc占用10%-20%左右) 


8.ogg --> ASF(WMV+WMA) 
无法播放 
authstream: seek: Ignoring seek 0 in live 
videoplay: gui_vod_event: pause 
videoplay: gui_vod_event: resume 
videoplay: gui_vod_event: pause 
videoplay: gui_vod_event: resume 
videoplay: gui_vod_event: pause 


9.ogg --> ASF(DIV3+mp3) 
无法播放 
[mp3 @ 09028240] Header missing 
[mp3 @ 09028240] Header missing 
[mp3 @ 09028240] Header missing 
authstream: seek: Ignoring seek 0 in live 
videoplay: gui_vod_event: pause 
videoplay: gui_vod_event: resume 

=================================================================  
=================================================================  

10.mp4 --> mp4(H.264+MP3) 
无法正常播放 
[mp3 @ 0900bce0] Header missing 
[mp3 @ 0900bce0] Header missing 
[mp3 @ 0900bce0] Header missing 
[mp3 @ 0900e300] max_analyze_duration reached 
[mp3 @ 0900e300] Estimating duration from bitrate, this may be inaccurate 


11.mp4 --> webm(VP80+Vorbis) 
无法正常播放 
videoplay: gui_vod_event: pause 
videoplay: gui_vod_event: resume 
videoplay: gui_vod_event: pause 
videoplay: gui_vod_event: resume 
videoplay: gui_vod_event: pause 


12.mp4 --> ts(h.264+mp3) 
能非常流畅且清晰的播放(平均下载速度达到100k/s以上,转码机器CPU负载vlc占用60%-70%) 


13.mp4 --> ts(Dirac+mp3) 
能清晰播放,但是卡顿现象较严重(平均下载速度40k/s--50k/s,转码机器CPU负载vlc占用30%左右) 


14.mp4 --> ogg(Theora+Vorbis) 
播放非常流畅但不是非常清晰(平均下载速度达到100k/s以上,转码机器CPU负载vlc占用30%左右) 


15.mp4 --> ogg(Theora+Flac) 
无法正常播放 
[07a1cea8] main input error: ES_OUT_RESET_PCR called 
[09021788] theora decoder error: this bitstream does not contain Theora video data 
[090[0271a71848a]8 8theora decoder error: ]this bitstream does not contain Theora video data 
ogg demux error: Broken Ogg stream (serialno) mismatch 


16.mp4 --> ts(mpeg-2+mpga) 
能非常流畅但不是非常清晰的播放(平均下载速度达到100k/s以上,转码机器CPU负载vlc占用80%-90%左右) 
屏幕有如下类似错误的打印 
[mpeg2video @ 09054260] qscale == 0 
[mpeg2video @ 09054260] concealing 1200 DC, 1200 AC, 1200 MV errors 
[mpeg2video @ 09054260] qscale == 0 
[mpeg2video @ 09054260] concealing 1200 DC, 1200 AC, 1200 MV errors 
[mpeg2video @ 09054260] qscale == 0 
[mpeg2video @ 09054260] concealing 1200 DC, 1200 AC, 1200 MV errors 


17.mp4 --> ASF(WMV+WMA) 
无法正常播放 
[h263 @ 0900ab80] Bad marker 
[h263 @ 0900ab80] header damaged 
[h263 @ 0900ab80] header damaged 
[h263 @ 0900ab80] H263 SAC not supported 


18.mp4 --> ASF(DIV3+mp3) 
能播放,但花屏严重,卡顿严重(平均下载速度达到50k/s-60k/s以上,转码机器CPU负载vlc占用30%左右) 
VLC直接转码出来的视频就已经是花屏的,屏幕报如下错误打印 
[msmpeg4 @ 090049e0] error, slice code was D 
[msmpeg4 @ 090049e0] header damaged 
[msmpeg4 @ 090049e0] dc overflow- block: 1 qscale: 19// 
[msmpeg4 @ 090049e0] 
error while decoding block: 0 x 31 (1) 
[msmpeg4 @ 090049e0] Error at MB: 2511 
[msmpeg4 @ 090049e0] concealing 1199 DC, 1199 AC, 1199 MV errors 




【测试要点和结论分析】 
1.测试均在win32平台 
2.测试中用于转码的VLC版本为VLC v2.0.2 
3.测试目的为检验P2P-NEXT提供的P2P流媒体套件对常用(我们可能用到的)格式播放支持 
4.测试中仅在一个客户端参与直播的情况下进行相关信息的收集,不排除多客户端的情况会有不同(测试环节比较繁琐,目前没有进行多客户端的测试) 
4.测试中所用到的P2P相关参数 设置 (如滑动窗口的长度,视频分片大小等)均采用默认值,不排除优化参数后会有更好效果的可能 
5.测试中每一个采样的停止均是以传输速度稳定为标准,不排除在长时间测试中由于网络原因导致卡顿后,直播客户端和源之间延迟会逐步变大。 
6.测试中观察,局域网环境的情况下,首次加入直播流的客户端与直播源之间的延迟一般在2s-8s之间。 


【遗留工作和问题】 
1.以上测试未记录创建直播流的Python模块在工作时占用的CPU,而实际服务器架构中,视频转码和创建直播流的模块可能会工作在同一台服务器。 
2.未进行linux上测试 
3.上述采样测试中未进行多台PC同时直播的测试(但我自己进行过3台测试,效果还不错) 
4.P2P直播在HTML5上的效果不是很理想,在HTML5上的测试我是安装的P2P-NEXT官方提供的插件,在win32平台FireFox上进行的测试(目前插件仅支持IE和FF),测试过程中发现,其P2P模块的下载速度还是不错的(能达到100k/s),但是播放似乎没有在缓冲好后立即播放,且卡顿频繁,怀疑和编码参数设置以及HTML5本身有关,目前无结论。 
5.P2P-NEXT号称是全平台,全设备支持的,但是目前官网上没有找到手持设备的相关文档 
上一篇:【Java 泛型】使用上下边界通配符解决泛型擦除问题


下一篇:《C语言程序设计:问题与求解方法》——3.11节本章习题