经过数天的调试,全新的米米弹幕系统已经可以正常使用了。经过重制的弹幕系统,使用WebSocket代替了原先效率极低的Ajax轮询,实现了消息即时收发、自定义弹幕颜色、大小等功能。下一步我们将把弹幕系统整合到直播中。附上链接:

米米弹幕

同时还开放了一个随机生成用户名(来自魔兽世界)的API:

随机用户名

经过为期半个月的测试,米米直播平台成功实现了多线路及多种播放方式的直播:

线路一是无需Flash支持的HLS直播,对移动端支持极为友好,只是由于原理所限,延时约为45秒;线路一的播放方式有原生HLS和Video.js解码的HLS,能够覆盖大部分设备。

线路二是基于Bilibili开源的flv.js的HTTP FLV直播,同样无须Flash,且延时仅有3秒;该播放方式兼容大部分桌面浏览器,但由于需要Media Source Extensions API支持,对移动端不友好;该线路各项直播数据已经可以媲美各大主流直播平台。

线路三为基于video.js和Flash的RTMP直播流,延时亦为3秒左右;不过考虑到Flash的种种弊端,线路三只是作为备用线路。原生HTML5直播在性能上明显优于Flash。

根据最新规划,米米视频将专注于视频点播功能,点播的视频大部分为原创作品;而米米直播目前已开放了一个测试频道,未来将进行拓展。关于推流码验证的相关功能正在完善。附上链接:

米米视频

米米直播

1.三元操作符

当想写if...else语句时,使用三元操作符来代替。

const x = 20;
let answer;
if (x > 10) {
    answer = 'is greater';
} else {
    answer = 'is lesser';
}

简写:

const answer = x > 10 ? 'is greater' : 'is lesser';

也可以嵌套if语句:

const big = x > 10 ? " greater 10" : x

2.短路求值简写方式

当给一个变量分配另一个值时,想确定源始值不是nullundefined或空值。可以写撰写一个多重条件的if语句。

if (variable1 !== null || variable1 !== undefined || variable1 !== '') {
     let variable2 = variable1;
}

或者可以使用短路求值方法:

const variable2 = variable1  || 'new';

继续阅读