移动端直播的几种方案
2017-08-14 14:54
232 查看
移动端直播三种方案简介与实现
最近需要实现一个移动端直播和播放资源的方案,把接触和实现的部分整合一下记录下来,主要涉及HTML5。本文中主要简单实现了三种视频直播的方法,并对视频直播方案做了一个总结。主要包含:
RMTP + Nginx + HLSNode.js + WebSocket + canvas
flv.js + WebView
1.直播流程
直播主要分为三个部分,视频录制端、视频播放端、视频服务器端。 参考了AlloyTeam的博客。视频录制端:一般是电脑上的音视频输入设备或者手机端的摄像头或者麦克风,目前以移动端的手机视频为主。
视频播放端:可以是电脑上的播放器,手机端的native播放器,还有就是h5的video标签等,目前还是已手机端的native播放器为主。
视频服务器端:一般是一台nginx服务器,用来接受视频录制端提供的视频源,同时提供给视频播放端流服务。
2.ffmpeg
对于摄像头/音频采集装置,数据采集到上传主要包含以下步骤。1. 音视频的采集,ios中,利用AVCaptureSession和AVCaptureDevice可以采集到原始的音视频数据流。
2. 对视频进行H264编码,对音频进行AAC编码,在ios中分别有已经封装好的编码库来实现对音视频的编码。
3. 对编码后的音、视频数据进行组装封包;
4. 建立RTMP连接并上推到服务端。
而ffmpeg是一个完整的编码库,集推流、编码与一身的强大工具,想深入了解ffmpeg的移步此处。可以完成我们本地从原始音视频数据流到编码到推送的整个步骤。
举个栗子:mp4格式转换为avi格式
ffmpeg -i input.mp4 output.avi
3.推流
所谓推流,就是将我们已经编码好的音视频数据发往视频流服务器中,使用ffmpeg进行推流。4.HTML5 Video
HTML5中新添加了Video标签,支持IOS/Android 播放视频。而且支持多种浏览器,具体可移步这里。方案一 RMTP + nginx + HLS协议
方案一原理介绍
1.HLS原理
HLS把视频流切分为一个个小的文件,用HTTP下载,每次只下载一个,引入.m3u8文件和ts文件。 ts存放视频内容,.m3u8动态改变,包含配置与路径。为了加速,
加速:.m3u8放在web服务器,ts文件放在cdn上
2.直播延迟
hls协议是将直播流分成一段一段的小段视频去下载播放的,所以假设列表里面的包含5个ts文件,每个TS文件包含5秒的视频内容,那么整体的延迟就是25秒。在已经录制好推送的前提下,延迟较小。但直播延迟很高。3.RMTP
Real Time Messaging Protocol(简称 RTMP)是 Macromedia 开发的一套视频直播协议,现在属于 Adobe。和HLS一样都可以应用于视频直播,区别是RTMP基于flash无法在ios的浏览器里播放,但是实时性比HLS要好。所以一般使用这种协议来上传视频流,也就是视频流推送到服务器。方案一实现:
服务器部署:
本地推流:
视频文件推流:ffmpeg -re -i /Users/Downloads/test1.mp4 -vprofile baseline -vcodec copy -acodec copy -strict -2 -f flv rtmp://192.168.2.100/hls/test
直播推流:
ffmpeg -f avfoundation -framerate 30 -video_size 640x480 -i "0" -vcodec libx264 -acodec libfaac -f flv rtmp://192.168.2.100/app_name/test1
效果:
方案二 Node.js + WebSocket + canvas
原理:
方案二实现:
效果:
方案三 flv.js + HTML5
未完待续……相关文章推荐
- EasyNVR H5无插件直播方案前端构建之:如何区分PC端和移动端
- EasyNVR无插件IPC摄像机直播方案前端构建之:如何区分PC端和移动端
- 移动端图文直播技术方案的分析
- 将安防IPC摄像机进行类似于萤石/乐橙/360水滴模式的互联网直播的几种方案
- 将安防IPC摄像机进行类似于萤石/乐橙/360水滴模式的互联网直播的几种方案
- StratoIO WebPrinter的几种打印方案,打印机池、并行打印、框架打印、移动端打印
- EasyNVR无插件IPC摄像机直播方案前端构建之:如何区分PC端和移动端
- 移动端适配方案
- 移动端热修复方案-- 阿里百川HotFix
- EasyNVR+EasyDSS实现简单套路的RTMP、微信直播、录像、回放方案
- Hadoop作业提交的几种方案
- 关于分页的几种方案
- 几种常见的微服务架构方案简述——ZeroC IceGrid、Spring Cloud、基于消息队列
- 处理session跨域几种的方案
- 对象存数据库的几种方案比较
- WEB打印的几种方案
- 移动端热修复方案-Tencent tinker
- 如何快速、低成本构建一套稳定、高效、可靠的互联网主播直播/商业直播(推流/分发/播放)方案
- activity调用service中方法的几种方案
- 几种典型配色方案