Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enhancement: Real-Time Video Frame Transferring over the network through Messaging #30

Closed
8 tasks done
abhiTronix opened this issue Jul 12, 2019 · 1 comment
Closed
8 tasks done
Assignees
Labels
ENHANCEMENT ⚡ New Feature/Addition/Improvement SOLVED 🏁 This issue/PR is resolved now. Goal Achieved!
Milestone

Comments

@abhiTronix
Copy link
Owner

abhiTronix commented Jul 12, 2019

Real-Time Video Frame Transferring over the network through Messaging

Messaging

PatternHierarchy

Messaging makes applications loosely coupled by communicating asynchronously, which also makes the communication more reliable because the two applications do not have to be running at the same time. Messaging makes the messaging system responsible for transferring data from one application to another, so the applications can focus on what data they need to share but not worry so much about how to share it.

Message Oriented protocols

Message Oriented protocols send data in distinct chunks or groups. The receiver of data can determine where one message ends and another begins. Message protocols are usually built over streams but there is one layer in between which takes care to separate each logical part from another. It parses input stream for you and gives you result only when the whole dataset arrives and not all states in between.

Available Resources

  1. MQTT - Mosquitto is a lightweight MQTT is a machine-to-machine (M2M)/"Internet of Things" connectivity protocol broker messaging library. It works on top of the TCP/IP protocol. It is designed for connections with remote locations where a "small code footprint" is required or the network bandwidth is limited. The publish-subscribe messaging pattern requires a message broker.

  2. ZeroMQ (also spelled ØMQ, 0MQ or ZMQ) is a high-performance asynchronous brokerless messaging library, aimed at use in distributed or concurrent applications. It provides a message queue, but unlike message-oriented middleware, a ZeroMQ system can run without a dedicated message broker.

Since ZeroMQ outperformed MQTT in various tests and it's well-documented as well. I decided to go with ZeroMQ for messaging implementation in vidgear.

Goal

Our goal is to implement real-time video frames transferring over the network in vidgear by implementing a high-level wrapper around PyZmQ that contains Python bindings for ZeroMQ. This wrapper will provide both read and write functionality and read function will be multi-threaded for high-speed frame capturing with minimum latency and memory constraints.

TODO

  • Implement a new Netgear class: a high-level wrapper around ZeroMQ
  • Add both send() and recv() function for transferring frames
  • Make send() function multi-threaded and error-free with Threaded Queue Mode.
  • Add support for various possible messaging synchronous patterns
  • frame-transferring between server/client must be synchronized and ultrafast with minimum latency
  • Robustly handle the server and client end, even if any of them is started at a different instant.
  • Server end must able to terminate stream at the client(s) end automatically.
  • Server and Client must able to talk/send messages at any instance while transferring frames.
@abhiTronix
Copy link
Owner Author

Successfully resolved in PR #31 and merged in commit 44b16de

@abhiTronix abhiTronix pinned this issue Jul 14, 2019
@abhiTronix abhiTronix added SOLVED 🏁 This issue/PR is resolved now. Goal Achieved! and removed WORK IN PROGRESS 🚧 currently been worked on. labels Jul 14, 2019
@abhiTronix abhiTronix unpinned this issue Nov 6, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ENHANCEMENT ⚡ New Feature/Addition/Improvement SOLVED 🏁 This issue/PR is resolved now. Goal Achieved!
Projects
None yet
Development

No branches or pull requests

1 participant