经过数天的调试,全新的米米弹幕系统已经可以正常使用了。经过重制的弹幕系统,使用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。
根据最新规划,米米视频将专注于视频点播功能,点播的视频大部分为原创作品;而米米直播目前已开放了一个测试频道,未来将进行拓展。关于推流码验证的相关功能正在完善。附上链接:
昨晚在VPS上搭建了基于Nginx的视频直播服务器,并成功使用OBS Studio推流,Safari上HTML5播放。下面附上具体步骤。继续阅读
当想写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
当给一个变量分配另一个值时,想确定源始值不是null
,undefined
或空值。可以写撰写一个多重条件的if语句。
if (variable1 !== null || variable1 !== undefined || variable1 !== '') {
let variable2 = variable1;
}
或者可以使用短路求值方法:
const variable2 = variable1 || 'new';
目前网上流传的只有源代码截图,经测试,该代码可以正确编译运行,但输出的内容令人困惑。目前正在进行优化,以使其输出《出师表》全文,未来会将cpp文件贴至此处。继续阅读