私はネットワークスループットテスト用のピアツーピアビデオストリーミングを開発中です。 2つのピア間のネットワークは、低ビットレート転送をサポートします。OpenCV MPEGビデオストリーミング
私はOpenCVを使用してビデオストリーミングのための簡単なpythonプログラムを作った。
Webcamからビデオフレームを取得し、それをJPEGにエンコードし、バイトストリームをピアに送信します。それはうまくいく。しかし、私の目的には問題があります。 1つの符号化フレームのサイズは、より低いJPEG品質で符号化しても、約5Kバイトです。
エンコード結果が小さくなり、ビデオの画質が向上するように、私はH264やH263などのMPEGコーデックでエンコードを使用しようとしています。まもなく私は自分が難しかったことが分かりました インターネットには例がありません。
次のコードはどのように変更できますか?
import cv2
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 320)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 240)
success, image = cap.read()
quality = 20 # quality 0 to 100. default:95
ret, jpeg = cv2.imencode('.jpg', image, [int(cv2.IMWRITE_JPEG_QUALITY), quality])
# send(jpeg.tobytes())
何の解像度でストリーミングしていますか?多くの場合、jpegは最高の圧縮率です。 (フレームあたり5キロバイトが極端に小さい) –
解像度は320x240です。上記のコードでは、サイズはlen(jpeg.tobytes())です。 – Hill
グレースケールまたはカラーを使用していますか?また、バイナリイメージを考えましたか? (バイナリイメージを送信していますか?)http://answers.opencv.org/question/4423/how-to-create-a-binary-image-mat/ –