当前位置
文章正文
手机直播APP源码开发搭建方案详解
发布来源:云豹直播    Date:2017-12-05 09:15:59   


手机直播的兴起让不少企业名利双收,接下来,本文就这项打造手机直播的神秘手机直播APP源码进行介绍,并就开发搭建做出详解。

一、流媒体

流媒体指的是这样的一种媒体传输方式,媒体提供方编码、压缩和分发媒体流(相关的数据包),终端用户不断地获取、解码并播放媒体,区别于以前先下载整个媒体文件后观看。

 

直播平台搭建

 

二、流式传输

通过网络传送媒体的技术总称。实现方法:

1. 顺序流式传输(Progressive streaming)

涵义:顺序下载,在下载文件的同时用户可观看再线媒体。

特点:在给定时刻,用户只能观看已下载的那部分,而不能跳到还未下载的前头部分,顺序流式传输不象实时流式传输在传输期间根据用户连接的速度做调整。由于标准的HTTP服务器可发送这种形式的文件,也不需要其他特殊协议,故也称为HTTP流式传输。是一种点播技术。

2. 实时流式传输(Realtime streaming)

涵义:实时流式传输指保证媒体信号带宽与网络连接匹配,使媒体可被实时观看到。

特点:需要专用的流媒体服务器与传输协议。实时流式传输总是实时传送,特别适合现场事件,也支持随机访问,用户可快进或后退以观看前面或后面的内容。直播技术。

 

流媒体技术原理

关键词:缓存、协议。

客户端与Web服务器之间使用HTTP/TCP交换控制信息,获取相关参数初始化A/V(指Audio/Video)Helper程序,A/VHelper程序及A/V服务器运行RTSP协议(实时流控制协议),以交换A/V传输所需的控制信息。A/V服务器使用RTP/UDP协议(RTP,实时传输协议)将A/V数据传输给A/V客户程序(一般可认为客户程序等同于Helper程序),在传输中它们要被分解为许多包,在网络中进行断续的异步传输,然后进入客户端以环形链表结构(丢弃已经播放的内容)为基础的高速缓存系统(弥补延迟和抖动的影响,并保证数据包的顺序正确),最后A/V客户程序使用专有的播放器进行解码播出。

三、流媒体相关技术

 

直播系统

 

1)智能流技术

自动检测网络状况,并将音视频的属性调整到最佳,使用用户收到与其网络速度相符的媒体流,从而获取最佳的用户体验。

2)分流(splitting)技术

一般只在直播中使用。发送服务器将媒体流发送到分布在各地的多个接收服务器,客户端可以就近访问服务器获得较高质量的媒体流,同时减少带宽使用。推流为将直播内容推送至服务器的过程;拉流为服务器已有直播内容,用指定地址进行拉取的过程。

3)缓存(caching)技术

解决由于异步网络、网络延迟和抖动导致的数据包错序的问题,数据包先缓存在本地,而缓存系统使用环形链表结构丢弃掉已经播放的内容,防止缓存溢出。

4)内容分发网络(CDN)技术

架构在IP网络之上的一个内容叠加网,通过引入主动内容管理、全局负载均衡和内容缓存等技术,将用户请求的流媒体内容发布到距离用户最近的网络边缘,从而提供响应速度,减轻骨干网络的压力。

四、直播的实现

1)直播中使用的流媒体协议

RTMP, Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。RTMP 基于 flash 无法在 iOS 的浏览器里播放,但是实时性比 HLS 要好。

HLS,HTTP Live Streaming(HTTP直播流技术),Apple的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文件。

 

2)直播的模块划分

视频录制端:一般是电脑上的音视频输入设备或者手机端的摄像头或者麦克风,目前以移动端的手机视频为主。技术:webRTC(用途:H5视频录制)

视频播放端:可以是电脑上的播放器,手机端的 Native 播放器,还有就是 H5 的 video 标签等,目前还是已手机端的 Native 播放器为主。技术:HLS协议或RTMP协议(用途:视频播放)、ffmpeg(用途:使用RTMP协议时进行移动端视频解码)

视频服务器端:一般是一台 nginx 服务器,用来接受视频录制端提供的视频源,同时提供给视频播放端流服务。技术:RTMP协议(用途:上传视频流)、nginx rtmp-module 或 SRS(simple-rtmp-server)(用途:流服务器)

流媒体服务器也有诸多选择,如商业版的Wowza。

我们选择的是Nginx,它是优秀的免费Web服务器,通过扩展的nginx-rtmp模块,可以支持流媒体播放和管理。

 

nginx-rtmp模块特点是:

RTMP/HLS/MPEG-DASH live streaming

RTMP Video on demand FLV/MP4, playing from local filesystem or HTTP

Stream relay support for distributed streaming: push & pull models

Recording streams in multiple FLVs

H264/AAC support

Online transcoding with FFmpeg

HTTP callbacks (publish/play/record/update etc)

Running external programs on certain events (exec)

HTTP control module for recording audio/video and dropping clients

Advanced buffering techniques to keep memory allocations at a minimum level for faster streaming and low memory footprint

Proved to work with Wirecast, FMS, Wowza, JWPlayer, FlowPlayer, StrobeMediaPlayback, ffmpeg, avconv, rtmpdump, flvstreamer and many more

Statistics in XML/XSL in machine- & human- readable form

Linux/FreeBSD/MacOS/Windows

基于它对RTMP协议的良好支持,因此本文以RTMP协议为例,配置服务器环境。

2)配置实时直播: 
要支持RTMP,需要在nginx.conf (PREFIX/conf/nginx.conf)中添加rtmp{} 部分,如下: 


复制代码

rtmp {

    server {

        listen 1935;

        ping 30s;

        notify_method get;

       

        application myapp {

            live on;

         }

     }

}


客户端

使用VLC来访问视频服务器,观看视频。 VLC也是跨平台的软件,在Mac, windows终端都有不同版本。 
例如云 豹直 A PP 源 码 选择 File/Open Network,

目前,市场中也有很优秀的源码,但建议大家要仔细鉴别,勿贪小便宜。

0538-8270220