zoukankan      html  css  js  c++  java
  • 使用免费的产品搭建直播系统

    使用免费的产品搭建直播系统

         上述方案的不足就是Helix的产品只有试用版。想用正版就得花钱。

         1. 学习资料

           使用VLC+mediastreamsegmenter+apache搭建HTTP Live Streaming系统:

                  http://www.unmht.org/memo/en_ipod_stream.html

                       http://jokru.org/apple-http-live-streaming-to-the-ipadiphone-w

             mediastreamsegmenter的使用方法:http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/mediastreamsegmenter.1.html

             对于搭建HTTP Live Streaming系统,官方的说明资料:http://developer.apple.com/library/ios/#technotes/tn2224/_index.html


         2.工具的选择

             (1)视频信号的采集与编码。

                    mediastreamsegmenter能够接收的数据:视奥频-》H264;音频-》AAC, 封装于ts流中,

               通过UDP传输(似乎是这些要求,具体细节我其实也不清楚)。

               下面开始寻找能够满足这个要求的工具。

                    1)quicktime broadcaster   

                        broadcaster的下载地址:http://developer.apple.com/library/ios/#documentation/networkinginternet/conceptual/streamingmediaguide/Introduction/Introduction.html

                                         安装这个软件后,用它向mediastreamsegmenter喂数据,segmenter报错。因此,我认为(可能不对),

                               这个工具不能满足要求。

                           2) VLC

                               经过试验,使用VLC可以成功地向mediastreamsegmenter喂数据。因此我选择VLC作为视频、音频流的处理工具。

                    (2)视频流的分片工具

                        使用苹果的mediastreasegmenter

                     ( 3 ) 服务器

                         apache

           3. 具体架设方案。

                    (1) 视频、音频信号的采集与编码,使用rtsp协议将视频播放出去。

                                  一台PC(ip地址为192.168.1.101),装备有摄像头,麦克风,安装有VLC.

                                 1)打开vlc,,选择 媒体->打开捕获设备->捕获设备。点击播放。如果vlc能够成功将摄像头和麦克风捕获的信号显示出来,

                                    就可以进行下一步。

                                 2)在VLC中选择 媒体->串流->捕获设备,点击串流。接下来会弹出一个流输出设置窗口。

                                      在“目标”中,选择RTSP进行添加,接着数据端口号(默认5544)和路径(我设置为 /test)。

                                      在转码选项中,在“激活转码前打钩”,档案中,保持默认选项(Video-H264+AAC(MP4))。

                                      点击“串流”,这时,该PC机的5544端口就开始提供rtsp直播服务了。

                                  3) 验证rtsp服务是否可用。

                                      打开一个新的VLC,选择  媒体->打开网络串流。输入rtsp://127.0.0.1:5544/test, 如果可以成功地看到摄像头捕获

                                      的影像,就说明rtsp服务是可用的。

                     (2)视频流的转码

                                一台mac(我测试用的的视频服务器都部署在这里,IP:192.168.1.109),安装有vlc.

                                由于mediastreamsegmenter不能直接读入rtsp服务器传来的数据流,所以我们需要对数据进行一定的变换。

                                1)找到应用程序vlc的地址(一般默认在/Applications/VLC.app/Contents/MacOS下),进入文件夹。

                                2)输入命令:

                                    ./VLC --intf=dummy rtsp://192.168.1.101:5544/test  '--sout=#transcode{fps=25,vcodec=h264,venc=x264{aud,profile=baseline,level=30, keyint=30,bframes=0,ref=1,nocabac},acodec=mp3,ab=56,audio-sync,deinterlace}:duplicate{dst=udp{mux=ts,dst=127.0.0.1:8000,access=udp}}'

                                    下面大致介绍一下这条命令:

      •  --intf=dummy   表示不显示VLC的窗口
      •  rtsp://192.168.1.101:5544/test 是vlc输入流的来源,也就是我们之前搭建的rtsp服务器。
      •  --sout, 通过这个选项 对输出进行具体的设置。
      •  ranscode{fps=25,vcodec=h264,venc=x264{aud,profile=baseline,level=30, keyint=30,bframes=0,ref=1,nocabac},acodec=mp3,ab=56,audio-sync,deinterlace}    这一行命令对于视频和音频的转码格式进行设置(视频和264,音频aac), 但一些参数还不是很明白。          
      • duplicate{dst=udp{mux=ts,dst=127.0.0.1:8000,access=udp}},将视频、音频流封装为ts格式,使用udp传输,传向本地服务器的8000端口。

                    (3) 获取ts流并进行分片

                               1)medianstreamsegmenter

                                      这个小程序一般默认安装在mac的/usr/bin下。

                                      具体使用方法:http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/mediastreamsegmenter.1.html

                                2)使用命令

                                      /usr/bin/mediastreamsegmenter  -s 3 -t 5 -D -f /usr/frank/stream 127.0.0.1:8000

                                      判断是否成功分片:如果终端显示 : Finalized 存储路径 file Sequencex.ts,则说明分片成功了。

                                      说明: 

                                                   -s 3  设定index文件中记录几个分片。

                                                   -t  5 设定多长时间(秒)产生一个分片,默认为10秒。

                                                   -D 删除过期的分片文件

                                                   -f /usr/frank/stream设置存储分片文件和index文件的文件夹

                                                   127.0.0.1:8000 设置获取ts流的地址

                    (4)使用apache提供服务.

                              第一次在mac下使用apache,难免会感到一丝生疏。学习资料:http://hi.baidu.com/hsbd2005/blog/item/7393a84f0017b5c7d1c86ad4.html

                              mac自带apache.

                              1) 启动

                                  使用命令:sudo apachectl start, 然后在浏览器中数据localhost进行查看,如果看到It works,说明apache可以正常工作。

                              2) 配置文件

                                  配置文件默认路径为 /etc/apache2/httpd.conf(对于文本的编辑,可以用 (vi 文件路径),也可以用(sudo open -a TextEdit.app 文件路径)).

                                  可以看到 DocumentRoot  "/Library/WebServer/Documents",也就是说,这是存放资源的默认路径。

                               3) 进入 /Library/WebServer/Documents, 建立文件夹httpstream,

                                   将mediastreamsegmenter的输出指向这里:  

                                               /usr/bin/mediastreamsegmenter  -s 3 -D -f /Library/WebServer/Documents/httpstream 127.0.0.1:8000

                                  在浏览器中输入localhost/httpstream/prog_index.m3u8,如果能够看到分片文件的列表,就说明成功了一半。    

                               4) 写脚本文件,在Library/WebServer/Documents/下创建一个index.html文件,具体内容如下:

    <html> 

        <head> 

       <meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>

               </head> <body style="background-color:#FFFFFF; "> 

        <body>

                        <center> <video src="192.168.1.109/httpstream/prog_index.m3u8" controls autoplay ></video> </center>

         </body> 

    </html>

    (5) 直播效果

               在safari中输入链接http://192.168.1.109/index.html,观看直播。   

                画质很差,可能是一些参数设得不够好

  • 相关阅读:
    【数据结构(C语言版)系列三】 队列
    【数据结构(C语言版)系列二】 栈
    【数据结构(C语言版)系列一】 线性表
    [转]Boosting
    吴恩达机器学习笔记
    C语言之图像旋转
    DP【洛谷P4290】 [HAOI2008]玩具取名
    背包 DP【洛谷P4158】 [SCOI2009]粉刷匠
    最短路+状压DP【洛谷P3489】 [POI2009]WIE-Hexer
    模板 Trie树
  • 原文地址:https://www.cnblogs.com/AlvinCrash/p/5379429.html
Copyright © 2011-2022 走看看