5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

RTSP受信時のリアルタイム性

Last updated at Posted at 2023-02-01

RTSPの遅延時間

RTSP自体がリアルタイムとうたっているのになんのことだが、
VANTRUE Element 1 Lite Hackで、
RTSPをOpenCVで受け取ったとき、なぜか500msぐらいとか(ばらつきがある)遅延して、
かつ
[h264 @ 0000026727ff1d00] error while decoding MB 18 10, bytestream -12
とか言って、取得できなくなっていた。

何か他の方法でRTSPを受信できないかと調べていたら
PyAVでも受信できることが分かった。

こちらを試したら、RTSPの名の通り、リアルタイムに受信でき(100msぐらいの遅延)、エラーが起きても次を受信続ける。まさに一石二鳥!

ただし、ログレベルを変えないと、めっちゃワーニング出るので注意。
error while decoding MB *, bytestream *で調べても、
そんな情報出てこないので、VANTRUEが悪いんだろうけど、RTSPをOpenCVで受信して、問題出る人はPyAVを試してみるのをすすめます。

コード

import logging
import av
import cv2

logging.basicConfig()
logging.getLogger('libav').setLevel(logging.ERROR)

container = av.open('rtsp://192.168.1.254/xxx.mov')


for frame in container.decode(video=0):
    try:
        img = frame.to_ndarray(format='bgr24')
        cv2.imshow('VIDEO', img)
        
        cv2.waitKey(1)
    except KeyboardInterrupt:
        print("KeyboardInterrupt")
        break

cv2.destroyAllWindows()
5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?