|
- import time
- import cv2
- import subprocess as sp
- # 推流
- import ffmpeg
- import numpy as np
-
- if __name__== "__main__":
-
-
- # with open(str(cv2.__file__),"r") as f:
- # print (f.read())
-
- # cap = cv2.VideoCapture("rtmp://live.play.t-aaron.com/live/THSAs")
- # # Get video information
- # fps = int(cap.get(cv2.CAP_PROP_FPS))
- # print(fps)
- # width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
- # print(width)
- # height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
- # print(height)
- # fourcc = int(cap.get(cv2.CAP_PROP_FOURCC))
- # print(fourcc)
- # # print(cv2.getBuildInformation())
- # # cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
- # # cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
- # # cap.set(cv2.CAP_PROP_FPS, 60)
- # # cap.setExceptionMode(True)
- # print(cap.getExceptionMode())
-
-
- # ffmpeg command
- # command = ['ffmpeg',
- # '-y', # 不经过确认,输出时直接覆盖同名文件。
- # '-f', 'rawvideo',
- # '-vcodec','rawvideo',
- # '-pix_fmt', 'bgr24',
- # '-s', "{}x{}".format(1920, 1080),
- # # '-s', "{}x{}".format(1280, 720),
- # '-i', '-', # 指定输入文件
- # '-c:v', 'libx264', # 指定视频编码器
- # '-pix_fmt', 'yuv420p',
- # '-g', '5',
- # "-an",
- # '-b:v', '3000k',
- # '-preset', 'ultrafast', # 指定输出的视频质量,会影响文件的生成速度,有以下几个可用的值 ultrafast,
- # # superfast, veryfast, faster, fast, medium, slow, slower, veryslow。
- # '-f', 'flv',
- # "rtmp://live.push.t-aaron.com/live/THSAk"]
- kwargs = {'format': 'rawvideo',
- 'vcodec': 'rawvideo',
- 'pix_fmt': 'bgr24',
- 's': '{}x{}'.format(int(1920), int(1080))}
- out = {
- 'g': str(25),
- 'b:v': '6000k',
- # '-bufsize': '3000k',
- 'tune': 'zerolatency', # 加速编码速度
- 'c:v': 'libx264', # 指定视频编码器
- 'sc_threshold': '0',
- 'pix_fmt': 'yuv420p',
- 'flvflags': 'no_duration_filesize',
- 'preset': 'ultrafast', # 指定输出的视频质量,会影响文件的生成速度,有以下几个可用的值 ultrafast,
- # superfast, veryfast, faster, fast, medium, slow, slower, veryslow。
- 'format': 'flv'}
- # 管道配置
- process2 = (
- ffmpeg
- .input('pipe:', **kwargs)
- .output('rtmp://live.push.t-aaron.com/live/THSAk', **out)
- .global_args('-y', '-an')
- .overwrite_output()
- .run_async(pipe_stdin=True)
- )
- # 管道配置
- # p = sp.Popen(command, stdin=sp.PIPE, shell=False)
-
- process = (
- ffmpeg
- .input('rtmp://221.226.114.142:19350/rlive/stream_4?sign=PZIGmXvw')
- .output('pipe:', format='rawvideo', pix_fmt='bgr24')
- .overwrite_output()
- .global_args('-an')
- .run_async(pipe_stdout=True)
- )
- # while(cap.isOpened()):
- while True:
- start =time.time()
- # ret, frame = cap.read()
- # print(cap.grab())
- in_bytes = process.stdout.read(1920 * 1080 * 3)
- # print("aaaaaaaaaaaaaaa", time.time()-start)
- # print("aaaaaaaaaaaaaa", time.time()-start)
- # start =time.time()
- # a,b = cap.retrieve()
- if not in_bytes:
- print("Opening camera is failed")
- break
- frame = (np.frombuffer(in_bytes, np.uint8).reshape([1080, 1920, 3]))
- print("ccccccccccccccc", time.time()-start)
- # process2.stdin.write(frame.tostring())
- # print("bbbbbbbbbbbbbb", time.time()-start)
|