我正在使用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内核。
是否有可能只有在至少一个客户端已连接的情况下才开始转码,而在最后一个客户端断开连接时停止转码?
非常感谢您!
答案 0 :(得分:1)
我想您是在问是否可以从服务器上运行上述命令行命令-如果可以,那么它确实取决于服务器和语言,但总的来说可以。
您的服务器逻辑将类似于:
当客户端连接时:
当客户端断开连接时:
第一个客户端会因为流被缓冲而延迟,但是我想您已经知道了。
运行命令的方式取决于服务器,但是您通常可以找到示例-例如节点:Execute a command line binary with Node.js
如果您使用的是Java,那么还有一篇关于从Java运行cmd行的非常知名和有用的文章-即使您没有使用Java,也应阅读:https://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html