Использование ffmpeg для захвата изображения с низкой загрузкой ЦП из потока RTSP - PullRequest
0 голосов
/ 21 января 2019

Я использую ffmpeg для захвата изображения из потока RTSP в ограниченной среде (небольшая память, диск и процессор). Я получаю много поврежденных изображений и получаю ошибки из журналов ffmpeg, как показано ниже:

[rtsp @ 0x7f164aca1220] max delay reached. need to consume packet
[rtsp @ 0x7f164aca1220] RTP: missed 21 packets
[h264 @ 0x7f164e7b31a0] error while decoding MB 118 17, bytestream -15
[h264 @ 0x7f164e7b31a0] concealing 6051 DC, 6051 AC, 6051 MV errors in P frame
[rtsp @ 0x7f164aca1220] max delay reached. need to consume packet
[rtsp @ 0x7f164aca1220] RTP: missed 155 packets
[h264 @ 0x7f164e7b31a0] error while decoding MB 61 19, bytestream -9
[h264 @ 0x7f164e7b31a0] concealing 5868 DC, 5868 AC, 5868 MV errors in P frame
[rtsp @ 0x7f164aca1220] max delay reached. need to consume packet
[rtsp @ 0x7f164aca1220] RTP: missed 5 packets
[h264 @ 0x7f164e7b31a0] error while decoding MB 68 45, bytestream -5
[h264 @ 0x7f164e7b31a0] concealing 2741 DC, 2741 AC, 2741 MV errors in P frame
[rtsp @ 0x7f164aca1220] max delay reached. need to consume packet
[rtsp @ 0x7f164aca1220] RTP: missed 4 packets
[h264 @ 0x7f164e7b31a0] error while decoding MB 40 48, bytestream -9
[h264 @ 0x7f164e7b31a0] concealing 2409 DC, 2409 AC, 2409 MV errors in P frame
[rtsp @ 0x7f164aca1220] max delay reached. need to consume packet
[rtsp @ 0x7f164aca1220] RTP: missed 243 packets
Input #0, rtsp, from 'rtsp://******:
version=1.0&action=getRTSPStream&ChannelID=1&ChannelName=Channel1
      Duration: N/A, start: 2.393333, bitrate: N/A
        Stream #0:0: Video: h264 (Main), yuvj420p(pc, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 15 fps, 20 tbr, 90k tbn, 30 tbc
    Output #0, image2, to 'frames/image6.jpg':
      Metadata:
        title           : Media Presentation
        comment         : StreamingSetting?version=1.0&action=getRTSPStream&ChannelID=1&ChannelName=Channel1
        encoder         : Lavf57.56.101
        Stream #0:0: Video: mjpeg, yuvj420p(pc), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 20 fps, 20 tbn, 20 tbc
        Metadata:
          encoder         : Lavc57.64.101 mjpeg
        Side data:
          cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1
    Stream mapping:
      Stream #0:0 -> #0:0 (h264 (native) -> mjpeg (native))

Я пробовал несколько разных способов решения этих ошибок, например, используя протокол TCP, такой как this сказал:

"ffmpeg -nostats -loglevel 0 -rtsp_transport tcp -y -i rtsp://****** -vframes 1 frames/image" + str(count)  +".jpg"

Но это не работает.

Я проверил загрузку ЦП, пока ffmpeg снимает изображения, и увидел, что ЦП загружен на 99%. И я думаю, что очень возможно, что поврежденные образы вызваны высокой загрузкой процессора. Я прочитал несколько постов, чтобы решить проблему с высокой загрузкой процессора ffmpeg во время захвата видео, а не изображений, например this link ,

Но есть ли у нас какие-либо параметры команд, чтобы уменьшить загрузку процессора при использовании ffmpeg для захвата изображений из потока RTSP?

Спасибо заранее!

...