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/ 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM