基于nodejs的http实时视频流尝试记录

       公司的流媒体系统出来的码流都是传统的rtp承载、rtsp控制的标准流媒体,在3GPP环境下是没问题,可是PC上和易信、微信上就没法看了,负责推广的大姐建议改成不要控件在电脑上能播的方式,遂进行了一些尝试,技术实现上没有问题,但是考虑到当前的终端类型多样化,感觉商用推广难度较高,暂时搁置了。

微信易信用的是webview(android的名字,iOS里类似技术),实际上就是浏览器。要让手机原生浏览器支持,要从两个方面考虑:

1 传输协议支持,iOS是HLS(http live streaming),通过文件切片来实现的。原生不支持实时流直播,需要通过截取一段文件,分片后当作文件拨出去,然后通过设置video的自动重复播放来获取下一阶段的文件。延迟会大一些,根据缓存的文件长短变化;Android是支持渐进式下载,Progressive download,通过部分下载一个文件来实现,原理上差不多的。

2 文件封装格式和编码格式支持,分成webm+VP8、mp4+h264两种方案。

本想通过live555来获取媒体流,存成文件,利用python切割文件的,后来发现更加简单的方法,直接利用ffmpeg命令行,通过ffmpeg获取媒体流、转换、输出到stdout,在nodejs的web server中直接利用管道输出ffmpeg的媒体流给http客户端,简单粗暴,代码就不上了,直接给老外的代码链接。

https://gist.github.com/deandob/8943268

如果要实际工程中用,还需要做兼容性测试、并发支持、客户端UA适配,由于公司不需要,暂时就不继续尝试了。


















你可能感兴趣的:(http,nodejs,Streaming)