The present invention relates generally to systems and methods for streaming video. More particularly, the present invention relates to systems and methods for adaptive streaming using JPEG 2000.
Known video surveillance streaming systems include a plurality of video sources, servers, and clients such that video data streams are transmitted among multiple nodes across the network. For example, video can be transmitted in a wired manner or wirelessly over network channels that include a LAN, a WAN, and the Internet.
Transmitting video over the Internet presents challenges when network bandwidth is low, fluctuates, or is otherwise unreliable. To address these challenges, some known systems transcode video into multiple bitrate data streams and host such multiple bitrate data streams to serve clients having different bandwidths. However, these types of systems require large streaming servers and considerable infrastructure on a cloud network. Such systems might work well when the same video data stream is transmitted to a large number of clients. However, due to the high cost associated with transcoding and with hosting and publishing multiple bitrates on different channels, such systems do not work well when the same video data stream is transmitted to only a handful of clients.
Notwithstanding the above, when a known video surveillance streaming system does not include a transcoding server and cannot host multiple bitrate data streams, only a single bitrate data stream is transmitted to all clients. Accordingly, a client that has access to low or fluctuating bandwidth will not be able to view video smoothly (i.e., jerky video) and will often have to wait to receive video data streams, thereby providing a poor user experience. That is, when only a single bitrate data stream is transmitted to multiple clients having access to different bandwidths, video streaming is unreliable.
For example,
In view of the above, there is a continuing, ongoing need for improved systems and methods.
While this invention is susceptible of an embodiment in many different forms, there are shown in the drawings and will be described herein in detail specific embodiments thereof with the understanding that the present disclosure is to be considered as an exemplification of the principles of the invention. It is not intended to limit the invention to the specific illustrated embodiments.
Embodiments disclosed herein can include systems and methods for adaptive streaming using JPEG 2000. For example, systems and methods disclosed herein can leverage JPEG 2000 codec technology to host multilayered images on a server, and a client can download one or more layers of the images based on the bandwidth available to the client at a given point in time. In some embodiments, each of the one or more layers can carry an increasing amount of details of an image.
In accordance with disclosed embodiments, when JPEG 2000 is employed to compress and code video data streams, even a partial image can be decoded and played, for example, by decoding a selected number of layers of the image. Furthermore, when multiple layers of images from a video data stream are stored on a server, the image quality and resolution can improve with each lower layer. Therefore, systems and methods disclosed herein can provide adaptive streaming without the overhead cost of hosting multiple bitrate data streams.
In accordance with disclosed embodiments, a streaming server can receive a video data stream, for example, a high quality video data stream, from a video source and convert the video data stream into multiple layers using JPEG 2000 compression techniques such that each layer can progressively add more image quality and resolution to a previous layer. Then, a client can download one or more layers from the server based on the bandwidth available to the client.
In an exemplary embodiment, a client may want to download 5 frames per second, thereby requiring that the client download each image in 200 msec. If the client has high bandwidth available, then the client can download a high size of content in 200 msec—all or almost all of the layers of a JPEG 2000 image. Therefore, the image quality and resolution of the video downloaded by the client will be high. Furthermore, if the client has low bandwidth available, then the client can download a low size of content in 200 msec—some or less than all of the layers of a JPEG 2000 image. While the image quality and resolution of the video downloaded by the client will be low, the downloaded layers can be decoded and rendered smoothly and without video latency. Further still, if the client has fluctuating bandwidth available, then the client can download less or more layers of a JPEG 2000 image at different time slots of 200 msec based on how much bandwidth is available during each time slot. Accordingly, the image quality and resolution of the video downloaded by the client can vary according to the bandwidth available to the client, but the client will be able to view smooth video without latency.
As exemplified by the system 200 shown in
In some embodiments, a client can download a selected number of layers from the server or the server can transmit a selected number of layers to the client based on the bandwidth available to the client at the time the client transmits the request, at the time the server receives the request, or at the time the server transmits the selected number of layers to the client. However, it is to be understood that, in any embodiment, systems and methods disclosed herein need not identify, match, publish, or switch between multiple bitrate data streams hosted on the server, thereby avoiding the need for additional infrastructure on the server.
In some embodiments, systems and methods disclosed herein can be used in connection with mega pixel cameras so that high resolution video clips can be seamlessly streamed to low bandwidth clients. Furthermore, in some embodiments, systems and methods disclosed herein can be used in connection with progressive image clips so that, when a system is in alarm and transmits an image of a URL to a user device, the user can click on the URL to download and display a coarse image of video on the user device that can progressively increase in image quality as bandwidth becomes available. Further still, in some embodiments, systems and methods disclosed can adapt to the resolution of a client's display screen based on the client's request for images, which, in some embodiments, can be based on the screen resolution. For example, when a client's display screen includes a display area with a grid, each window on the grid can have a different resolution, and systems and methods disclosed herein can dynamically provide images with different resolutions based on the window in the grid in which a respective image is to be displayed. However, embodiments disclosed herein are not so limited and can be used in connection with all embodiments disclosed and described herein.
It is to be understood that a server device and a client device as disclosed and described herein can include transceiver device, a user interface device, and a memory device each of which can be in communication with respective control circuitry, one or more programmable processors, and executable control software as would be understood by one of ordinary skill in the art. The executable control software can be stored on a transitory or non-transitory computer readable medium, including, but not limited to local computer memory, RAM, optical storage media, magnetic storage media, flash memory, and the like.
In some embodiments, some or all of the control circuitry, programmable processor, and control software can execute and control at least some of the methods disclosed and described herein. For example, in some embodiments, some or all of the control circuitry, programmable processor, and control software can store a video data stream in multiple layers, can request video from or receive a request for video from a server, and can transmit or receive one or more layers of the video from the server to the client based on the bandwidth available to the client at the time of the request.
Although a few embodiments have been described in detail above, other modifications are possible. For example, the logic flows described above do not require the particular order described or sequential order to achieve desirable results. Other steps may be provided, steps may be eliminated from the described flows, and other components may be added to or removed from the described systems. Other embodiments may be within the scope of the invention.
From the foregoing, it will be observed that numerous variations and modifications may be effected without departing from the spirit and scope of the invention. It is to be understood that no limitation with respect to the specific system or method described herein is intended or should be inferred. It is, of course, intended to cover all such modifications as fall within the spirit and scope of the invention.