В настоящее время я пытаюсь использовать python с FFmpeg для запроса данных rtsp с исходным форматом h264.
Информация о видео в реальном времени: fps: 29; разрешение: 1280 * 720.
Я могу sh, чтобы я мог запросить данные в том же формате "h264" и поместить в очередь python для будущего использования.
Вот мой код:
class CCTVReader(threading.Thread):
def __init__(self, queue, URL, fps=29):
super().__init__()
self.queue = queue
self.command = ["ffmpeg", "-y",
"-hwaccel", "nvdec",
"-c:v", "h264_cuvid",
"-vsync", "0",
"-max_delay", "500000",
"-reorder_queue_size", "10000",
"-i", "rtsp://xxx.xxx.xxx.xxx:xxx/Streaming/Channels/101?transportmode=multicast",
"-pix_fmt", "yuv420p",
"-preset", "slow",
"-an", "-sn",
"-vf", "fps=29",
"-"]
def run(self):
pipe = sp.Popen(self.command, stdout = sp.PIPE, bufsize=1024**3, shell=True)
timer = time.time()
counter = 0
while True:
self.queue.put(pipe.stdout.read(int(1280*720*6//4)))
Однако, после запуска этой программы примерно через 10 секунд, моя консоль показывает предупреждение:
[rtsp @ 0000020be0fbb9c0] max delay reached. need to consume packet
[rtsp @ 0000020be0fbb9c0] RTP: missed 127 packets
Похоже, моя команда не введите соответственно.
Не могли бы вы дать мне несколько советов о том, как решить эту проблему?
Большое спасибо