按需对摄像机流进行转码

时间:2019-02-03 20:06:36

标签: http streaming vlc

我正在使用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内核。

是否有可能只有在至少一个客户端已连接的情况下才开始转码,而在最后一个客户端断开连接时停止转码?

非常感谢您!

1 个答案:

答案 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