VLC 命令行:cvlc、串流与自动化

进阶 最后更新: 适用环境: Windows / macOS / Linux · VLC 3.0.x

GUI 之下,VLC 是一个完整的命令行媒体引擎。无头二进制 cvlc(或 vlc --intf dummy)让你可以脚本化播放、运行串流服务器、批量转换,甚至通过文本界面控制正在运行的实例。如果你在服务器或 NAS 上管理媒体,这份指南会为你解锁 VLC。

第 1 步 —— 从终端基本播放

  1. Linux/macOS 上,cvlc 随 VLC 一起安装。Windows 上用完整路径:"C:\Program Files\VideoLAN\VLC\vlc.exe",并加上下面的 --intf 参数。

    二进制可用。

  2. 无头播放文件:cvlc /path/to/movie.mkv --intf dummy --play-and-exit

    VLC 播放文件后退出,不出现任何窗口。

  3. 不播放而列出文件的流信息:cvlc movie.mkv --intf dummy --play-and-exit -vvv 2>&1 | grep -i "stream 0"

    打印编解码器和流信息。

说明--play-and-exit 是脚本的主力参数:VLC 在文件结束时退出,因此 cron/systemd 任务能干净地终止。

第 2 步 —— 把文件或设备串流到网络

  1. HTTP 串流:cvlc movie.mkv --sout "#standard{access=http,mux=ts,dst=:8080}"

    VLC 在 8080 端口提供串流;任何播放器都能打开 http://:8080。

  2. 实时摄像头/设备串流:cvlc -vvv v4l2:///dev/video0 --sout "#transcode{vcodec=h264,vb=1200}:standard{access=http,mux=ts,dst=:8090}"(Linux)或 dshow://(Windows)。

    正在广播实时 H.264 串流。

  3. 用 Ctrl+C 停止——VLC 会清理监听器。

    串流结束。

第 3 步 —— 一条命令批量转换

  1. 单个文件:cvlc input.mkv --sout "#transcode{vcodec=h264,acodec=mpga,vb=2000}:standard{mux=mp4,dst=output.mp4}" --sout-keep --play-and-exit

    文件转换完成。

  2. 遍历文件夹:for f in *.mkv; do cvlc "$f" --sout "#transcode{...}:standard{mux=mp4,dst=${f%.mkv}.mp4}" --play-and-exit; done

    每个文件依次转换。

  3. 重型任务先考虑 ffmpeg 替代方案——cvlc 用软件编码,比带硬件编码器的 ffmpeg 慢。

    你为任务选对了工具。

第 4 步 —— 用于远程控制的 rc 界面

  • 带控制通道启动:cvlc --extraintf rc --rc-host 127.0.0.1:4212 movie.mkv
  • 从另一个终端连接:telnet 127.0.0.1 4212(Linux/macOS)或在 Windows 上用 telnet 客户端。
  • 命令:play、pause、stop、seek 120、volume 80、next、prev、info、playlist
  • 通过文件脚本化:printf "play\nvolume 60\n" | cvlc --extraintf rc --rc-fake-tty movie.mkv

常见问题

vlc 和 cvlc 有什么区别?
cvlc 是同一个二进制但不加载任何 GUI 界面——它存在于所有平台,但在部分 Linux 包中是一个包装。Windows 上给 vlc.exe 加 --intf dummy 即可获得同样效果。
VLC 能把我的摄像头串流到网页吗?
可以——第 2 步的设备串流示例提供 HTTP 串流,你可以用指向该 URL 的 HTML5 video 标签嵌入(TS 封装在大多数浏览器中可播放)。
为什么命令行转换比 GUI 慢?
不会——两者用同一个软件编码器,GUI 只是看起来更友好。要追求速度,就用带 GPU 编码器的 ffmpeg。
如何查找 VLC 所有命令行选项?
运行 cvlc --longhelp(或 --help --help-verbose)并重定向到文件:cvlc --longhelp > vlc-help.txt。各模块选项列在 "Stream output" 部分之下。