openCV和多处理读取错误[H264 @ 0x7FA02816F2C0]错误在解码MB 26 11,Bytestream -7时
我读了此线程,并使用线程使流工作。 。
正如在投票的答案中所建议的那样,我使用不同的功能来读取流并处理帧如下。
def Receive(stream, raw_frame_queue):
print("start Receive")
cap = cv2.VideoCapture(stream)
while True:
ret, frame = cap.read()
if not ret:
print("Not successfull")
break
raw_frame_queue.put(frame)
time.sleep(0.25)
cap.release()
def Prepare(raw_frame_queue):
print("Start preparing")
frame_buffer = deque([], 30)
while True:
if raw_frame_queue.empty():
continue
frame_buffer.append(raw_frame_queue.get())
lots of other stuff
一切都按照线程的预期工作:
import queue
import threading
raw_frame_queue = queue.Queue()
if __name__=='__main__':
p1 = threading.Thread(target=Receive, args=((RTSP_URL, raw_frame_queue)))
p2 = threading.Thread(target=Prepare, args=((raw_frame_queue),))
p1.start()
p2.start()
使用多处理,但是无法解码帧:
from multiprocessing import Process, Queue
raw_frame_queue = Queue()
if __name__=='__main__':
p1 = Process(target=Receive, args=((RTSP_URL, raw_frame_queue)))
p2 = Process(target=Prepare, args=((raw_frame_queue),))
p1.start()
p2.start()
eRROMESSAGE像 [H264 @ 0x7FA02816F2C0]错误,在解码MB 26 11,Bytestream -7
对于每个帧中。
快速旁注,“ noc scorestl”
永远不会打印,因此可以始终抓住框架
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
仍然没有直接工作,但是由于接收功能不是很重。我最终以不同的线程和所有其他功能(例如准备)运行它,这些功能都更加复杂,并且CPU在不同的过程中界定。这使我的应用保持足够的水平。
Still haven't got this to work directly, but since the Receive function is not very compute heavy. I ended up running it in a different thread and all other functions such as Prepare, which are all quite a bit more complex and CPU bounded in different processes. This keep parallelism at an sufficient level for my application.