Điều này đã khiến tôi bận rộn cho một phần tốt của buổi chiều và tôi đã không thể làm cho nó hoạt động nhưng tôi cảm thấy như tôi thực sự thân thiết.Gửi đầu ra OpenCV tới dòng VLC
Tôi đã thiết lập OpenCV để nhận video từ webcam. Để có thể truy cập nguồn cấp dữ liệu video này (với lớp phủ openCV), tôi muốn đặt đầu ra của tập lệnh python openCV thành luồng VLC. Tôi đã quản lý để có được luồng và chạy và có thể kết nối với nó. VLC thay đổi kích thước tỉ lệ và độ phân giải chính xác để nó nhận được một số dữ liệu chính xác nhưng hình ảnh tôi nhận được chỉ là Jitter;
python opencv.py | cvlc --demux=rawvideo --rawvid-fps=30 --rawvid-width=320 --rawvid-height=240 --rawvid-chroma=RV24 - --sout "#transcode{vcodec=h264,vb=200,fps=30,width=320,height=240}:std{access=http{mime=video/x-flv},mux=ffmpeg{mux=flv},dst=:8081/stream.flv}" &
Đầu ra của kịch bản là một cấp dữ liệu video liên tục gửi đến thiết bị xuất chuẩn như sau
from imutils.video import WebcamVideoStream
vs = WebcamVideoStream(src=0)
while True:
frame = vs.read()
sys.stdout.write(frame.tostring())
Ví dụ ở trên là một phiên bản dumbed xuống của kịch bản tôi đang sử dụng; Cũng như tôi thấy việc sử dụng thư viện imutils; https://github.com/jrosebr1/imutils
Nếu có ai có thể cho tôi một cú huých đi đúng hướng, tôi sẽ đánh giá cao điều đó. Đoán của tôi là stdout.write (frame.tostring()) không phải là những gì vlc mong đợi nhưng tôi đã không thể tìm ra nó.
ý của bạn là hình ảnh chỉ là jitter? – incBrain
Về cơ bản một hình ảnh thực sự bị méo di chuyển lên trên theo đường chéo. Không thực sự liên quan đến nguồn cấp dữ liệu video thực tế từ webcam như xa như tôi có thể tìm ra. (Nó không thay đổi khi tôi di chuyển đối tượng ở phía trước của webcam) Vì vậy, tôi đoán VLC không thể interpet dữ liệu frame.tostring(). –
có thể không phù hợp với định dạng video. Bạn có chắc chắn rằng RV24 là định dạng đầu ra chính xác không? Cũng đảm bảo rằng các kích thước phù hợp với – incBrain