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

针对传统RTP/RTSP流媒体在PC及移动端的兼容性问题,本文探讨了使用HLS与Progressive Download等技术解决方案,并介绍了一种利用FFmpeg与Node.js实现实时流媒体传输的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       公司的流媒体系统出来的码流都是传统的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适配,由于公司不需要,暂时就不继续尝试了。


















转载于:https://my.oschina.net/jianyu0/blog/279654

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值