ホームページ >バックエンド開発 >Python チュートリアル >videocaptureライブラリはPythonで動画高速転送プログラムを作成します
1. まず、ビデオデータ (カメラ画像) の収集は、通常、vc または vb の vfw を使用して実現できます。私はこのライブラリを使用するのが苦手なので、今は Python videocapture を使用します。このライブラリは次のように非常に簡単に使用できます:
このようにして、画像を取得します。
もちろん、比較的高速に画像を収集するには、毎回画像を保存することは不可能です。この方法では、画像を収集するのに 1 秒近くかかります。
より良い解決策は次のようになります: im = cam.getImage() はメモリ ブロックである Image オブジェクトを返し、その処理ははるかに高速です。 🎜>2. 写真を転送する方法は? pplive のようなビデオがどのように転送されるのかわかりません。私の考えは非常に単純で、一度に 1 枚の画像を転送します。
このプログラムでは、毎回 RGB 画像のサイズが転送されます。このように、必要なデータ量は次のとおりです: d = 160*120*3 = 56.25 kB
私は 80000B を選択します。
送信者コードは次のとおりです:
pygame は最適化された高速グラフィックス ライブラリなので、directshow を使用したかどうかはわかりません。これを使うべきだったと思います。
pygame については、www.pygame.org を参照してください。
次は受信コードです。
screen = pygame.display.set_mode((160,120))
pygame.display.set_caption("ウェブカメラ")
svrsocket =ソケット.socket(socket.AF_INET,ソケット.SOCK_DGRAM)
svrsocket.bind(("127.0.0.1", 1234))
クロック = pygame .time.Clock() #フレーム レートを計算します
while 1:
data, address = svrsocket.recvfrom(80000)
camshot = pygame.image.frombuffer(data, (160,120), "RGB")
pygame.event.get() のイベントの場合:
ifevent.type == pygame.QUIT: sys.exit()
screen.blit(camshot, (0,0))
pygame.display.update()
print Clock.get_fps() #端末内のフレームレートを出力
Clock.tick()
プログラムを実行すると、すごいですね。 230fps!(右側の端末)