vlc 是一个开源的,同时跨平台的播放器。在研究 rtsp 协议时发现,它同时还是一个强大的流媒体服务器

VLM

VLM(VideoLAN Manager) 在 vlc 中是一个小型的媒体管理器,它能在只启用一个 vlc 的实例的情况下管理多个流。它只能在 telnet 接口和 http 接口下被控制

平时如果是 GUI 界面,那就是通过鼠标点击窗口的按钮和菜单来控制程序。在 linux 下,习惯用命令行来控制程序的运行。 vlc 还提供另外两种方式来受控。一种是 telnet 的接口,它接受 telnet 连接,能过预设的一些命令来控制程序。一种是 http 接口的方式,家用路由常用这种方式来提供控制界面

telnet 接口

用命令行进入 telnet 接口

  1. vlc --ttl -vvv --color -I telnet --telnet-password videolan --rtsp-host 192.168.16.113--rtsp-port 

默认端口是 4212,默认的密码为 "admin"。使用 --telnet-port <Integer> 和 --telnet-password <string> 选项来发言为端口和密码

http 接口

使用 URL http://host:port/vlm.html(对于 vlc 0.8.4 及以后的版本是 http://host:port/vlm/  )  进入 vlm 的管理界面

VLM 的配置文件

VLM 的配置文件是一系列的命令:每一行一个命令

创建一个配置文件,只需要编辑一份文本文件,然后输入一串的 VLM 命令就行了。注意递归调用:比如在 load (file)时,要注意文件的相互引用

菜单 Tools -> VLM configurator 可以打开 VLM 配置文件的编辑器,最下方可以导入与导出配置文件

使用下面的命令使得在启动 VLC 时加载一个 VLM 配置文件

  1. vlc -I telnet --vlm-conf vlm.conf

VLM 支持的媒体类型

一个媒体(media)指的是多个输入(比如音频流和视频流),一个输出及相应的一些选项

VLM 支持两种媒体类型:

vod:video on demand, 只在客户请求的时候服务

广播:跟电视节目类似,播放,暂停等操作都由服务端控制,客户端表示很无奈,没有一点控制权

创建一个VOD 服务

以 telnet 方式打开 vlc 播放器,创建 rtsp 服务,使用地址 192.168.16.113 及端口 6000

vlc    --ttl      -vvv    --color    -I    telnet    --telnet-passoword   videolan  --rtsp-host 192.168.16.113    --rtsp-port 
另开一个命令终端, telnet 连接到刚刚开启的 vlc telnet 接口上 
 congnima@Inspiron-:~$ telnet localhost
Trying127.0.0....
Connected to localhost.
Escape character is '^]'.
VLC media player 2.1.6Rincewind
Password:
Welcome,Master
> new Test vod enabled
new
> setup Test input Downloads/hotelcalifonia.flv
setup
>

接着创建名为 Test,媒体类型为 vod 的服务:new Test vod enabled

设置它的一些属性,输入为本地的文件hotelcalifonia.flv :setup Test input Downloads/hotelcalifonia.flv

这样我们就创建好了

使用下面这个命令可以播放出视频了。亲测在内网的不同机器或者移动手机端,只要播放的网络流地址填写正确(在这里是 rtsp://192.168.16.113:6000/Test),都能正确地点播这个视频

 vlc rtsp://192.168.16.113:6000/Test

一些细节

在 telnet 时,vlm 提供如下命令:

  • help: 显示当前所有的命令列表
  • new (name) vod|broadcast|schedule [properties]: 创建一个新的 vod,广播或者计划(schedules)(计划是一个带日期的脚本,在指定的这个日期那天,这个脚本会自动执行)。名字不能是 "media" 或者 “schedule" 。后面可以指定一些属性,或者到后面用 setup 这个命令来指定。
  • setup (name) (properties): 设定 name 所代表的元素的属性
  • show [(name)|media|schedule]: 显示状态和配置
    • show (name): 显示所有的 name 这个元素的信息
    • show media: 显示媒体状态的汇总信息
    • show schedule: 显示计划状态的汇总信息
  • del (name)|all|media|schedule:删除操作
    • del (name): 删除 name 这个元素
    • del all: 删除所有元素
    • del media: 删除所有媒体元素
    • del schedule: 删除所有计划元素
  • control (name) [instance_name] (command): 改变 name 这个媒体所在实例(instance_name)的状态
  • save (config_file):保存所有媒体和计划的配置到指定的配置文件。如果该配置文件已经存在,那么将会被覆盖。播放,暂停,停止等这些状态将不会被保存
  • load (config_file): 加载一个配置文件

Media Properties媒体属性

属性可以一个接着一个

  • input (input_name): 在播放列表中添加一个输入流
  • output (output_name):定义一个媒体的输出。注意:不需要为vod 定义输出
  • option (option_name)[=value] :把 option_name 加入到选项列表中。选项是全局的,对于输入的所有的媒体都起作用
  • enabled|disabled: 开启或者关闭该媒体。如果一个媒体是关闭的,它将不能用作流,被暂停,或者被播放
  • loop|unloop (broadcast only): 循环播放
  • mux (mux_name): 指定这个属性表明想封装一个流,而不是使用裸数据。mux_name 应该被指定为四个字符长的标识,比如,mp2t 代表 MPEG  TS,mp2p 代表 MPEG PS。注意:这个属性只用于 vod 媒体

Control Commands控制命令

  • play: 开始播放输入表中的第一项,接着播放表中的第二项,...,有点像播放列表
  • pause: 暂停
  • stop:停止
  • seek (percentage): 快进到某个百分比的位置

参考资料

https://en.wikipedia.org/wiki/VLC_media_player

https://wiki.videolan.org/Documentation:Command_line/

https://wiki.videolan.org/Documentation:Streaming_HowTo/VLM/

vlc 播放器的点播和广播服务的更多相关文章

  1. Android VLC播放器二次开发3——音乐播放(歌曲列表+歌词同步滚动)

    今天讲一下对VLC播放器音频播放功能进行二次开发,讲解如何改造音乐播放相关功能.最近一直在忙着优化视频解码部分代码,因为我的视频播放器需要在一台主频比较低的机器上跑(800M主频),所以视频解码能力受 ...

  2. 使用vlc播放器做rtsp流媒体服务器

    可参考: 使用vlc播放器播放rtsp视频 web网页中使用vlc插件播放相机rtsp流视频 使用vlc进行二次开发做自己的播放器 首先需要安装vlc播放器,下载及安装步骤略 使用vlc播放器做rts ...

  3. 使用vlc播放器播放rtsp流视频

    可参考: 使用vlc播放器做rtsp服务器 web网页中使用vlc插件播放相机rtsp流视频 使用vlc进行二次开发做自己的播放器 首先需要安装vlc播放器,下载及安装步骤略 使用vlc播放器播放rt ...

  4. Android VLC播放器二次开发1——程序结构分析

    最近因为一个新项目需要一个多媒体播放器,所以需要做个视频.音频.图片方面的播放器.也查阅了不少这方面的资料,如果要从头做一个播放器工作量太大了,而且难度也很大.所以最后选择了VLC作为基础,进行二次开 ...

  5. centos7安装VLC播放器

    centos7安装VLC播放器 1.安装eple 下载地址:https://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noar ...

  6. Centos 上使用mmsh协议听猫扑网络电台 VLC播放器

    Centos 上使用mmsh协议听猫扑网络电台 VLC播放器 安装CentOS已经有一段时间了,但是由于在Linux下除了学习,其他是事情都干不了.今天想闲来无事开了CentOS就想听一下歌,突然想起 ...

  7. Ubuntu安装VLC播放器

    Ubuntu安装VLC官方介绍:http://www.videolan.org/vlc/download-ubuntu.html sudo apt-get update sudo apt-get in ...

  8. iOS实现基于VLC播放器的封装效果

    前言: 在一些特定场景下,我们获取到的音视频,由于格式比较特殊,用avplayer等播放器是无法播放的,此时,我们可以借助强大的VLC播放器来处理. 原理这里不再赘述,下面我们讲一下如何添加VLC播放 ...

  9. Android VLC播放器二次开发2——CPU类型检查+界面初始化

    上一篇讲了VLC整个程序的模块划分和界面主要使用的技术,今天分析一下VLC程序初始化过程,主要是初始化界面.加载解码库的操作.今天主要分析一下org.videolan.vlc.gui.MainActi ...

随机推荐

  1. java中的二维数组基础知识

    二维数组基本知识,毕竟常见的有:概念,初始化,遍历 概念: 理解二维数组,首先要先理解一维数组是什么.一维数组是个容器,存储相同数据类型的容器(这里不再做一位数组的具体介绍).二维数组就是用来存储一维 ...

  2. considerate|considerable|content|Contact|Consult|deceived|

    ADJ-GRADED 替人着想的;体贴的Someone who is considerate pays attention to the needs, wishes, or feelings of o ...

  3. jmeter接口压测的反思

    jmeter接口压测的反思 1.keepalive的坑:连接数满了,导致发起的请求失败. 2.token关联?是数据库取做参数化,还是随机数生成(需要改代码) 3.签名问题如何处理? 4.压测负载机端 ...

  4. Java发送Post请求,参数JSON,接收JSON

    /** * 发送post请求 * @param url 路径 * @param jsonObject 参数(json类型) * @param encoding 编码格式 * @return * @th ...

  5. Archlinux安装与出现的问题

    arch的安装 arch的安装主要参考官网arch wiki,基本上按照Beginners' guide的步骤就可以安装,不过这里推荐用U盘刻录的方法来安装,我尝试过用硬盘安装的办法,还是感觉U盘刻录 ...

  6. 实战:Zabbix 3.4邮件报警配置

    环境:CentOS 7 + Zabbix 3.4 如果只是监测并不能满足需求,还需要通过邮件的方式对问题进行报警.接下来进行实战操作: 一.安装邮件发送工具 mailx 如果CentOS 有邮件服务, ...

  7. java.lang.ClassNotFoundException :xxxxxxx

    码的!java.lang.ClassNotFoundException: org.springframework.jdbc.core.RowMapper这个错误搞了半天 因为写的项目是手动建的WEB- ...

  8. Java实体映射工具MapStruct的使用

    官网地址:http://mapstruct.org/ MapStruct 是一个代码生成器,简化了不同的 Java Bean 之间映射的处理,所谓的映射指的就是从一个实体变化成一个实体.例如我们在实际 ...

  9. 机器学习的盛宴:NIPS 2015

    作者:微软亚洲研究院实习生:林添 冰雪王国的浪漫 机器学习的盛宴 NIPS(Advances in Neural Information Processing Systems,神经信息处理系统进展大会 ...

  10. usb设备枚举过程

    USB主机在检测到USB设备插入后,就要对设备进行枚举了.为什么要枚举呢?枚举就是从设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些信息来加载合适的驱动程序.调试USB设 ...