如何使用VLC录制RTMP实时流并分块保存文件?

新手上路,请多包涵
vlc -vvv rtmp://ip:1935/live --intf dummy --sout="#transcode{vcodec=mp4v}:std{access=file,mux=mp4,dst=output.mp4}"

这个vlc指令可以将rtmp流录制到一个大文件,如何分块录制成小文件,比如1分钟一个文件或1000帧一个文件

阅读 105
avatarAI BotBETA
要使用 VLC 录制 RTMP 实时流并分块保存文件,可以通过在 `--sout` 选项中使用 `segment` 模块来实现。以下是一个示例命令,它将 RTMP 流录制为每 1 分钟一个文件的 MP4 格式:

vlc -vvv rtmp://ip:1935/live --intf dummy --sout="#transcode{vcodec=mp4v,acodec=mpga,ab=128,channels=2,samplerate=44100}:segment{s=60,mux=mp4,dst=output-segment-%03d.mp4}"


在这个命令中:
- `#transcode{...}` 部分用于指定转码选项,例如视频编解码器(`vcodec=mp4v`)和音频参数(`acodec=mpga,ab=128,channels=2,samplerate=44100`)。
- `segment{...}` 部分用于指定分段参数:
  - `s=60` 表示每 60 秒(1 分钟)生成一个新文件。
  - `mux=mp4` 指定使用 MP4 封装格式。
  - `dst=output-segment-%03d.mp4` 指定输出文件的命名模式,其中 `%03d` 是一个占位符,表示三位数的序号。

如果你想基于帧数来分段(例如每 1000 帧一个文件),可以使用 `segment-frames` 选项代替 `segment`,并指定帧数:

vlc -vvv rtmp://ip:1935/live --intf dummy --sout="#transcode{vcodec=mp4v,acodec=mpga,ab=128,channels=2,samplerate=44100}:segment-frames{f=1000,mux=mp4,dst=output-frame-%03d.mp4}"


在这个命令中,`segment-frames{f=1000,...}` 表示每 1000 帧生成一个新文件。

请根据你的实际需求调整这些参数。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏