以下是对您可以在以下文件中找到的所有部分的解释vls.cfg :
本节包含应用程序范围的设置。
LogFile = "name" |
VLS 日志文件的名称。如果留空 "",则不进行文件日志记录。默认值为 "vls.log"。
SystemLog = "[disable|enable]" |
记录到系统日志。目前,仅实现了使用 syslogd 的 SystemLog:使用 ./configure --enable-syslog 编译。
![]() | 如果 VLS 以 vlsd 启动,则以下配置是强制性的
|
ScreenLog = "[disable|enable]" |
记录到控制台。
示例
BEGIN "Vls" LogFile = "vls.log" SystemLog = "disable" ScreenLog = "enable" END |
在本节中,您可以定义一些用户组,以及这些用户被允许执行的命令。对于您要定义的每个组,您必须添加格式如下的一行
groupname = "command1|command2|..." |
这添加了一个名为 "groupname" 的组,该组的用户被允许执行 command1、command2 等命令。目前,可用的命令有:help、browse、start、suspend、resume、forward、rewind、stop、shutdown、logout。
示例
BEGIN "Groups" monitor = "help|browse|logout" master = "help|browse|start|resume|suspend|forward|rewind|stop|shutdown|logout" END |
本节包含允许通过管理界面控制 VLS 的用户列表。对于每个用户,添加格式如下的一行
username = "password:groupname" |
这添加了一个用户 "username",他属于组 "groupname"(在 "Groups" 节中定义),并且可以使用密码 "password" 登录。
在 Unix/Linux 下,密码必须使用诸如 mkpasswd 之类的工具或 UNIX 函数 "crypt" 进行加密。
在 Windows 下,密码必须是明文。
Unix/Linux 示例
BEGIN "Users" monitor = "3BcKWoiQn0vi6:monitor" # password is 'monitor' admin = "42BKiCguFAL/c:master" # password is 'Vir4Gv5S' END |
在本节中,您可以配置 telnet 管理界面。
LocalPort = "port" |
定义 telnet 服务器将使用的端口。默认端口为 "9999"。
Domain = "domain" |
可以是 "inet4" 或 "inet6"(默认为 "inet4")。如果您想使用 IPv4 地址,请放置 "inet4",如果您想使用 IPv6,请放置 "inet6"。
LocalAddress = "IP address" |
定义 telnet 服务器将监听请求的 IP 地址。默认地址为 "0.0.0.0"(或 IPv6 的 "0::0")。
示例
BEGIN "Telnet" LocalPort = "9999" END |
在本节中,您可以定义要使用的输入。对于您需要的每个输入,添加格式如下的一行
InputName = "Type" |
这添加了一个名为 "InputName" 的输入,其类型为 "Type"。如前所述,有几种输入类型
"local" 从文件或 DVD 播放流,
"video" 从 MPEG 编码卡播放流,
"dvb" 从 DVB 卡播放流,
"v4l" 从 Video4Linux 设备播放流。
每个输入都必须在其自己的节中配置(请参阅下一段)。
示例
BEGIN "Inputs" local1 = "local" pvr = "video" dvb1 = "dvb" tuner = "v4l" END |
对于在 "Inputs" 节中声明的每个输入,除了 "local" 输入之外,您都必须添加一个与相应输入名称相同的节。例如,如果您声明了一个输入 "pvr",则应该也有一个名为 "pvr" 的节。此类节的语法取决于相应输入的类型。
要配置本地输入,您不必执行任何操作。除非必须使用另一种特技播放策略
BEGIN "Local1" ProgramCount = "1" TrickPlay = "normal" END |
"Local1" 是您要配置的本地输入的名称。"ProgramCount" 是分配给此输入的节目数量。"TrickPlay" 是此输入使用的特技播放策略(默认为 "normal")。
要配置视频输入,请添加格式如下的节
BEGIN "VideoInputName" Device = "device" Type = "type" END |
"VideoInputName" 是您要配置的视频输入的名称。"Device" 是您要从中读取的 MPEG 编码卡的路径(默认为 "/dev/video")。"Type" 可以是 "Mpeg2-PS" 或 "Mpeg2-TS",具体取决于您的设备配置(默认为 "Mpeg2-PS")。
Hauppauge WinTV-PVR-250 卡示例
BEGIN "pvr" Device = "/dev/video0" Type = "Mpeg2-PS" END |
要配置 dvb 输入,请添加格式如下的节
BEGIN "DvbInputName" DeviceNumber = "devicenumber" SendMethod = "0" END |
"DvbInputName" 是您要配置的 dvb 输入的名称。如果您要流式传输完整的 DVB 流,请将 "SendMethod" 设置为 "0",如果您只想流式传输 MPEG 音频和视频流,请将其设置为 "1"(默认为 "0")。"DeviceNumber" 是您要从中读取的 DVB 设备的编号(从/dev/ost/dvr<devicenumber>读取,默认为 "")。dvb 配置文件由驱动程序定义。您可以在$HOME/.dvbrc中找到它,用于 /dev/dvb/adapter0,或在$HOME/.dvbrc.X中找到它,用于/dev/dvb/adapterX .
示例
BEGIN "dvb1" DeviceNumber = "0" TrickPlay = "normal" END |
在本节中,您可以定义要使用的频道(输出)。对于每个频道,编写格式如下的一行
ChannelName = "Type" |
这添加了一个名为 "ChannelName" 的频道,其类型为 "Type"。"Type" 必须是 "network" 或 "file"。与输入一样,频道必须在其自己的节中配置。
示例
BEGIN "Channels" localhost = "network" client1 = "network" client2 = "network" multicast1 = "network" multicast2 = "network" localfile = "file" END |
对于在 "Channels" 节中声明的每个频道,您都必须添加一个与相应频道名称相同的节。此类节的语法取决于相应频道的类型。
要配置网络频道,请添加格式如下的节
BEGIN "NetChannelName" Domain = "Domain" Type = "Type" SrcHost = "SourceHost" SrcPort = "SourcePort" DstHost = "DestHost" DstPort = "DestPort" TTL = "ttl" Interface = "Interface" END |
"NetChannelName" 是您要配置的网络频道的名称。
"Domain" 可以是 "inet4"(如果您使用 IPv4 地址),也可以是 "inet6"(如果您使用 IPv6)(默认为 "inet4")。
"Type" 可以是 "unicast"、"broadcast" 或 "multicast"(默认为 "unicast"),具体取决于您想要做什么(以及您的 "DstHost" 地址)。
"SourceHost" 是 VLS 将从中发送流的 IP 地址(或 DNS 名称)。
"SourcePort" 是将从中发送流的 UDP 端口。
"DestHost" 是流将发送到的 IP 地址(或 DNS 名称)。
"DestPort" 是流将发送到的 UDP 端口(默认为 "1234")。
"TTL" 是一个仅在 "Type" 为 "multicast" 时有用的选项(默认值为 "0")。如果您的多播数据包必须跨越多个路由器,您可以使用它来增加多播数据包的 TTL。
"Interface" 是一个仅在 GNU/Linux 下支持的选项,用于强制流通过给定的网络接口发送,例如 "eth1"(要使用此选项,您必须具有超级用户权限)。
![]() | "SrcHost" 和 "SrcPort" 是可选的(如果您不设置它们,VLS 将不会“绑定”套接字)。 |
要配置文件频道,请添加格式如下的节
BEGIN "FileChannelName" FileName = "file" Append = "append" END |
"FileChannelName" 是您要配置的文件频道的名称。"file" 是将存储流的文件名(默认为 "fileout.ts")。"append" 可以是 "yes" 或 "no",指示 VLS 是将流附加到文件末尾还是重写文件。
示例
BEGIN "localhost" # The client is on the same host as the server DstHost = "localhost" DstPort = "1234" END BEGIN "client1" # unicast towards client1 DstHost = "192.168.1.2" DstPort = "1234" END BEGIN "client2" # unicast towards client2 in IPv6 Domain = "inet6" DstHost = "3ffe:ffff::2:12:42" DstPort = "1234" END BEGIN "multicast1" # multicast streaming Type = "multicast" DstHost = "239.2.12.42" DstPort = "1234" TTL = "2" END BEGIN "multicast2" # multicast streaming in IPv6 Domain = "inet6" Type = "multicast" DstHost = "ff08::1" DstPort = "1234" TTL = "12" END BEGIN "localfile" # file output FileName = "stream.ts" Append = "no" END |
![]() | 如果您使用 Windows,则应指定 "SrcHost" 和 "SrcPort" 字段。例如
|
如前所述,您必须定义节目。每个节目都是一个 MPEG 流(例如,一个文件)。为此,您必须在您的文件中添加一个 "Input" 节vls.cfg。每个 "Input" 节必须具有以下语法
BEGIN "Input" FilesPath = "path" ProgramCount = "count" END |
"path" 是您的 MPEG 文件所在的路径(默认情况下为当前目录)。"count" 是定义的节目数量(默认为 "0")。
对于您要定义的每个节目,您必须添加格式如下的节
BEGIN "number" Name = "name" Type = "type" FileName = "file" Device = "device" END |
"number" 是节目编号:第一个节目编号为 1,第二个节目编号为 2,依此类推。
"name" 是节目名称,您将通过该名称告诉 VLS 启动此节目(请参阅下一章“运行 VLS”)。
"type" 可以是 "Mpeg1-PS"、"Mpeg2-PS"、"Mpeg2-TS" 或 "DVD"。如果您的流存储在 MPEG 文件(*.mpeg、*.mpg、*.vob 等)中,则它可能是 Mpeg1-PS 或 Mpeg2-PS 格式。
如果 "type" 设置为 "Mpeg1-PS"、"Mpeg2-PS" 或 "Mpeg2-TS",VLS 将假定您的流存储在目录 "path" 中的文件 "file" 中("path" 是在 "Input" 节中定义的变量)。
如果 "type" 是 "DVD",则将使用变量 "Device" 而不是 "FileName"(变量 "FilesPath" 不会添加到设备名称前面!)。变量 "Device" 是您的 DVD 驱动器的设备(例如 "/dev/hdc" 或 "/dev/cdrom")。您也可以播放复制到硬盘上的 DVD:然后 "device" 是存储 .vob 文件的目录(例如 "/mnt/data/VIDEO_TS")。
![]() | VLS 可以流式传输满足以下两个标准的 MPEG 文件
您可以下载此可流式传输的 MPEG-2 PS 文件进行测试:presentation_short.vob。 |
![]() | 为了播放 DVD,您需要使用 DVD 支持编译 VLS,这会使用 libdvdread 和 libdvdcss。您将需要对 DVD 设备具有读取和写入访问权限。 |
完整示例
BEGIN "Input" FilesPath = "/home/videolan/streams" ProgramCount = "4" END BEGIN "1" # MPEG2 stream stored in /home/videolan/streams/Dolby.vob Name = "dolby" FileName = "Dolby.vob" Type = "Mpeg2-PS" END BEGIN "2" # another file Name = "canyon" FileName = "Dolby_Canyon.vob" Type = "Mpeg2-PS" END BEGIN "3" # DVD Name = "dvd" Device = "/dev/cdrom" Type = "Dvd" END BEGIN "4" # DVD stored on a hard disk Name = "matrix" Device = "/mnt/data/matrix/VIDEO_TS" Type = "Dvd" END |