我正在参与一个使用RTSP和摄像机镜头的项目.我的目标是创建一个连续的视频流在相同的地址and路由流,以更新视频根据我们需要显示的镜头.
所以,我要创建的预期行为是更改地址中的视频流,同时使用ffplay来可视化我正在创建的流.这是由下图重新创建的:
但这根本行不通.每当我试图更改视频时,原始视频就会冻结,无法将任何东西可视化.FFPLAY抛出错误:rtsp://localhost:8554/sample: error while seeking
.这对我来说很奇怪,因为当我关闭变速器并再次打开它时,它显示了我现在想要可视化的更改后的镜头.
要创建RTSP服务器,我正在使用这个存储库:https://github.com/p513817/rtsp4k.它是基于mediamtx和Python来重新创建所有的逻辑.
我没有RTSP的知识,所以我不知道我是否应该做一些低水平的事情来保持流量,而不是完成视频,或者我应该try 其他框架.我需要帮助!
我更新视频的逻辑是
def put_placeholder(self, input:str, route: str):
success = True
try:
# I change the Displayer to show my placeholder instead the original video
self.dprs[route] = Displayer(
input='./utils/placeholder.mp4',
route=str(route),
start_stream=True
)
# Same here
if route in PARAMS.CONF["streams"] :
PARAMS.CONF["streams"][route] = {
"input": './utils/placeholder.mp4'
}
write_config(PARAMS.CONF_PATH, PARAMS.CONF)
except Exception as e:
logging.exception(e)
success = False
finally:
# I update the info in the .json that summarize all the streams
self._update_info(
input='./utils/placeholder.mp4',
route=route,
url=self.dprs[route].get_url() if success else "",
status=success )
return self.info[route]