我正在使用VLC通过以下命令将rtsp流从IP摄像机转码为http mjpg流:
cvlc -vvv -Idummy -q rtsp://user:password@hostname:554 --sout '#transcode{vcodec=MJPG,venc=ffmpeg{strict=1}}:standard{access=http{mime=multipart/x-mixed-replace;boundary=--7b3cc56e5f51db803f790dad720ed50a},mux=mpjpeg,dst=:8081/}'
这很好用。
我不需要一直对流进行代码转换,只需要对其中的一小部分进行转码。即使没有连接客户端,VLC也会进行转码。它一直在我的服务器上使用整个CPU核心。
是否有可能仅在连接了至少一个客户端时才开始转码,如果最后一个客户端断开连接则停止转码?
非常感谢你!
我想你问你是否可以从你的服务器运行上面的命令行命令 - 如果是这样,那么它确实取决于服务器和语言,但一般来说是的,你可以。
您的服务器逻辑将是这样的:
当客户端连接时:
当客户端断开连接时:
由于流被缓冲,第一个客户端会有延迟,但我猜你已经知道了。
运行命令的方式取决于服务器,但您通常可以找到示例 - 例如for Node:qazxsw poi
如果你正在使用Java,那么关于从Java运行cmd行的文章也是非常有用的 - 即使你没有使用Java,它也是很好的阅读:Execute a command line binary with Node.js