質問: ord('q'): break # When everything done, release the capture cap.release() cv2.destroyAllWindows() ``` のコードを書きました。(capture2.pyとします。) なおグレーにしたのはほんの出来事です。 で、標準出力に出るのを python capture2.py | ffmpeg -f rawvideo -pixel_format yuyv422 -video_size 1280x720 -framerate 30 -i - http://XXXX.com:8090/webcam.ffm で同じく配信されるか見ました。 結果はだめでこうなります。 これはgray.tostring()でむりやり標準出力にしているせいか もしくはPIXELFORMATの違いのせいだろうと考えていますが OpenCVの出力をffserverに渡すいい方法を知っているひとはいませんか? あるいは OpenCVの出力のVideoFormatを知る方法を知っているひとはいませんか? ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/017f01abcc29eb85a4a934f79a877dd3.png)
回答: 解決しました よく考えると 縦横はカメラのデフォルトでなくて640*480なのだった。 あと色もBGRで8,8,8だった。 よって python capture.py | ffmpeg -f rawvideo -pixel_format bgr24 -video_size 640x480 -framerate 30 -i - http://AAA.com:8090/webcam.ffm が正解。 あとデバッグで python capture.py | ffplay -f rawvideo -pixel_format bgr24 -video_size 640x480 -framerate 30 -i - で確認しました。 あとcaptureも '''capture.py''' import cv, sys cap = cv.CaptureFromCAM(0) # 0 is for /dev/video0 while True : if not cv.GrabFrame(cap) : break frame = cv.RetrieveFrame(cap) sys.stdout.write( frame.tostring() ) に変えた。