快速掌握 VLC
作者: 一去、二三里
个人微信号: iwaleon
微信公众号: 高效程序员
在开始 libVLC 之前,请提前学习 VLC 并掌握其基本操作。或许有人会疑惑:觉得没什么必要吗?其实不然——VLC 的功能真是丰富无垠!你若好好琢磨一番,则大有裨益。

通常标准的操作可以在 GUI 中执行;但是更为复杂的操作则必须依赖命令行界面来进行处理。因此掌握 VLC 的核心在于熟练使用命令行界面,并且我们建议您按照步骤逐一深入学习!
获取帮助
VLC采用了分层架构设计。其中的核心功能专注于协调各组件间的通信流程。所有的媒体流处理都由独立的组件执行。这些组件包括媒体流接收端(输入部分)、负责解析不同媒体格式(解复用器)、负责恢复原始媒体内容(解码器)以及支持多种文件格式导出(视频输出模块)。面对如此多的功能与组件配置……但有一点必须要掌握‘知道如何使用Help,并能根据文档快速查找所需信息’。
要获取 VLC 的帮助,运行以下命令:
vlc --help
代码解读
这将列出所有的核心选项,若要获取更详尽的帮助,请使用“-H”。
注意: 请注意,在 Windows 环境中,执行此操作将生成一个名为 vlc-helper.txt 的文件,并将输出转移至该文件。
倘若要获取 VLC 中的所有模块,运行以下命令:
vlc -l
代码解读
如果想要寻求特定模块的帮助,运行以下命令:
vlc -p module --advanced --help-verbose
代码解读
--help-verbose 会显示额外的解释,如果生成的输出太多,则会忽略此选项。
VLC 语法
根据帮助文档,可以很轻易地了解 VLC 的语法:
vlc [options] [stream] …
代码解读
通过在命令行指定多个流,这些流会被包含在播放列表中,并将其中的第一项会被优先播放。
选项风格
--option:用于设置程序执行期间的全局选项。
-option:单字母版本的全局 --option。
:option:仅对此选项之前的单条流生效,且优先级高于先前的设置。
流媒体 MRL 语法
[[access][/demux]://]URL[#[title][:chapter][-[title][:chapter]]]
[:option=value ...]
代码解读
多个全局 --options 也可作为 MRL 特定的 :options 被用作其设置方式之一,并且能够指定一组或多组 :option=value
URL 语法
file:///path/file 纯媒体文件
http://host[:port]/file HTTP URL
ftp://host[:port]/file FTP URL
mms://host[:port]/file MMS URL
screen:// 屏幕捕获
dvd://[device] DVD 设备
vcd://[device] VCD 设备
cdda://[device] 音频 CD 设备
udp://[[<source address>]@[<bind address>][:<bind port>]] 流服务器发送的 UDP 流
vlc://pause:<seconds> 暂停播放列表一定时间
vlc://quit 用于退出 VLC 的特殊项目
代码解读
基本用法
多媒體 playe 可以說是 VLC 的主要用途之一,在學習多媒體技術時需注意掌握一些基本的操作。
播放流
要播放一个流(本地视频或者网络流),使用以下命令:
vlc F:\SampleVideo.mp4
代码解读
播放列表
若需制作一个播放列表,则需将多个文件以参数形式输入,并通过以下指令设置播放模式:
-Z:随机播放文件
-L:重复播放列表
-R:循环播放当前项
例如,创建一个包含两个文件的播放列表:
vlc.exe -Z F:\SampleVideo.mp4 F:\Megamind.avi
代码解读
由于使用的是随机播放模式,所以第一个、第二个文件都有可能先播放。
全屏播放
通常情况下,默认状态下,默认设置下视频会以标准窗口尺寸进行展示;若希望实现全屏显示效果,则可执行 -f 或 --fullscreen 命令。
vlc -f F:\SampleVideo.mp4
代码解读
高级用法
不仅仅是用作多媒体播放器这一角色,VLC 也能执行多种功能.例如转码与流式传输等操作……而这些操作通常会依赖于 VLC 内置的各种功能模块.
如何使用这些模块呢?最好的方法是从转码开始,基本语法格式如下:
vlc [input_stream] --sout
'#transcode{vcodec=[video_codec], acodec=[audio_codec]}
:standard{access=[type_of_output], dst=[name_of_output], mux=[output_type]}'
代码解读
看着似乎很复杂,但如果拆开来看,其实还是比较容易理解的:
input_stream:输入流,即要转码的文件或流地址。
--sout:stream output,表示输出通道。
transcode 用于对流进行转码:
vcodec:用于配置目标视频的编码与解码功能,在支持VLC的编码/解码组件中提供多种设置选项(如MP4V、MPJG等)。
acodec:目标音频编解码器,同 vcodec。
standard 在对流进行 mux 之后,将其保存到文件中或通过网络进行发送:
access:输出的协议,可以是 file、udp、rtp 或者 http。
destination: 目标位置;当 access=file 时,则指存储的位置及其名称。
mux:输出复用器(即:流的封装方式),可以在 ts、ps、ogg、avi 等之间进行选择。
还是举个栗子吧,这样更容易理解:
vlc -vvv F:\SampleVideo.mp4 --sout '#transcode{vcodec=mp4v, acodec=mpga}:standard{access=http, mux=ogg, dst=192.168.0.112:8080}'
代码解读
该系统将采用 MPEG4 编码器与 MPEG Audio 解码器对视频文件 SampleVideo.mp4 进行转码处理,并将生成的编码数据以 HTTP 流的形式发送至目标服务器(IP 地址:192.168.0.112 端口:8080)进行远程部署。
要接收该流,需要使用下述命令:
vlc http://192.168.0.112:8080
代码解读
当然了,VLC 的用法远不止于此,其他的自行尝试吧!
