zoukankan      html  css  js  c++  java
  • vlc 播放器的点播和广播服务

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

    VLM

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

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

    telnet 接口

    用命令行进入 telnet 接口

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

    默认端口是 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 12     -vvv    --color    -I    telnet    --telnet-passoword   videolan  --rtsp-host 192.168.16.113    --rtsp-port 6000
    另开一个命令终端, telnet 连接到刚刚开启的 vlc telnet 接口上 
     1 congnima@Inspiron-1320:~$ telnet localhost 4212
     2 Trying127.0.0.1...
     3 Connected to localhost.
     4 Escape character is '^]'.
     5 VLC media player 2.1.6Rincewind
     6 Password:
     7 Welcome,Master
     8 > new Test vod enabled
     9 new
    10 > setup Test input Downloads/hotelcalifonia.flv
    11 setup
    12 >

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

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

    这样我们就创建好了

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

    1 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/ 



  • 相关阅读:
    nginx优化配置
    mysql查看变量/配置文件位置
    关于ubuntu的ssh远程登录的问题
    ubuntu镜像下载地址
    百度地图标注地点
    Yii常用方法
    python_将一组数据展示成直方图(以list为例)
    opencv_形态学结构化元素对形态学图像处理的影响
    C语言学习_从VC++6.0开始
    SVM原理(1)
  • 原文地址:https://www.cnblogs.com/codetravel/p/4916141.html
Copyright © 2011-2022 走看看