• UID10
  • 登录2016-10-31
  • 粉丝38
  • 关注4
  • 发帖386
  • 主页
  • 金币2541枚
社区居民
忠实会员
原创写手
bill 发布于2015-08-14 09:27
8/9530

流媒体视频直播方案

楼层直达
背景

在视频直播领域,有不同的商家提供各种的商业解决方案,包括软硬件设备,摄像机,编码器,流媒体服务器等。本文讲解如何使用一系列免费工具,打造一套视频直播方案。

视频直播方案的组成,可以分为4部分:

1)前端采集编码设备:提供直播信号源的采集和编码压缩功能,并将信号推送到直播流媒体服务器上。

2)直播流媒体服务器:负责直播流的发布和转播分发功能。

3)WEB服务器:实现直播节目在终端上的展现。

4)终端设备:包括PC和移动终端。

本文的操作基于Mac系统,由于使用的是跨平台的工具,因此前端的数据采集和编码操作在其他平台上类似。

编码和协议

1)网络协议:主要有3种

   a. RTSP(Real Time Streaming Protocol)是用来控制声音或影像的多媒体串流协议, 由Real Networks和Netscape共同提出的;

   b. RTMP(Real Time Messaging Protocol):实时消息传送协议是Adobe公司为Flash播放器和服务器之间音频、视频和数据传输 开发的开放协议;

   c. HLS(HTTP Live Streaming):是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议;

2)视频编码: Mpeg4, H264等

3)音频编码: Mp3, AAC等

4)视频分辨率: 标清通常指的是640×480(或768×480);高清指的是1280×720;全高清指的是1920×1080;超高清3840×2160

前端数据采集和编码:
编码器有很多选择,如商业版的envivio, 免费版的ffmpeg.
我们使用ffmpeg(Mac系统上内置)从Mac笔记本摄像头捕捉视频,视频编码选择h264, 音频编码选择mp3,且将生成的传输流ts发布到服务器。
在mac终端下,执行:
 ./ffmpeg -f avfoundation -i "0" -vcodec libx264 -preset ultrafast -acodec libmp3lame  -f flv rtmp://192.168.1.100:1935/myapp/stream
服务器地址:“rtmp://192.168.1.100:1935/myapp/stream”,我们接下来进行搭建。

服务器
流媒体服务器也有诸多选择,如商业版的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协议为例,配置服务器环境。
服务器搭建主要步骤:
    
(1)下载与安装
cd /usr/build
git clone git://github.com/arut/nginx-rtmp-module.git
wget http://nginx.org/download/nginx-1.2.4.tar.gz tar xzf nginx-1.2.4.tar.gz

cd nginx-1.2.4
./configure --add-module=/usr/build/nginx-rtmp-module
make
make install

(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终端都有不同版本。
选择 File/Open Network, 播放地址: rtmp://192.168.1.100:1935/myapp/stream.
即可观看实时视频。
参考:
       Nginx官网: https://github.com/arut/nginx-rtmp-module/wiki/Getting-started-with-nginx-rtmp




0人打赏
  • UID333
  • 登录2016-11-15
  • 粉丝4
  • 关注2
  • 发帖43
  • 主页
  • 金币191枚
fanyuxi 发布于2015-11-01 11:00
沙发F
大神你好。。如果只是想要实现视屏直播的功能,单纯的android浏览器可以实现吗
  • UID333
  • 登录2016-11-15
  • 粉丝4
  • 关注2
  • 发帖43
  • 主页
  • 金币191枚
fanyuxi 发布于2015-11-01 11:01
板凳F
fanyuxi:大神你好。。如果只是想要实现视屏直播的功能,单纯的android浏览器可以实现吗回到原帖
写错了,是android播放器
  • UID10
  • 登录2016-10-31
  • 粉丝38
  • 关注4
  • 发帖386
  • 主页
  • 金币2541枚
社区居民
忠实会员
原创写手
bill 发布于2015-11-02 22:15
地板F
fanyuxi:写错了,是android播放器回到原帖
iOS内置对HLS的支持,新版的Android应该也支持,至少有一些第三方的库/框架可以支持HLS
  • UID4186
  • 登录2016-01-18
  • 粉丝0
  • 关注1
  • 发帖3
  • 主页
  • 金币14枚
社区居民
Flome 发布于2016-01-17 20:15
4楼F
nice
  • UID1690
  • 登录2017-02-15
  • 粉丝1
  • 关注6
  • 发帖101
  • 主页
  • 金币183枚
社区居民
原创写手
lalalala 发布于2016-02-18 12:06
5楼F
mark。。
。。(●—●)。。我是萌萌哒的签名挡。。(●—●)。。游戏源码分享(●—●)(●—●)
  • UID7415
  • 登录2016-02-18
  • 粉丝0
  • 关注0
  • 发帖3
  • 主页
  • 金币0枚
easyby 发布于2016-02-18 14:13
6楼F
  • UID7461
  • 登录2016-06-08
  • 粉丝1
  • 关注0
  • 发帖211
  • 主页
  • 金币191枚
社区居民
忠实会员
android_chao 发布于2016-02-25 11:02
7楼F
不错,支持一下
  • UID6917
  • 登录2016-03-02
  • 粉丝0
  • 关注0
  • 发帖3
  • 主页
  • 金币20枚
社区居民
Trista丶 发布于2016-02-26 16:53
8楼F
给楼主点个赞。很不错~
您需要登录后才可以回帖
发表回复
极贡献
技术问答
专题荟萃
程序人生
视觉设计
Android开发
iOS开发
编程语言
前端开发
后端开发
服务器架构
软件测试
运维方案
创业路上



最热文章墙

  • 60600/343   【精品推荐】200多种Android动画效果的强悍框架,太全了,不看这个,再有动画的问题,不理你了^@^

  • 33743/188   情人节福利,程序员表白的正确姿势:改几行代码就变成自己的表白了

  • 32118/141   省时省力的Android组件群来了,非常棒的原型参考

  • 29419/226   【精品推荐】Android版产品级的音乐播放器源码,功能太强大了,最好的产品原型有木有?

  • 26337/0   Python爬虫:常用浏览器的useragent

  • 26319/2   超全!整理常用的iOS第三方资源

  • 24870/70   原创表白APP,以程序员的姿势备战新年后的7夕,持续完善中!

  • 23179/138   2016抢红包软件及源码

  • 20062/29   麻省理工的一帮疯子,真的实现了随意操控万物!(绝对黑科技)

  • 19894/25   Android工程师面试题大全

  • 19325/27   2016程序员跳槽全攻略

  • 19118/9   GitHub上排名前50的iOS项目:总有一款你用得着

  • 18586/20   码魂:程序员的牛B漫画

  • 17068/149   Android版类似UC浏览器:非常赞,产品级的源码

  • 16937/3   吐槽那些程序员的搞笑牛逼注释

  • 15772/1   iOS 动画总结

  • 15583/10   2016年最全的Android面试考题+答案 精编版

  • 15340/41   一个绚丽的loading动效分析与实现!

  • 14933/73   【持续更新中】Android福利贴(二):资料源码大放送

  • 14899/83   Android小而全的博客源码:非常适合全面掌握开发技巧

  • 14739/10   女程序员的梦,众网友的神回复

  • 14624/44   惊艳的App引导页:背景图片切换加各个页面动画效果

  • 14524/11   年会上现场review代码是怎么样的体验!

  • 14318/23   个人收集的Android 各类功能源代码

  • 14209/5   新一代Android渠道打包工具:1000个渠道包只需要5秒

  • 13375/19   珍藏多年的素材,灵感搜寻网站

  • 13345/53   基于瀑布流的美女图片浏览App,有注释的源代码

  • 12986/17   用JavaScript 来开发iOS和Android 原生应用:React Native开源框架中文版来啦

  • 12899/74   仿京东商城客户端Android最新版,不错的原型和学习资料

  • 12829/15   基于Android支付宝支付设计和开发方案

  • 12625/20   Android福利第三波【Android电子书】

  • 12404/17   什么是真正的黑客:收获12200+Stars,人气远超微软开源VS

  • 12363/94   Android带弹幕的视频播放器源码,来自大名鼎鼎的Bilibili弹幕网站

  • 12297/18   65条最常用正则表达式,你要的都在这里了

  • 12155/70   【精品推荐】类似360安全卫士安Android源码:非常赞的产品原型

  • 11807/7   用程序员的姿势抢过年的火车票

  • 11794/0   iOS中文版资源库,非常全

  • 11736/7   一张图搞定iOS学习路线,非常全面

  • 11721/11   有木有这样一张酷图帮你集齐所有git命令超实用

  • 11249/10   成为Java顶尖程序员 ,看这11本书就够了

  • 10985/18   一张图搞定Android学习路线,非常全面

  • 10914/10   微信支付终于成功了(安卓,iOS),在此分享

  • 10623/44   在线音乐播放器完整版(商用级的源码):非常赞,可听免费高品质专辑

  • 10574/3   基于Node.js的强大爬虫,能直接发布抓取的文章哦

  • 10455/29   【持续更新中】Android福利贴(一):资料源码

  • 10440/0   GitHub iOS 库和框架Top100 

  • 10005/4   46 个非常有用的 PHP 代码片段

  • 9774/3   即时通信第三方库

  • 9748/61   【技巧一】搭配Android Studio,如何实现App远程真机debug?

  • 9562/9   烧了5亿美金,这家神秘的公司即将颠覆人类未来!

  • 9530/8   流媒体视频直播方案

  • 9405/9   B站建开源工作组:APP想支持炫酷弹幕的看过来

  • 9268/18   八个最优秀的Android Studio插件

  • 9211/2   【精品推荐】高质量PHP代码的50个实用技巧:非常值得收藏

  • 9125/9   中国黑客的隐秘江湖:攻守对立,顶尖高手月入千万美元

  • 8697/6   开箱即用!Android四款系统架构工具

  • 8579/3   一张图看清Linux 内核运行原理

  • 8486/10   十大技巧快速提升Android应用开发性能

  • 8465/3   10款GitHub上最火爆的国产开源项目——可以媲美西半球

  • 8150/1   Android性能优化视频,文档以及工具

  • 返回顶部