VLC 录制 rtsp 流

Fil*_*pok 2 transcode record vlc stream rtsp

我在使用 VLC 播放器录制 rtsp 流时遇到问题。实际上我的方法适用于 MacOS X,但不适用于 Windows。命令行:

vlc -vvv rtsp://admin:admin@192.168.0.151/live/h264/ --sout="#transcode{vcodec=mp4v,vfilter=canvas{width=800,height=600}}:std{access=file,mux=mp4,dst=C:\123.mp4}"
Run Code Online (Sandbox Code Playgroud)

在 MacOS 上它工作正常,但在 Windows 下它会创建不可读的文件。媒体信息输出:

General
Complete name                            : C:\123.mp4
Format                                   : MPEG-4
Format profile                           : Base Media
Codec ID                                 : isom
File size                                : 1.08 MiB
Run Code Online (Sandbox Code Playgroud)

有什么建议?

小智 6

您的目标网址似乎不正确。尝试这个:

vlc -vvv rtsp://admin:admin@192.168.0.151/live/h264/ --sout="#transcode{vcodec=mp4v,vfilter=canvas{width=800,height=600}}:std{access=file,mux=mp4,dst=C:\\123.mp4}"
Run Code Online (Sandbox Code Playgroud)


NVR*_*VRM 6

对于 Linux 用户来说,ffmpeg单独使用即可立即工作。

如果您想在录制时观看流,请写入 a.mkv而不是.mp4.

此示例将覆盖您的主文件夹中的文件,video.mp4而不会因-y参数而询问,并保留原始编解码器。

ffmpeg -i rtsp://192.168.42.1/live -vcodec copy -acodec copy -y ~/video.mp4
Run Code Online (Sandbox Code Playgroud)

注意:此示例网址适用于Ambarella 小米 Mijia 4K 摄像机,与许多 wifi ip 摄像机一样,您必须首先通过 telnet 激活流,对于此特定型号,在通过 rtsp:// 读取流之前发送命令:

echo '{"msg_id":257,"token":0}' | telnet 192.168.42.1 7878
Run Code Online (Sandbox Code Playgroud)