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:\TDDOWNLOAD\1.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 ... &"

Linux 下搭建流媒体服务器的更多相关文章

  1. 【转】在Linux下搭建Git服务器

    在 Linux 下搭建 Git 服务器 环境: 服务器 CentOS6.6 + git(version 1.7.1)客户端 Windows10 + git(version 2.8.4.windows. ...

  2. window 下搭建流媒体服务器ffmpeg nginx-rmtp-module

    媒体介绍和需要下载需要软件 1.FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.在这里我只用到了它的视屏格式转换功能,将rtsp协议的视频流转成rtmp 2.ng ...

  3. 在 Linux 下搭建 Git 服务器

    环境: 服务器 CentOS6.6 + git(version 1.7.1)客户端 Windows10 + git(version 2.8.4.windows.1) ① 安装 Git Linux 做为 ...

  4. Linux下搭建VPN服务器(CentOS、pptp)转

    先说我搭建过程中出现的问题吧: 按照 教程搭建好之后出现了619错误,查看日志:/var/log/messages: Nov 20 09:46:20 localhost pptpd[7498]: GR ...

  5. Linux下搭建SVN服务器及自动更新项目文件到web目录(www)的方法

    首先搭建SVN服务器 1,安装SVN服务端 直接用apt-get或yum安装subversion即可(当然也可以自己去官方下载安装) sudo apt-get install subversion   ...

  6. 在Linux下搭建Git服务器的方法是什么样?

    第一步 安装git:可以通过命令的方式快速安装,不同的linux的安装方法可能不一样,我的是采用的yum方法.ubuntu可以用apt-get命令.sudo yum install git 第二步 添 ...

  7. Linux下搭建BT服务器

    P2P(Peer to Peer 即对等网络)就是在这种背景下提出的一种网络技术,P2P可以简单地定义为通过直接交换信息,共享计算机资源和服务,对等计算机兼有客户机和服务器的功能.在这种网络中所有的节 ...

  8. 转载-Linux下搭建VPN服务器(CentOS、pptp)

    转自:http://www.cnblogs.com/sixiweb/archive/2012/11/20/2778732.html 搭建过程参考这篇文章 先说我搭建过程中出现的问题吧: 按照 教程搭建 ...

  9. Linux 下搭建jsp服务器(配置jsp开发环境)

    Linux 做为服务器的高效一直时为人所熟知的了,在linux 上搭建各种各样的服务器和开发环境也时学计算机的人常做的.以下时最近在linux配置jsp服务器的全过程,包含一些基本步骤和排错过程: 1 ...

随机推荐

  1. CI下php操作memcached 的问题

    CI下php操作memcached 的时候,获取memcached里不存在的key时候,会出错,然而放在程序的最后一行就不会出错,不知何故,mark一下.

  2. javascript中的lambda表达式

    <!DOCTYPE html> <html> <head> </head> <body> <script> var nubLis ...

  3. spring---aop(8)---Spring AOP中optimize

    写在前面 optimize是ProxyConfig的属性.意思为 是否对生产代理策略使用优化. public class ProxyConfig implements Serializable { p ...

  4. WINDOWS WPA性能分析

    http://r12f.com/posts/introduction-to-wpa-1-why-it-is-slow/ http://www.freebuf.com/column/138862.htm ...

  5. C#的new操作符到底做了什么

    使用new操作符来创建对象,其背后到底发生了什么? 有一个父类Animal,Dog派生于Animal. class Program { static void Main(string[] args) ...

  6. Nginx+Memcached+Tomcat集群配置实践(Sticky Session)

    准备工作 创建一个简单的web应用,名为session.其中有两个页面,分别如下所示: 页面login.jsp <%@ page language="java" conten ...

  7. Oracle中Instr用法

    在项目中用到了Oracle中 Instr 这个函数,顺便仔细的再次学习了一下这个知识. Oracle中,可以使用 Instr 函数对某个字符串进行判断,判断其是否含有指定的字符. 其语法为:Instr ...

  8. 把NDK的工具链提取出来单独使用

    独立toolchain 把NDK压缩包解压到系统,如/mnt目录下,后在/mnt目录下建立文件夹my_ndk_toolchain,然后再/mnt目录下执行以下命令:/mnt/android-ndk-r ...

  9. python opencv 人脸识别

    def findface(image): import cv2  frame=cv2.imread('n1.jpg') classifier=cv2.CascadeClassifier("h ...

  10. style="visibility: hidden"和 style=“display:none”之间的区别

    style=“display:none” 隐藏页面元素: <html> <head> <script type="text/javascript"&g ...