欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

采集直播源(摄像头)+ FFMPEG推流

程序员文章站 2022-03-04 23:25:28
...

1直播源

http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8
http://ivi.bupt.edu.cn/hls/cctv3hd.m3u8
http://ivi.bupt.edu.cn/hls/cctv5hd.m3u8
http://ivi.bupt.edu.cn/hls/cctv5phd.m3u8
http://ivi.bupt.edu.cn/hls/cctv6hd.m3u8
ONVIF网络摄像头RTSP协议扩展资料:ONVIF协议是摄像机中较常用的一种协议,它是是一种兼容协议。由安讯士联合博世及索尼三方共同成立的一个国际开放型网络视频产品标准网络接口开发论坛,取名为ONVIF(Open Network Video Interface Forum,开放型网络视频接口论坛),并以公开、开放的原则共同制定开放性行业标准。ONVIF标准为网络视频设备之间的信息交换定义通用协议,包括装置搜寻、实时视频、音频、元数据和控制信息等。
1)RTSP(Real Time Streaming Protocol)是由Real Network和Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议。RTSP对流媒体提供了诸如暂停,快进等控制,而它本身并不传输数据,RTSP的作用相当于流媒体服务器的远程控制。服务器端可以自行选择使用TCP或UDP来传送串流内容,它的语法和运作跟HTTP 1.1类似,但并不特别强调时间同步,所以比较能容忍网络延迟。
2)RTSP协议属于TCP/IP协议5层模型中的应用层。
3)大华
(1)举例rtsp://admin:[email protected]:554/cam/realmonitor?channel=2&subtype=1
(2)格式rtsp://username:[email protected]:port/cam/realmonitor?channel=1&subtype=0
(3)说明username: 用户名。例如admin。password: 密码。例如admin。ip: 为设备IP。例如 192.168.1.66。port: 端口号默认为554,若为默认可不填写。channel: 通道号,起始为1。例如通道2,则为channel=2。subtype: 码流类型,主码流为0(即subtype=0),辅码流为1(即subtype=1)。

import cv2
vid = cv2.VideoCapture('rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0 RTSP/1.0')
#vid = cv2.VideoCapture(0)
if not vid.isOpened():
    raise IOError("Couldn't open webcam or video")
video_FourCC    = int(vid.get(cv2.CAP_PROP_FOURCC))
video_fps       = vid.get(cv2.CAP_PROP_FPS)
video_size      = (int(vid.get(cv2.CAP_PROP_FRAME_WIDTH)),
                    int(vid.get(cv2.CAP_PROP_FRAME_HEIGHT)))
while True:
	return_value, frame = vid.read()
	cv2.namedWindow("video", cv2.WINDOW_NORMAL)
	cv2.imshow("video", frame)
	if cv2.waitKey(1) & 0xFF == ord('q'):break

2摄像头RSTP推RTMP流

ffmpeg -i “rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0 RTSP/1.0” -y -c:v libx264 -s 640x480 -c:a copy -f hls -hls_time 10 “http://****/”

[rtsp @ 0x30ca600] method PAUSE failed: 455 Method Not Valid in This
Statertsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0 RTSP/1.0: Operation not permitted

由于私网无权限,所以rtsp需要使用 tcp传输
ffmpeg -re -rtsp_transport tcp -i
‘rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0 RTSP/1.0’ -y -c:v libx264 -s 640x480 -c:a copy -f hls -hls_time 10 ’ http://***/’

[hls @ 0x3118b80] Opening
http://*****’ for writing

【格式】ffmpeg -re -rtsp_transport tcp -i “rtsp://用户名:密码@摄像机IP地址:RTSP端口/h264/ch1/main/av_stream” (海康RTSP)
-f flv(注意RTMP是FLV,前面拿HLS举例子) -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10
“rtmp://本机地址:1935(nginx.conf的rtmp模块下listen)/mylive(rtmp模块下application设置)/test2(随便取名字)”

3摄像头RSTP hls协议推本地http静态文件

 from ffmpy import FFmpeg, FFRuntimeError 
 ff=FFmpeg(
 inputs={'rtsp://admin:[email protected]:554/cam/realmonitor?
 channel=1&subtype=0 RTSP/1.0':'-re -rtsp_transport tcp -stream_loop -1'},    
 outputs={None:  '-y -c:v libx264 -s 640x480 -an -f hls
 -hls_list_size 5 -hls_wrap 20 -hls_time 5 /static/ts/pla.m3u8'})
  #print(ff.cmd) 
  ff.run()