Adaptive streaming for legacy media frameworks

This disclosure relates to adaptive streaming for legacy media frameworks. A streaming component includes a reception component that receives a first set of header data associated with an audio stream, and a second set of header data associated with a video stream. A parsing component synthesizes a third set of header data using the first set of header data and the second set of header data based on a set of header criteria for a legacy media framework, and provides the third set of header data to the legacy media framework. A download component acquires respective sets of data from the audio stream and the video stream, and an adaption component provides sets of data to the legacy media framework based on a set of streaming criteria for the legacy media framework.

TECHNICAL FIELD

This disclosure generally relates to systems and methods that facilitate adaptive streaming for legacy media frameworks.

BACKGROUND

The internet and media enabled portable computing devices have dramatically altered the processes for generating and consuming media content. Presently, users can consume media content virtually anywhere at any time, as long as they have access to a media capable device with an internet connection. The convenience of being able to view media content via the internet, essentially on demand, has resulted in explosive growth of internet media consumption.

Streaming is a common method of media delivery across the internet. Streaming media is continuously received and presented to an end-user while being delivered by a streaming provider. Streaming enables media that includes large amounts of data to be displayed on a client device prior to the entire media file being transmitted. Internet media traffic is currently approaching a majority of consumer internet traffic, and the rate of demand is projected to continue increasing. In particular, streaming media is expected to account for a large portion of the projected increase in demand.

Typically, streaming media content is a computationally expensive process that involves substantial bandwidth and quantities of resources from a client device. Designers are constantly trying to develop newer and more efficient techniques for streaming multimedia content to client devices. However, media frameworks that manage execution and consumption of media content may be incompatible with newer techniques for streaming media content.

SUMMARY

According to an aspect of the subject innovation, systems and methods for adaptive streaming for legacy media frameworks are disclosed. A streaming component includes a reception component that receives a first set of header data associated with an audio stream, and a second set of header data associated with a video stream. A parsing component synthesizes a third set of header data using the first set of header data and the second set of header data based on a set of header criteria for a legacy media framework, and provides the third set of header data to the legacy media framework. A download component acquires respective sets of data from the audio stream and the video stream, and an adaption component provides sets of data to the legacy media framework based on a set of streaming criteria for the legacy media framework.

DETAILED DESCRIPTION

Overview

Techniques for streaming media content can typically involve computationally expensive processes. Designers are continually working to develop newer and more efficient techniques. However, media frameworks that manage execution and consumption of media content on devices may be incompatible with newer techniques for streaming media content. One non-limiting implementation of the innovation provides for efficient adaptive streaming for legacy media frameworks.

More particularly, in accordance with an embodiment a reception component receives a first set of header data associated with an audio stream, and a second set of header data associated with a video stream, a parsing component synthesizes a third set of header data using the first set of header data and the second set of header data based on a set of header criteria, a header component provides the third set of header data to a media framework, a download component acquires respective sets of data from the audio stream and the video stream, and an adaption component provides sets of data to the media framework based on a set of streaming criteria.

Non-Limiting Examples of Systems for Adaptive Streaming for Legacy Media Frameworks

Turning now toFIG. 1, illustrated is an example system100for adaptive streaming for legacy media frameworks in accordance with various aspects described in this disclosure. Generally, system100can include a memory that stores computer executable components and a processor that executes computer executable components stored in the memory, examples of which can be found with reference toFIG. 12. System100includes a user device102. The user device102can include but is not limited to a smart phone, a cell phone, a personal digital assistant (PDA), a tablet, a laptop, a desktop computer, a portable music player, a video game system, an electronic reader (e-reader), a global positioning system (GPS) transceiver, a set-top box, and/or a television. The user device102includes a legacy media framework104, and a streaming component106.

The legacy media framework104processes, executes, or otherwise manages consumption of one or more media formats for the user device102. For example, in one implementation, the legacy media framework104captures, plays, and/or transcodes time-based media, for instance, audio and/or video. The media can be streamed from a media source108that includes but is not limited to a content server or set of content servers. Video streamed from the media source108includes video data (e.g., frames, stacks of image data, etc.) and audio data. The media source108may employ any of a plurality of techniques for streaming video. For example, in one implementation, the media source108provides a first stream for video data (e.g., stacks of image data, frames, etc.), and a second stream for audio data. The legacy media framework104may not be adapted to process media streamed from the media source108. For instance, the legacy media framework104may be adapted to process streaming video having a combined (e.g., interleaved, multiplexed, etc.) video stream and audio stream, and may be unable to process media streamed via the media source108using separate streams for video data and audio data.

The streaming component106facilitates processing, by the legacy media framework, of media streamed from the media source108. The streaming component106adapts, translates, or otherwise converts data provided by the media source108based on a set of streaming criteria for the legacy media framework104. The streaming component106may be implemented as an application, or part of an application, on a client device (e.g., the user device102). For example, the streaming component may be implemented as part of a mobile application or a browser application installed on the user device. In one implementation, the streaming component106obtains, acquires, or otherwise receives a first stream for video data (e.g., video stream) associated with video, and a second stream for audio data (e.g., audio stream) associated with video from the media source108. The streaming component106converts the first stream and second stream into a third stream having a format that the legacy media framework104is adapted to process. Aspects of the innovation are not limited to a particular quantity of streams for video data and/or audio data. For example, in one implementation, the streaming component106can receive a set of Y streams for the audio data, and a set of X streams for the video data, where X and Y are integers (discussed in greater detail with reference toFIG. 7). As an additional or alternative example, in one implementation, the streaming component106can receive a single demuxed stream for audio data and video data (e.g., demuxed a/v file) (discussed in greater detail with reference toFIG. 8). It is to be appreciated that although the streaming component106is illustrated as being included in the user device102, such implementation is not so limited. For example, the streaming component106can be included in the media source108, and/or can be a stand-alone component.

FIG. 2illustrates an example streaming component106in accordance with various aspects described in this disclosure. As discussed, the streaming component106facilitates processing of media streamed using a media source108by a legacy media framework104. The streaming component106inFIG. 2includes a detection component202, a reception component204, a parsing component206, a download component208, an adaptation component210, and an update component212. The components are communicatively coupled so as to enable the following. The detection component202determines, identifies, or otherwise detects a set of streaming criteria and/or an associated set of header criteria for the legacy media framework104. The streaming criteria can include but is not limited to a media file specification, and/or a format that the legacy media framework104is adapted to process. For example, in one implementation, the detection component202detects that the legacy media framework104is adapted to process streaming video having combined audio and video streams. In addition, the streaming criteria can include, or be associated with, a set of header criteria. The header criteria can include but is not limited to a structure of header data that the legacy media framework104is adapted to process.

The reception component204obtains, acquires, or otherwise receives header data associated with media streams from the media source108. For example, in one implementation, the reception component receives, from the media source108, a first set of header data associated with an audio stream for audio data or an audio file associated with a streaming video, and a second set of header data associated with a video stream for video data or a video file associated with the streaming video. For instance, the sets of header data can be included in manifests associated with the respective streams, such as may be implemented in an adaptive streaming system.

The parsing component206examines, inspects, or otherwise parses received header data. In addition, the parsing component206generates, creates, or otherwise synthesizes sets of header data, based on the set of streaming criteria, using the received header data. For example, in one implementation, the parsing component206parses the first set of header data associated with the audio stream, and the second set of header data associated with the video stream, and synthesizes a third set that provides for a combination of the audio stream and video stream, when the streaming criteria indicates that the legacy framework is adapted to process streaming video having combined audio and video streams. The parsing component206includes a header component214. The header component214sends, forwards, or otherwise provides the synthesized header data to the legacy media framework104. For example, in one implementation, the header component214provides the synthesized header data to the legacy media framework104based on the set of header criteria for the legacy media framework104. The header criteria can include but is not limited to a format and/or a packet size for header data that the legacy media framework104is adapted to process.

The download component208receives, obtains, or otherwise acquires respective sets of data from media streams. For example, in one implementation, the download component acquires sets of data (e.g., chunks) from an audio stream, and sets of data from a video stream, where the media source108provides separate streams for audio data and video data. For instance, the download component208can acquire the respective chunks of data based on information included in the respective manifests associated with a stream. The information included in the manifests can include but is not limited to information regarding locations, sizes, and/or key frames for respective chunks. The chunks may have been encoded at various bitrates and may be of various sizes.

The adaptation component210provides subsets of the respective sets of data to the legacy media framework104based on the set of streaming criteria. For example, in one implementation, the adaptation component210provides the respective chunks of data from the audio stream and video stream, respectively, to the legacy media framework104based on the set of streaming criteria (discussed in greater detail with regard toFIG. 6). As an additional or alternative example, in one implementation, the adaptation component210includes a mux component216that interleaves data from the audio stream and video stream based on the set of streaming criteria (discussed in greater detail with regard toFIG. 5). It is to be appreciated that although the mux component216is illustrated as being included in the streaming component106, such implementation is not so limited. For example, in one implementation, the mux component216can be a stand-alone component communicatively coupled to the legacy media framework104so as to enable the mux component216to act as an adapting proxy.

The update component212modifies, alters, or otherwise updates mechanisms or data that distinguish streams from one another. For example, media files typically have mechanisms to distinguish streams from one another in media files. This mechanism may be, or include, a stream identifier, e.g., Stream ID. In one implementation, the update component212modifies a stream identifier included in, or associated with, the headers and/or sets of data before providing the headers and/or sets of data to the legacy media framework104. As discussed, aspects of the innovation are not limited to a particular quantity of streams for video data and/or audio data. For example, in one implementation, the streaming component106can convert a set Y of streams for the audio file or audio data, and a set X of streams for the video file or video data, where X and Y are integers, based on the set of streaming criteria (discussed in greater detail with reference toFIG. 7). As an additional or alternative example, in one implementation, the streaming component106can convert a single demuxed stream for audio data and video data (e.g., demuxed a/v file) based on the set of streaming criteria (discussed in greater detail with reference toFIG. 8).

Turning toFIG. 3, illustrated is a system300that provides a non-limiting example of streaming media in accordance with various aspects described in the disclosure. As discussed, a legacy media framework104is adapted to process streaming media based on a set of streaming criteria. For example, in one implementation, the legacy media framework104is adapted to process movie data302(e.g., streaming video) having interleaved audio data302A and video data302B (e.g., frames, stacks of image data, etc.). The streaming criteria can include, or be associated with, a set of header criteria. For example, in one implementation, the set of header criteria includes a structure of setup data304(e.g., header data) that the legacy media framework104is adapted to process. For instance, the legacy media framework104can be adapted to process setup data304for the movie data302that includes header data304A (audio stream header) for audio data302A included in the movie data302, and header data304B (video stream header) for video data302B also included in the movie data302.

FIG. 4illustrates a system400that provides a non-limiting example of streaming media in accordance with various aspects described in the disclosure. As discussed, a media source108may employ any of a plurality of techniques for streaming media. For example, in one implementation, the media source can provide a first stream for an audio file or audio data (audio stream402) associated with movie data, and a second stream for a video file or video data (video stream404) associated with the movie data. In this example, the media source108provides a first set of header data406(e.g., audio stream header) for the audio stream, and a second set of header data408for the video stream (e.g., video stream header). It is to be appreciated that a media framework (e.g., legacy media framework104) adapted to process streaming media having combined (e.g., interleaved, multiplexed, etc.) video and audio data may be unable to process separate video and audio streams.

FIG. 5illustrates an example system500for adaptive streaming for legacy media frameworks in accordance with various aspects described in this disclosure. The system500includes a streaming component106. As discussed above, the streaming component106facilitates processing of streaming media by a legacy media framework (e.g., legacy media framework104) based on a set of streaming criteria. The set of streaming criteria can include but is not limited to a media file specification, and/or a format of streaming media that the legacy media framework is adapted to process. In addition, the set of streaming criteria can include, or be associated with, a set of header criteria. For example, in one implementation, the set of streaming criteria defines, details, or otherwise specifies a format of streaming video that includes combined audio and video streams, and a format for a set of header data that includes combined header data for the audio and video streams.

In one implementation, a media source (e.g., a media source108) provides a first stream for an audio file or audio data (audio stream502) associated with movie data (e.g., streaming video), and a second stream for a video file or video data (video stream504) associated with the movie data. A first set of header data506(e.g., audio stream header) is associated with the audio stream502, and a second set of header data508(e.g., video stream header) is associated with the video stream504. It is to be appreciated that a legacy media framework adapted to process streaming media having combined (e.g., interleaved, multiplexed, etc.) video and audio streams may be unable to process separate video and audio streams.

The streaming component106obtains, acquires, or otherwise receives the first set of header data506associated with the audio stream502, and the second set of header data508associated with the video stream504. For example, in one embodiment, the first set of header data506and the second set of header data508can be included in respective manifests for the audio stream502and video stream504. The streaming component106synthesizes a third set of header data510(e.g., synthesized set of header data) using the received header data based on the set of header criteria. The third set of header data510includes combined data regarding audio data from the audio stream502, and video data from the video stream504.

In addition, the streaming component106acquires sets of data from the audio stream502, and sets of data from the video stream504. For example, in one embodiment, the streaming component106can acquire the respective sets of data based on information included in the manifests. The information included in the manifests can include but is not limited to information regarding locations, sizes, and/or key frames for the respective sets of data. The streaming component106interleaves data from the audio stream502and video stream504based at least in part on the set of streaming criteria, and generates a synthesized set of movie data512(e.g., streaming video). The synthesized set of movie data512can be provided to the legacy media framework (discussed in greater detail with reference toFIGS. 1 and 2). For instance, the legacy media framework may be adapted to process the third set of header data510, and the synthesized movie data512.

FIG. 6illustrates an example system600for adaptive streaming for legacy media frameworks in accordance with various aspects described in this disclosure. The system600includes a streaming component106. As discussed, the streaming component106facilitates processing of streaming media by a legacy media framework (e.g., legacy media framework104) based on a set of streaming criteria. The set of streaming criteria can include but is not limited to a media file specification, and/or a format of streaming media that the legacy media framework is adapted to process. In addition, the set of streaming criteria can include, or be associated with, a set of header criteria. For example, in one implementation, the set of streaming criteria defines, details, or otherwise specifies a format of streaming video that includes combined chunks of data from an audio and video stream, and a format for a set of header data that includes combined header data for the audio and video streams.

In one implementation, a media source (e.g., a media source108) provides a first stream for an audio file or audio data (audio stream602) associated with movie data (e.g., streaming video), and a second stream for a video file or video data (video stream604) associated with the movie data. A first set of header data606(e.g., audio stream header) is associated with the audio stream602, and a second set of header data608is associated with the video stream604. It is to be appreciated that a legacy media framework adapted to process streaming media including chunks of data from the video and audio stream may be unable to process separate video and audio streams.

The streaming component106obtains, acquires, or otherwise receives the first set of header data606associated with the audio stream602, and the second set of header data608associated with the video stream604(e.g., from an HTTP web server). For example, in one embodiment, the header data606and header data608can be included in respective manifests for the audio stream502and video stream504, such as may be implemented in an HTTP adaptive streaming system. The streaming component106synthesizes a third set of header data610(e.g., synthesized set of header data) using the received header data based on the set of header criteria. The third set of header data610includes combined data regarding audio data from the audio stream602, and video data from the video stream604.

In addition, the streaming component106acquires chunks of data607from the audio stream602, and chunks of data609from the video stream604. For example, in one embodiment, the download component208can acquire respective chunks of data from the audio stream602and video stream604based on information included in the respective manifests. The chunks of data609from the video stream604may have been divided along Group of Pictures (GOP) boundaries such that each chunk begins with a key frame (e.g., key frame611) so as to have no dependencies on past or future chunks. The information included in the manifests can include but is not limited to information regarding locations, sizes, and/or key frames for respective chunks. The chunks may have been encoded at multiple bitrates and may be of various sizes. For example, in one implementation, the streaming component106provides the full chunks of data to the legacy media framework without interleaving the data into a muxed data stream prior to sending the data to the legacy media framework. The legacy media framework is adapted to process the third set of header data610, and the chunks of data.

It is to be appreciated, that the foregoing may be useful, for example, in a case where the legacy media framework expects multiplexed (muxed) data but can accept the separate streams of data in the form of cluster elements (e.g., chunks). In such a case, the client device (e.g., user device102) can avoid expending resources interleaving the streams, and still provide the streamed data in a format that the legacy media framework is adapted to process.

FIG. 7illustrates an example system700for adaptive streaming for legacy media frameworks in accordance with various aspects described in this disclosure. The system700includes a streaming component106. As discussed, the streaming component106facilitates processing of streaming media by a legacy media framework (e.g., legacy media framework104) based on a set of streaming criteria. The set of streaming criteria can include but is not limited to a media file specification, and/or a format of streaming media that the legacy media framework is adapted to process. In addition, the set of streaming criteria can include, or be associated with, a set of header criteria. For example, in one implementation, the set of streaming criteria defines, details, or otherwise specifies a format of streaming video that includes combined audio and video streams, and a format for a set of header data that includes combined header data for the audio and video streams.

In one implementation, a media source (e.g., a media source108) provides a set of streams702(e.g.,702A-C) for an audio file or audio data associated with movie data (e.g., streaming video), and a set of streams704(e.g.,704A-C) for a video file or video data associated with the movie data. It is to be appreciated that a legacy media framework adapted to process streaming media having combined (e.g., interleaved, multiplexed, etc.) video and audio streams may be unable to process separate video and audio streams. Aspects of the innovation are not limited to a particular quantity of streams for video data and/or audio data. For example, in one implementation, the set of streams702includes Y streams for the audio data associated with movie data, and the set of streams704includes X streams for the video data associated with the movie data, where X and Y are integers.

The streaming component106obtains, acquires, or otherwise receives header data associated with the audio streams702, and header data associated with the video streams704. For example, in one embodiment, the header data can be included in respective manifests for each of the audio streams702A-C and video streams704A-C. As an additional or alternative example, the header data can be included in respective manifests for a subset of the audio streams702and a subset of the video streams704. For instance, the header data associated with the audio streams702can be included in a manifest for the audio stream702A, and the header data associated with video streams704can be included in a manifest for the video stream704A. The streaming component106synthesizes a synthesized set of header data710using the received header data based on the set of header criteria. The synthesized set of header data710includes combined data regarding audio data from the audio streams702A-C, and video data from the video streams704A-C. In addition, the streaming component106acquires sets of data from the audio streams702A-C, and sets of data from the video streams704A-C. For example, in one embodiment, the streaming component106can acquire the respective sets of data based on information included in the manifests. The information included in the manifests can include but is not limited to information regarding locations, sizes, and/or key frames for the respective sets of data.

The streaming component106interleaves data from the audio streams702A-C and the video streams704A-C based at least in part on the set of streaming criteria, and generates a synthesized set of movie data712(e.g., streaming video). The synthesized set of movie data712can be provided to the legacy media framework (discussed in greater detail with reference toFIGS. 1 and 2). For instance, the legacy media framework may be adapted to process the synthesized set of header data710, and the synthesized movie data712. As an additional or alternative example, in one implementation, the streaming component106provides the respective sets of data (e.g., chunks) to the legacy media framework without interleaving the respective the sets of data.

FIG. 8illustrates an example system800for adaptive streaming for legacy media frameworks in accordance with various aspects described in this disclosure. The system800includes a streaming component106. As discussed, the streaming component106facilitates processing of streaming media by a legacy media framework (e.g., legacy media framework104) based on a set of streaming criteria. The set of streaming criteria can include but is not limited to a media file specification, and/or a format of streaming media that the legacy media framework is adapted to process. In addition, the set of streaming criteria can include, or be associated with, a set of header criteria. For example, in one implementation, the set of streaming criteria defines, details, or otherwise specifies a format of streaming video that includes combined audio and video streams, and a format for a set of header data that includes combined header data for the audio and video streams.

In one implementation, a media source (e.g., a media source108) provides a de-multiplexed stream for audio and video data (demuxed stream804) associated with a streaming movie. The streaming component106obtains, acquires, or otherwise receives header data802associated with the demuxed stream804. For example, in one embodiment, the header data can be included in a manifest for the demuxed stream804. The streaming component106generates a synthesized set of header data810using the received header data802based on the set of header criteria. The synthesized set of header data710includes combined data regarding audio data and video data included in the demuxed stream804.

In addition, the streaming component106acquires data from the demuxed stream804. For example, in one embodiment, the streaming component106can acquire the data based on information included in the manifest. The information included in the manifest can include but is not limited to information regarding locations, sizes, and/or key frames for the demuxed stream804. The streaming component106interleaves audio data and video frames from the demuxed stream804based at least in part on the set of streaming criteria, and generates a synthesized set of movie data812(e.g., streaming video). The synthesized set of movie data812can be provided to the legacy media framework (discussed in greater detail with reference toFIGS. 1 and 2). For instance, the legacy media framework may be adapted to process the synthesized set of header data810, and the synthesized movie data812. As an additional or alternative example, in one implementation, the streaming component106provides the respective sets of data (e.g., chunks) to the legacy media framework without interleaving the respective the sets of data.

Non-Limiting Examples of Methods for Adaptive Streaming for Legacy Media Frameworks

FIGS. 9-10illustrate various methodologies in accordance with the disclosed subject matter. While, for purposes of simplicity of explanation, the methodologies are shown and described as a series of acts, the disclosed subject matter is not limited by the order of acts, as some acts may occur in different orders and/or concurrently with other acts from that shown and described herein. For example, those skilled in the art will understand and appreciate that a methodology can alternatively be represented as a series of interrelated states or events, such as in a state diagram. Moreover, not all illustrated acts may be required to implement a methodology in accordance with the disclosed subject matter. Additionally, it is to be appreciated that the methodologies disclosed in this disclosure are capable of being stored on an article of manufacture to facilitate transporting and transferring such methodologies to computers or other computing devices.

Referring now toFIG. 9, illustrated is an example methodology900for adaptive streaming for legacy media frameworks in accordance with various aspects described in this disclosure. At reference numeral902, a set of streaming criteria and/or an associated set of header criteria for a legacy media framework is determined (e.g., using the detection component202). The set of streaming criteria can include but is not limited to a media file specification, and/or a format for media that the legacy media framework is adapted to process. For example, in one implementation, it is determined that the legacy media framework is adapted to process streaming video having combined audio and video streams.

At reference numeral904, header data associated with an audio stream for streaming video is received, and header data associated with a video stream for the streaming video is received (e.g., using the reception component204). For example, in one implementation, a first set of header data associated with the audio stream is received, and a second set of header data associated with the video stream is received. As discussed, the first set of header data and/or second set of header data can be received from a media source including, for example, a content server using hypertext transfer protocol (HTTP). The header data associated with the audio stream and the header data associated with the video stream can be included in respective manifests for the audio stream and/or the video stream.

At reference numeral906, a synthesized set of header data is generated, based on the set of header criteria, using the header data associated with the audio stream and the header data associated with the video stream (e.g., using the parsing component206). The set of header criteria can include but is not limited to formats or structures of headers associated with media that the legacy framework is adapted to process. At reference numeral908, the synthesized set of header data is provided to the legacy media framework (e.g., using the header component214).

At reference numeral910, respective chunks of data are obtained from the audio stream and the video stream (e.g., using the download component208). For example, in one implementation, the respective chunks of data can be obtained based at least in part on information included in the respective manifests. The information included in the manifests includes but is not limited to information regarding locations, sizes, and/or key frames for respective chunks. The chunks may have been encoded at multiple bitrates and may be of various sizes. At reference numeral912, the respective chunks of data are provided to the legacy media framework based on the set of streaming criteria (e.g. using the adaptation component210). For example, in one implementation, the respective chunks of data from the audio stream and the video stream are provided, alternately, to the legacy media framework based on the set of streaming criteria.

In addition, mechanisms or data that distinguish streams from one another are updated or modified based on the set of streaming criteria (e.g., using the update component212). For example, in one implementation, a Stream ID associated with the audio stream and/or video stream is updated based on the set of streaming criteria. As discussed, aspects of the innovation are not limited to a particular quantity of streams for video data and/or audio data. For example, in one implementation, respective chunks of data from a set Y of streams for an audio file or audio data associated with streaming video, and a set X of streams for a video file or video data associated with the streaming video, where X and Y are integers, can be provided to the legacy media framework based on the set of streaming criteria. As an additional or alternative example, in one implementation, respective chunks of data from a single demuxed stream for audio data and video data (e.g., demuxed a/v file) can be provided to the legacy media framework based on the set of streaming criteria.

Turning toFIG. 10, illustrated is an example methodology1000for adaptive streaming for legacy media frameworks in accordance with various aspects described in this disclosure. At reference numeral1002, a set of streaming criteria and/or an associated set of header criteria for a legacy media framework is determined (e.g., using the detection component202). The set of streaming criteria can include but is not limited to a media file specification, and/or a format for media that the legacy media framework is adapted to process. For example, in one implementation, it is determined that the legacy media framework is adapted to process streaming video having combined audio and video streams.

At reference numeral1004, header data associated with an audio stream for streaming video is received, and header data associated with a video stream for the streaming video is received (e.g., using the reception component204). For example, in one implementation, a first set of header data associated with the audio stream is received, and a second set of header data associated with the video stream is received. For instance, the first set of header data and/or second set of header data can be received from a media source (e.g., media source108) including, for example, a content server. The header data associated with the audio stream and the header data associated with the video stream can be included in respective manifests for the audio stream and/or the video stream.

At reference numeral1006, a synthesized set of header data is generated, based on the set of header criteria, using the header data associated with the audio stream and the header data associated with the video stream (e.g., using the parsing component206). The set of header criteria can include but is not limited to formats or structures of sets of header data (headers) associated with media that the legacy framework is adapted to process. At reference numeral1008, the synthesized set of header data is provided to the legacy media framework (e.g., using the header component214).

At reference numeral1010, respective sets of data are obtained from the audio stream and the video stream (e.g., using the download component208). For example, in one implementation, the respective sets of data can be obtained based at least in part on information included in the respective manifests. The information included in the manifests includes but is not limited to information regarding locations, sizes, and/or key frames for respective chunks.

At reference numeral1012, respective subsets of the data from the audio stream and the video stream are interleaved based on the streaming criteria (e.g., using the mux component216) (discussed in greater detail with reference toFIG. 5). At reference numeral1014, the interleaved data is provided to the legacy media framework (e.g. using the adaptation component210). Mechanisms or data that distinguish streams from one another are updated or modified based on the set of streaming criteria (e.g., using the update component212). For example, in one implementation, a Stream ID associated with the audio stream and/or video stream is updated based on the set of streaming criteria. As discussed, aspects of the innovation are not limited to a particular quantity of streams for video data and/or audio data. For example, in one implementation, respective sets of data from a set Y of streams for the audio file or audio data associated with streaming video, and a set X of streams for the video file or video data associated with the streaming video, where X and Y are integers, can be interleaved based on the set of streaming criteria. As an additional or alternative example, in one implementation, respective sets of data from a single demuxed stream for audio data and video data (e.g., demuxed a/v file) can be provided to the legacy media framework based on the set of streaming criteria.

Exemplary Networked and Distributed Environments

One of ordinary skill in the art can appreciate that the various embodiments described herein can be implemented in connection with any computer or other client or server device, which can be deployed as part of a computer network or in a distributed computing environment, and can be connected to any kind of data store where media may be found. In this regard, the various embodiments described herein can be implemented in any computer system or environment having any number of memory or storage units, and any number of applications and processes occurring across any number of storage units. This includes, but is not limited to, an environment with server computers and client computers deployed in a network environment or a distributed computing environment, having remote or local storage.

Distributed computing provides sharing of computer resources and services by communicative exchange among computing devices and systems. These resources and services include the exchange of information, cache storage and disk storage for objects, such as files. These resources and services also include the sharing of processing power across multiple processing units for load balancing, expansion of resources, specialization of processing, and the like. Distributed computing takes advantage of network connectivity, allowing clients to leverage their collective power to benefit the entire enterprise. In this regard, a variety of devices may have applications, objects or resources that may participate in the various embodiments of this disclosure.

FIG. 11provides a schematic diagram of an exemplary networked or distributed computing environment. The distributed computing environment comprises computing objects1110,1112, etc. and computing objects or devices1120,1122,1124,1126,1128, etc., which may include programs, methods, data stores, programmable logic, etc., as represented by applications1130,1132,1134,1136,1138. It can be appreciated that computing objects1110,1112, etc. and computing objects or devices1120,1122,1124,1126,1128, etc. may comprise different devices, such as personal data assistants (PDAs), audio/video devices, mobile phones, MP3 players, personal computers, tablets, laptops, etc. It is to be appreciated that the exemplary networked or distributed computing environment inFIG. 11can be used in connection with implementing one or more of the systems or components shown and described in connection withFIGS. 1-10.

Each computing object1110,1112, etc. and computing objects or devices1120,1122,1124,1126,1128, etc. can communicate with one or more other computing objects1110,1112, etc. and computing objects or devices1120,1122,1124,1126,1128, etc. by way of the communications network1140, either directly or indirectly. Even though illustrated as a single element inFIG. 11, network1140may comprise other computing objects and computing devices that provide services to the system ofFIG. 11, and/or may represent multiple interconnected networks, which are not shown. Each computing object1110,1112, etc. or computing objects or devices1120,1122,1124,1126,1128, etc. can also contain an application, such as applications1130,1132,1134,1136,1138, that might make use of an API, or other object, software, firmware and/or hardware, suitable for communication with or implementation of the various embodiments of this disclosure.

Thus, a host of network topologies and network infrastructures, such as client/server, peer-to-peer, or hybrid architectures, can be employed. The “client” is a member of a class or group that uses the services of another class or group to which it is not related. A client can be a process, e.g., roughly a set of instructions or tasks, that requests a service provided by another program or process. The client may be or use a process that utilizes the requested service without having to “know” any working details about the other program or the service itself.

In a client/server architecture, particularly a networked system, a client is usually a computer that accesses shared network resources provided by another computer, e.g., a server. In the illustration ofFIG. 11, as a non-limiting example, computing objects or devices1120,1122,1124,1126,1128, etc. can be thought of as clients and computing objects1110,1112, etc. can be thought of as servers where computing objects1110,1112, etc. provide data services, such as receiving data from client computing objects or devices1120,1122,1124,1126,1128, etc., storing of data, processing of data, transmitting data to client computing objects or devices1120,1122,1124,1126,1128, etc., although any computer can be considered a client, a server, or both, depending on the circumstances.

In a network environment in which the communications network/bus1140is the Internet, for example, the computing objects1110,1112, etc. can be Web servers with which the client computing objects or devices1120,1122,1124,1126,1128, etc. communicate via any of a number of known protocols, such as the hypertext transfer protocol (HTTP). Objects1110,1112, etc. may also serve as client computing objects or devices1120,1122,1124,1126,1128, etc., as may be characteristic of a distributed computing environment.

Exemplary Computing Device

As mentioned, advantageously, the techniques described herein can be applied to any device suitable for implementing various embodiments described herein. Handheld, portable and other computing devices and computing objects of all kinds are contemplated for use in connection with the various embodiments, e.g., anywhere that a device may wish to read or write transactions from or to a data store. Accordingly, the below general purpose remote computer described below inFIG. 12is but one example of a computing device.

FIG. 12thus illustrates an example of a suitable computing system environment1200in which one or aspects of the embodiments described herein can be implemented, although as made clear above, the computing system environment1200is only one example of a suitable computing environment and is not intended to suggest any limitation as to scope of use or functionality. Neither is the computing environment1200be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment1200.

With reference toFIG. 12, an exemplary remote device for implementing one or more embodiments includes a general purpose computing device in the form of a computer1210. Components of computer1210may include, but are not limited to, a processing unit1220, a system memory1230, and a system bus1222that couples various system components including the system memory to the processing unit1220. It is to be appreciated that the computer1210can be used in connection with implementing one or more of the systems or components shown and described in connection withFIGS. 1-2and5-8. For instance, the computer1210can include a user device102. In addition, the computer1210can include a smart phone, a cell phone, a personal digital assistant (PDA), a tablet, a laptop, a desktop computer, a portable music player, a video game system, an electronic reader (e-reader), a global positioning system (GPS) transceiver, a set-top box, and/or a television.

Computer1210includes a variety of computer readable media and can be any available media that can be accessed by computer1210. The system memory1230may include computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) and/or random access memory (RAM). By way of example, and not limitation, memory1230may also include an operating system, application programs, other program modules, and program data.

A user can enter commands and information into the computer1210through input devices1240. A monitor or other type of display device is also connected to the system bus1222via an interface, such as output interface1250. In addition to a monitor, computers can also include other peripheral output devices such as speakers and a printer, which may be connected through output interface1250.

The computer1210may operate in a networked or distributed environment using logical connections to one or more other remote computers, such as remote computer1270. The remote computer1270may be a personal computer, a server, a router, a network PC, a peer device or other common network node, or any other remote media consumption or transmission device, and may include any or all of the elements described above relative to the computer1210. The logical connections depicted inFIG. 12include a network1272, such local area network (LAN) or a wide area network (WAN), but may also include other networks/buses. Such networking environments are commonplace in homes, offices, enterprise-wide computer networks, intranets and the Internet.

As mentioned above, while exemplary embodiments have been described in connection with various computing devices and network architectures, the underlying concepts may be applied to any network system and any computing device or system in which it is desirable to publish or consume media in a flexible way.

As mentioned, the various techniques described herein may be implemented in connection with hardware or software or, where appropriate, with a combination of both. As used herein, the terms “component,” “system” and the like are likewise intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on computer and the computer can be a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers. Further, a component can come in the form of specially designed hardware; generalized hardware made specialized by the execution of software thereon that enables the hardware to perform specific function (e.g., coding and/or decoding); software stored on a computer readable medium; or a combination thereof.