zoukankan      html  css  js  c++  java
  • Linux 下搭建流媒体服务器

    http://blog.csdn.net/huangtaishuai/article/details/9836581

     ------------------------------------------------------------------------------------------

    VLC 流媒体服务器小试成功

    1. 打开命令行服务,坚挺5554媒体端口

    vlc.exe -I telnet --control telnet --telnet-password q7fmZ9s --rtsp-host 0.0.0.0:5554
    2. 使用putty连接VLC命令行接口
    telnet localhost 4212 using the password q7fmZ9s
    3. 在vlc命令行接口中新增一个条目
    new a_walk_to_remember vod enabled input D:TDDOWNLOAD1.avi
    4. 在客户中的vlc中- 打开网络媒体- 输入下面的东东就可以观看大片啦
    rtsp://192.168.50.23:5554/a_walk_to_remember

    ------------------------------------------------------------------------------------------

    Ubuntu 下 vlc 做流媒体服务器  

     

     
    主要安装步骤如下:
    1、安装Ubuntu;
    2、去掉Ubuntu的防火墙,当然也可以自己配置防火墙,允许4212端口和5554端口;
    3、安装VLC服务器,这个见上面的博客文章;
    然后配置VLC服务器,配置步骤如下:
    1、在控制终端中运行
    vlc --ttl 12 -vvv --color -I telnet --telnet-password videolan --rtsp-host 0.0.0.0:5554
    2、通过telnet hostip 4212登录到vlc的VLM界面,那个password 就是videolan;
    3、在vlm界面上运行
    new Test vod enabled
    setup Test input my_video.mpg
    4、在客户端键入命令:
    vlc rtsp://server:5554/Test
    就可以看到节目了。

    ------------------------------------------------------------------------------------------

    本文说明如何在 CentOS 6 服务器(无图形界面)搭建以 VLC 为核心的直播流媒体服务器。

    第一步,安装第三方 yum 源。因为官方 yum 源中是不包含 VLC 安装包的,为了不用考虑安装包之间的依赖关系,使用第三方yum源的 yum 安装方式,能极大地简化 vlc 的安装过程,将主要精力集中到如何使用 VLC 功能来搭建流媒体服务器。
    (如果不想使用 yum 安装的,请自行登录 vlc 的官方网站,下载二进制安装包或者源代码参考官方文档进行安装,这里就不复述了。)

    1、下载 RPMForge 知名第三方源的 rpm 安装包(64位系统请下载 rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm)

    1. wget packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm

    2、导入 GPG key

    1. rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt

    3、安装 rpm 安装包

    1. rpm -i rpmforge-release-0.5.2-2.el6.rf.i686.rpm

    4、更新安装源

    1. yum check-update

    5、安装 vlc

    1. yum install vlc

    更多详细资料,请移步:http://wiki.centos.org/AdditionalResources/Repositories/RPMForge


    第二步,使用 VLC 功能搭建直播流媒体服务器。
    (点播没有什么好谈的,搭建一个 http 服务器即可,和 VLC 没有什么太大关系,只是可以把媒体文件先用 vlc 转码成流媒体格式后,再放在 http 服务器中)

    【UDP方式】
    语法:
    vlc input_stream --sout '#std{access=udp{ttl=1},mux=ts,dst=dest_ip:dest_port}'
    举例:(假设在服务器目录中有媒体文件 pikesi.mkv,播放客户端的 IP 为 192.168.1.77)

    1. vlc -I "dummy" -L --no-inhibit pikesi.mkv --sout '#std{access=udp{ttl=1},mux=ts,dst=192.168.1.77:1234}'

    说明:
    在 IP 为 192.168.1.77 的客户端打开 vlc 播放器,选择“打开网络串流”,输入 URL,udp://@:1234/ 即可播放。
    -I "dummy" 表示不使用任何本地播放或控制接口,因为没有图形界面本地无法播放。
    -L 表示循环,当媒体文件播放完后,循环重新播放。
    --no-inhibit 表示禁用电源控制。此为桌面环境功能,默认打开,如果不强制关闭,会导致与 D-Bus 通讯失败,vlc 无法启动。
    UDP推流的方式,只能用单播或者组播的方式往指定地址推送流,不用客户端请求。(HTTP方式会监听用户请求,根据请求的用户点对点推流)

    【HTTP方式】
    语法:

    vlc input_stream --sout '#http{mux=ts,dst=:listen_port}'
      或者
    vlc input_stream --sout '#std{access=http{user=username,pwd=password},mux=ts,dst=:listen_port}'
    举例:

    1. vlc -I "dummy" -L --no-inhibit pikesi.mkv --sout '#std{access=http{user=k3,pwd=k3},mux=ts,dst=:6000/live.ts}'

    说明:(假设服务器IP地址为 192.168.1.6 )
    客户端播放器打开 URL,http://k3:k3@192.168.1.6:6000/live.ts,即可播放。
    如果服务器启动代码中去掉 {user=k3,pwd=k3},即客户端播放时不需要 HTTP 认证。

    【转码】
    媒体文件可能本身不是流媒体格式,这个时候需要转码再串流。举例:

    1. vlc -I "dummy" -L --no-inhibit pikesi.mkv --sout '#transcode{vcodec=h264,vb=800,fps=50,scale=1,acodec=mpga,ab=128,channels=2,samplerate=44100}:std{access=http,mux=ts,dst=:6000}'

    在实际测试中发现一个问题,在 Linux 下对 rmvb 转码会没有声音(Windwos 下正常)。可能是 Linux 版本的 VLC 不能对 realplay cook audio 格式解码的原因(有时间可以安装一个桌面的 Linux 环境进行验证,据说需要在编译 FFMpeg 时打开某些功能选项)。

    【UDP流输入的HTTP串流】
    输入流不一定非要是文件,也可以是网络流,比如前面的UDP流。
    比如,首先往本地端口 1234 推送 UDP 流:

    1. vlc pikesi.mkv -I "dummy" -L --no-inhibit --sout '#std{access=udp{ttl=1},mux=ts,dst=localhost:1234}'

    然后,将 input_stream 改为网络地址,进行 http 串流:

    1. vlc -I "dummy" --no-inhibit udp://@:1234 --sout '#std{access=http,mux=ts,dst=localhost:6000}'

    最后,客户端参考“HTTP方式”播放流媒体。


    ====================================

    注意事项:
    1、注意防火墙放行相应端口。
    2、不要重用端口。每个 http 方式的串流都必须使用一个独立的端口。
    3、vlc 不能用 root 用户运行,如果设置开机自启动,可以在配置文件使用这种方式:(假设有用户名 sowell)
        su sowell -c "vlc ... &"

  • 相关阅读:
    JAVA实现文件遍历
    关于java的JIT知识
    经典的01背包问题
    文件遍历
    [算法之动态规划] 基本思想
    软件设计经典书籍推荐
    C++ 学习之函数重载、基于const的重载
    tomcat调用axis服务时出现 java.lang.InvocationException解决方案
    文件上传的原理
    文件上传的原理
  • 原文地址:https://www.cnblogs.com/fx2008/p/4315416.html
Copyright © 2011-2022 走看看