Content streaming and broadcasting

Apparatuses and methods are described herein for interactive streaming among a broadcasting device and a plurality of viewing devices, including, but not limited to, receiving, by a server, a request from the broadcasting device to output content captured by the plurality of viewing devices as an output stream. The server queues the plurality of viewing devices for displaying the content in the output stream sequentially. The server receives the content from each of the plurality of viewing devices. The server stitches the content from each of the plurality of viewing devices into the same output stream for displaying the content in real time.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is related to U.S. patent application Ser. No. 14/839,864 entitled “Content Streaming and Broadcasting,” filed Aug. 28, 2015, which is fully incorporated herein by reference in its entirety. This application is also related to U.S. patent application Ser. No. 14/839,803 entitled “Content Streaming and Broadcasting,” filed Aug. 28, 2015, which is fully incorporated herein by reference in its entirety.

BACKGROUND

The present embodiments relate generally to the field of content broadcasting and streaming, and particularly, to broadcaster-viewer interactions in content broadcasting and streaming.

Advances in mobile technology enable audiovisual contents to be streamed to mobile devices with improved reliability, speed, and accessibility. As network speed and processing power increase with time, streaming services broadcasting user-generated contents are becoming progressively popular.

A broadcaster that does not have viewers will likely never broadcast again. Therefore, it is critical to attract as many viewers for the broadcaster as possible, to make broadcasting rewarding. Viewer engagement may also be an important aspect of broadcasting platforms, given that viewer interest level may be directly related to a number of viewers using the broadcasting platforms.

Conventional broadcasting platforms may not allow the broadcaster to go live at the appropriate moment when the broadcasting platforms cannot connect to a network or when the network speed is below an acceptance level. A broadcaster who is unable to capture a moment intended to be live may not find the broadcasting platform to be reliable.

SUMMARY OF THE INVENTION

Embodiments described herein relate to broadcasting and streaming services for obtaining and distributing user generated content. A platform for broadcasting and streaming may be formed as an application or software on a mobile device for broadcasters and viewers. A server may be provided to control interactions between the broadcasting device and the viewing devices. The platform may include a network of contacts for distribution of media content from the broadcasters to the viewers, vice versa. In addition or alternatively, the platform may include links interfacing with existing social networks to connect the broadcasters and viewers. Streaming notifications, invitations, or the like may be distributed via such networks.

A method for interactive streaming among a broadcasting device and a plurality of viewing devices is described herein according to some embodiments, the method includes, receiving, by a server, a request from the broadcasting device to output content captured by the plurality of viewing devices as an output stream. The server queues the plurality of viewing devices for displaying the content in the output stream sequentially. The server receives the content from each of the plurality of viewing devices. The server stitches the content from each of the plurality of viewing devices into the same output stream for displaying the content in real time.

In some embodiments, the method further includes sending, by the server, the stitched output stream to the plurality of viewing devices and the broadcasting device to be displayed.

In some embodiments, the method further includes sending, by the server, content of the broadcasting device to the plurality of viewing devices prior to sending the stitched output stream to the plurality of viewing devices.

In various embodiments, the plurality of viewing devices are outputting the content of the broadcasting device concurrent with the server receiving the request.

In some embodiments, the plurality of viewing devices are queued based on a time at which each of the plurality of viewing devices started to receive the content of the broadcasting device.

According to some embodiments, the plurality of viewing devices are queued at random.

In some embodiments, the method further includes providing, by the server to each of the plurality of viewing devices, an indication of a position in the queue for each of the plurality of viewing devices.

According to various embodiments, the request to output content captured by the plurality of viewing devices is based on user input of a broadcaster using the broadcasting device.

In some embodiments, a predetermined length of the content from each of the plurality of viewing devices is stitched in the output stream. The predetermined length of the content for each of the plurality of viewing devices is the same in the output stream.

In various embodiments, the predetermined length is determined by the server as default, or the predetermined length corresponds to a broadcaster-set length of time received from the broadcasting device.

In various embodiments described is a non-transitory computer-readable medium storing computer-readable instructions, such that, when executed by a processor, performs a method for interactive streaming among a broadcasting device and a plurality of viewing devices, the method including: receiving a request from the broadcasting device to output content captured by the plurality of viewing devices as an output stream, queuing the plurality of viewing devices for displaying the content in the output stream sequentially, receiving the content from each of the plurality of viewing devices, and stitching the content from each of the plurality of viewing devices into the same output stream for displaying the content in real time.

According to various embodiments, the method further includes sending, by the server, the stitched output stream to the plurality of viewing devices and the broadcasting device to be displayed.

In some embodiments, the method further includes sending, by the server, content of the broadcasting device to the plurality of viewing devices prior to sending the stitched output stream to the plurality of viewing devices.

In some embodiments, the plurality of viewing devices are outputting the content of the broadcasting device concurrent with the server receiving the request.

In some embodiments, the plurality of viewing devices are queued based on a time at which each of the plurality of viewing devices started to receive the content of the broadcasting device.

According to some embodiments, the plurality of viewing devices are queued at random.

In various embodiments, the method further includes providing, by the server to each of the plurality of viewing devices, an indication of a position in the queue for each of the plurality of viewing devices.

In some embodiments, the request to output content captured by the plurality of viewing devices is based on user input of a broadcaster using the broadcasting device.

According to some embodiments, a predetermined length of the content from each of the plurality of viewing devices is stitched in the output stream.

In some embodiments, a method for interactive streaming among a broadcasting device and a plurality of viewing devices is described herein, including, but not limited to, receiving, by a first viewing device of the plurality of viewing devices from a server, a position in queue to output content from the first viewing device. The first viewing device receives stitched real-time content from the server, the content being from at least one of the plurality of viewing devices other than the first viewing device as output stream. The first viewing device displays the received stitched real-time content. The first viewing device sends, to the server, the content of the first viewing device based on the position of the first viewing device in queue.

DETAILED DESCRIPTION

The detailed description set forth below in connection with the appended drawings is intended as a description of various aspects of the present disclosure and is not intended to represent the only aspects in which the present disclosure may be practiced. Each aspect described in this disclosure is provided merely as an example or illustration of the present disclosure, and should not necessarily be construed as preferred or advantageous over other aspects. The detailed description includes specific details for providing a thorough understanding of the present disclosure. However, it will be apparent to those skilled in the art that the present disclosure may be practiced without these specific details. In some instances, structures and devices are shown in block diagram form in order to avoid obscuring the concepts of the present disclosure. Acronyms and other descriptive terminology may be used merely for convenience and clarity and are not intended to limit the scope of the present disclosure.

Embodiments described herein relate to software platform for media content broadcasting and streaming on mobile devices (e.g., smart phones, tablets, or the like). A broadcasting device (used by a broadcaster) may initiate a streaming session to stream media content via a network to be viewed by viewing devices (each used by a user). The content may include live audiovisual content captured by a camera and a microphone on the broadcasting device. The content may also include text or audio comments, with the audiovisual content. The viewers may be social media friends/followers or invitees of the broadcaster, who may like to view a live video stream from the broadcaster. For example, the software platform may include links to existing online social network to access a social contact list of the broadcaster. The software platform may also include its own social network for the same purpose.

After the broadcasting device initiates the streaming session, the broadcasting device can notify the viewers (on the viewing devices) to spectate the stream by accessing the social contact list and sending notifications to the viewing devices. At least one of the viewers (on a viewing device) may be invited to “take over” the output stream, such that at least a portion (or all) of the output stream includes media content captured by a camera and/or a microphone on that invited viewer's viewing device. To achieve this, the broadcasting device may send a live video to a server, for broadcasting an output video stream to viewers. The broadcaster may also send an invitation to share to one of the viewers (on a viewing device). The viewer (on the viewing device), upon accepting the invitation, may send its own media content captured by the camera and/or the microphone on the viewing device, to the server, to be broadcasted in the output stream. In other words, the invited viewer can take over some or all of the video stream that is outputted to the other viewers. The broadcasting device may enable or terminate the takeover based on user inputs of the broadcaster. Upon termination of the takeover, the output stream may again include only the media content originating from the broadcasting device.

In additional embodiments, the (first) invited viewer may, in turn, pass on the takeover to a second viewer (using another viewing device). The second viewer may take over the output stream in a similar manner from the first viewer and/or the broadcaster at least partially. For example, the output media stream may include media content captured by both the broadcaster's device and the second viewing device. The broadcasting device may have an option (configured as a user interactive element, soft switch, actuator, operator, or the like) to permit or deny the first viewer's invitation to the second viewer before the takeover is passed to the second viewer. In further embodiments, after the takeover has been passed to the second viewer, the broadcaster may have an option (configured as a user interactive element, soft switch, actuator, or the like) to terminate the takeover to return the output stream back to the broadcaster. The first viewer may also have an option (configured as a user interactive element, soft switch, actuator, or the like) to terminate the takeover to return the output stream back to the broadcaster.

In some embodiments, once an invited viewer (e.g., the first viewer, the second viewer, or the like) “takes over” the video stream, only the media content from the invited viewing device (instead of the broadcasting device) is outputted from the server to the rest of the viewing devices as the output stream. In other embodiments, the media content from the broadcasting device and the invited viewing device is combined to be outputted by the server as the output stream, to be displayed simultaneously on a same screen, in a split screen, or in an overlapping format. The broadcaster (via the broadcasting device) may control the position of the split in the split-screen or the size and position of a window displaying the invited viewer's media content. At the same time, the viewers (on the viewing devices) can observe the change in the size and position of the window. In this manner, the broadcaster can control and dynamically change the relative sizes of the two portions of the screen that display the media content from the broadcaster and the invited viewer (e.g., to provide the broadcaster's media content on a larger, smaller, or equal sized portion of the display screen, when displayed on the viewing devices).

A viewer (on a viewing device) may receive the output stream (which may include media content from the broadcasting device, the invited viewing device, or both) as described herein, and may selectively retrieve and replay a just-played segment of the media content. For example, if a viewer (on a viewing device) sees an interesting or funny event in the video stream being displayed on that viewer's device, the viewer may activate a soft button (or a user interactive element, soft switch, actuator, operator, or the like) to cause the viewing device to record and replay the last predetermined number of seconds of the video stream. The viewer may relay the segment to other network users, via email, posting on social media, etc.

In the examples herein, the broadcaster (on the broadcasting device) may select and control which viewer (on a viewing device) may add content to or take over the video stream. In other examples, the server may select a viewer (on a viewing device) to add content to or take over the output video stream for a predefined period of time (e.g., 5 sec.), may select another viewer (on another viewing device), and so forth, such that the output video stream includes a series of short video segments captured by a plurality of different viewing devices, to be played on each of the viewing devices in a sequential manner in the single, uninterrupted video stream. Participating viewers (on viewing devices) may be queued by the server, and the server may provide a queue position or starting time to each participating viewer on the corresponding viewing device. At or shortly before the starting time for a viewer, the camera on that viewing device may begin capturing live audiovisual media content and may continue for the duration of the predefined time period, while the server may provide that live content as the output stream to all viewing devices. Then, the participating viewer next in the queue is selected and media content captured by the corresponding viewing device may be provided as the output stream, and so forth. In this manner, the output stream may include real-time media content (played for the predetermined period of time) for each of the queued viewing devices in the order assigned.

The output stream may include media content from the broadcasting device and/or multiple viewing devices, stitched together and dynamically combined to appear seamless. On a viewing device, the output stream may be paused to avoid viewing undesired content. When resumed, the output stream is still real-time, with the undesired content skipped over (edited out).

The media content of the broadcasting device may be cached or otherwise stored locally on the broadcasting device (or an invited viewing device), e.g., when the device determines that the network cannot be accessed (e.g., in the absence of mobile data and WiFi services), for later broadcasting.

With reference toFIG. 1, a schematic block diagram illustrating an example of a broadcasting system100according various embodiments. The broadcasting system100may include at least a broadcasting device110, one or more viewing devices120(e.g., a first viewing device120a, a second viewing device120b, . . . , and a nth viewing device120n), server140, and storage cluster145. Each of the broadcasting device110, viewing devices120, server140, and storage cluster145may be connected to one another through a network130.

In some embodiments, the broadcasting device110may be associated with (i.e., used by) a broadcaster who broadcasts media content initially. As used herein, “media content” may refer to video content, audio content, or both. Each of the viewing devices120may be associated with (i.e., used by) a viewer who views the broadcasted media content initially. In other words, the viewers are generally the audience of the broadcaster. However, as described in more details herein, viewers (through the corresponding viewing devices120) may nevertheless participate in the streaming by having media contents captured by the viewing devices120to be stitched to the output stream.

In various embodiments, the server140may represent a “command center” in which control (e.g., stitching), management, and/or distribution of media content (originating from the broadcasting device110and/or one or more of the viewing devices120) to the viewing devices120. The storage cluster145may be operatively coupled to the server140.

In some embodiments, the storage cluster145may be connected to the server140through the network130. In other embodiments, the storage cluster145may be connected to the server140in through another suitable network. In particular embodiments, the storage cluster145may be capable of storing a greater amount of information and provide a greater level of security against unauthorized access to stored information, than a memory (e.g., a memory420ofFIG. 4) of the server140. The storage cluster145may include any suitable electronic storage device or system, including, but not limited to, Random Access Memory (RAM), Read Only Memory (ROM), floppy disks, hard disks, dongles, or other Recomp Sensory Board (RSB) connected memory devices, or the like. In further embodiments, the storage cluster145may be connected to the broadcasting device110or the viewing devices through the network130for storing data (e.g., media content originating from these devices).

In some embodiments, the network130may allow data communication between the server140, the broadcasting device110, the viewing devices120, and/or the storage cluster145. The network130may be a wide area communication network, such as, but not limited to, the Internet, or one or more Intranets, local area networks (LANs), Ethernet networks, metropolitan area networks (MANs), a wide area network (WAN), combinations thereof, or the like. The network130may also be a mobile data network such as, but not limited to, a 3G network, Long Term Evolution (LTE) network, 4G network, or the like. In particular embodiments, the network130may represent one or more secure networks configured with suitable security features, such as, but not limited to firewalls, encryption, or other software or hardware configurations that inhibits access to network communications by unauthorized personnel or entities.

The broadcasting device110may capture audiovisual data (e.g., media content) of a broadcaster's view115. One or more of the viewing devices120(e.g., the first viewing device120a) may likewise capture audiovisual data of a viewer's view (e.g., the first viewer's view125a).

FIG. 2is a block diagram illustrating an example of the server140(as represented inFIG. 1) according to various embodiments. Referring toFIGS. 1-2, the server140may include at least one processor210, memory220operatively coupled to the processor210, at least one output device230, at least one input device240, and at least one network device250. In some embodiments, the server140may include a desktop computer, mainframe computer, laptop computer, pad device, smart phone device or the like, configured with hardware and software to perform operations described herein. For example, the server140may include a typical desktop PC or Apple™ computer devices, having suitable processing capabilities, memory, user interface (e.g., display and input) capabilities, and communication capabilities, when configured with suitable application software (or other software) to perform operations described herein. Thus, particular embodiments may be implemented, using processor devices that are often already present in many business and organization environments, by configuring such devices with suitable software processes described herein. Accordingly, such embodiments may be implemented with minimal additional hardware costs. However, other embodiments of the server140may include to dedicated device hardware specifically configured for performing operations described herein.

The processor210may include any suitable data processing device, such as a general-purpose processor (e.g., a microprocessor), but in the alternative, the processor210may be any conventional processor, controller, microcontroller, or state machine. The processor210may also be implemented as a combination of computing devices, e.g., a combination of a Digital Signal Processor (DSP) and a microprocessor, a plurality of microprocessors, at least one microprocessors in conjunction with a DSP core, or any other such configuration. The processor210may be configured to perform features and functions of the server140as described herein.

The memory220may be operatively coupled to the processor210and may include any suitable device for storing software and data for controlling and use by the processor210to perform operations and functions described herein. The memory220may include, but not limited to, a RAM, ROM, floppy disks, hard disks, dongles, or other RSB connected memory devices, or the like.

In particular embodiments, the server140may include at least one output device230. The output device230may include any suitable device that provides a human-perceptible visible signal, audible signal, tactile signal, or any combination thereof, including, but not limited to a touchscreen, Liquid Crystal Display (LCD), Light Emitting Diode (LED), Cathode Ray Tube (CRT), plasma, or other suitable display screen, audio speaker or other audio generating device, combinations thereof, or the like.

In some embodiments, the server140may include at least one input device240that provides an interface for personnel (such as service entity employees, technicians, or other authorized users) to access the broadcasting system100(e.g., the server140and the further data storage devices such as the storage cluster145, if any) for servicing, monitoring, generating reports, communicating with the broadcasting device110or the viewing devices120, and/or the like. The input device240may include any suitable device that receives input from a user including, but not limited to, one or more manual operator (such as, but not limited to a switch, button, touchscreen, knob, mouse, keyboard, keypad, slider or the like), microphone, camera, image sensor, or the like.

The network device250may be configured for connection with and communication over the network130. The network device250may include interface software, hardware, or combinations thereof, for connection with and communication over the network130. The network device250may include at least one wireless receiver, transmitter, and/or transceiver electronics coupled with software to provide a wireless communication link with the network130(or with a network-connected device). In particular embodiments, the network device250may operate with the processor210for providing wired or wireless communication functions such as transmitting and receiving as described herein. The network device250may provide communications in accordance with typical industry standards, such as, but not limited the Internet, or one or more Intranets, LANs) Ethernet networks, MANs, WANs, 3G network, LTE network, 4G network, or the like.

FIG. 3is a block diagram illustrating an example of the first viewing device120a(as represented inFIG. 1) according to some embodiments. Referring toFIGS. 1-3, each of the viewing devices120may be a device such as, but not limited to, described with respect to the first viewing device120a. The first viewing device120amay include at least one processor310, memory320operatively coupled to the processor310, at least one output device330, at least one input device340, and at least one network device350.

The processor310may include any suitable data processing device, such as a general-purpose processor (e.g., a microprocessor), but in the alternative, the processor310may be any conventional processor, controller, microcontroller, or state machine. The processor310may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, at least one microprocessors in conjunction with a DSP core, or any other such configuration. The processor310may be configured to perform features and functions of the first viewing device120aas described herein.

The memory320may be operatively coupled to the processor310and may include any suitable device for storing software and data for controlling and use by the processor310to perform operations and functions described herein. The memory310may include, but not limited to, a RAM, ROM, floppy disks, hard disks, dongles, or other RSB connected memory devices, or the like.

The output device330may include any suitable device that provides a human-perceptible visible signal, audible signal, tactile signal, or any combination thereof, including, but not limited to a touchscreen, LCD, LED, CRT, plasma, or other suitable display screen, audio speaker or other audio generating device, combinations thereof, or the like. Particularly, the output device330may be configured to output audiovisual content data (received from the server140via the network130) to a viewer (e.g., a first viewer) using the first viewing device120a.

The input device340may provide an interface to receive user input of the first viewer. The input device340may include any suitable device that receives input from the first viewer including, but not limited to one or more manual operator (such as, but not limited to a switch, button, touchscreen, knob, mouse, keyboard, keypad, slider or the like), microphone, camera, image sensor, or the like. Particularly, the input device340may be configured to capture audiovisual content (e.g., first viewer content corresponding to the first viewer's view125a) to be transmitted to the server140.

The network device350may be configured for connection with and communication over the network130. The network device350may include interface software, hardware, or combinations thereof, for connection with and communication over the network130. The network device350may include at least one wireless receiver, transmitter, and/or transceiver electronics coupled with software to provide a wireless communication link with the network130(or with a network-connected device). In particular embodiments, the network device350may operate with the processor310for providing wired or wireless communication functions such as transmitting and receiving as described herein. The network device350may provide communications in accordance with typical industry standards, such as, but not limited the Internet, or one or more Intranets, LANs Ethernet networks, MANs, WANs, 3G network, LTE network, 4G network, or the like.

FIG. 4is a block diagram illustrating an example of the broadcasting device110(as represented inFIG. 1) according to some embodiments. Referring toFIGS. 1-4, the broadcasting device110may include at least one processor410, memory420operatively coupled to the processor410, at least one output device430, at least one input device440, and at least one network device450.

The processor410may include any suitable data processing device, such as a general-purpose processor (e.g., a microprocessor), but in the alternative, the processor410may be any conventional processor, controller, microcontroller, or state machine. The processor410may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, at least one microprocessors in conjunction with a DSP core, or any other such configuration. The processor410may be configured to perform features and functions of the broadcasting device110as described herein.

The memory420may be operatively coupled to the processor410and may include any suitable device for storing software and data for controlling and use by the processor410to perform operations and functions described herein. The memory410may include, but not limited to, a RAM, ROM, floppy disks, hard disks, dongles, or other RSB connected memory devices, or the like.

The output device430may include any suitable device that provides a human-perceptible visible signal, audible signal, tactile signal, or any combination thereof, including, but not limited to a touchscreen, LCD, LED, CRT, plasma, or other suitable display screen, audio speaker or other audio generating device, combinations thereof, or the like. Particularly, the output device430may be configured to output audiovisual content data (received from the server140via the network130) to a broadcaster using the broadcasting device110.

The input device440may provide an interface to receive user input of the broadcaster. The input device340may include any suitable device that receives input from the first viewer including, but not limited to one or more manual operator (such as, but not limited to a switch, button, touchscreen, knob, mouse, keyboard, keypad, slider or the like), microphone, camera, image sensor, or the like. Particularly, the input device440may be configured to capture audiovisual content (e.g., broadcaster content corresponding to the broadcaster's view115) to be transmitted to the server140.

The network device450may be configured for connection with and communication over the network130. The network device450may include interface software, hardware, or combinations thereof, for connection with and communication over the network130. The network device450may include wireless receiver, transmitter, and/or transceiver electronics coupled with software to provide a wireless communication link with the network130(or with a network-connected device). In particular embodiments, the network device450may operate with the processor410for providing wired or wireless communication functions such as transmitting and receiving as described herein. The network device450may provide communications in accordance with typical industry standards, such as, but not limited the Internet, or one or more Intranets, LANs Ethernet networks, MANs, WANs, 3G network, LTE network, 4G network, or the like.

In some embodiments, the first viewing device120a(i.e., each of the viewing devices120) and the broadcasting device110may include a mobile phone (such as, but not limited to an iPhone®, an Android® phone, or the like) or other mobile phone with suitable processing capabilities. Typical modern mobile phone devices include telephone communication electronics as well as some processor electronics, one or more output devices and a touchscreen and/or other input device, such as, but not limited to described herein. Particular embodiments employ mobile phones, commonly referred to as smart phones, that have relatively advanced processing, input and display capabilities in addition to telephone communication capabilities. However, the first viewing device120a(i.e., each of the viewing devices120) and the broadcasting device110, in further embodiments, may include any suitable type of mobile phone and/or other type of portable electronic communication device, such as, but not limited to, an electronic smart pad device (such as, but not limited to an iPad™), a portable laptop computer, or the like.

In some embodiments, the first viewing device120a(i.e., each of the viewing devices120) and the broadcasting device110may have existing hardware and software for telephone and other typical wireless telephone operations, as well as additional hardware and software for providing functions as described herein. Such existing hardware and software includes, for example, one or more input devices (such as, but not limited to keyboards, buttons, touchscreens, cameras, microphones, environmental parameter or condition sensors), display devices (such as, but not limited to electronic display screens, lamps or other light emitting devices, speakers or other audio output devices), telephone and other network communication electronics and software, processing electronics, electronic storage devices and one or more antennae and receiving electronics for receiving various signals. In such embodiments, some of that existing electronics hardware and software may also be used in the systems and processes for functions as described herein.

Accordingly, such embodiments can be implemented with minimal additional hardware costs. However, other embodiments relate to systems and process that are implemented with dedicated device hardware specifically configured for performing operations described herein. Hardware and/or software for the functions may be incorporated in the first viewing device120a(i.e., each of the viewing devices120) and the broadcasting device110during manufacture, for example, as part of the original manufacturer's configuration. In further embodiments, such hardware and/or software may be added to the first viewing device120a(i.e., each of the viewing devices120) and the broadcasting device110, after original manufacture, such as by, but not limited to, installing one or more software applications.

FIG. 5is an example of a display screen500illustrating a social networking aspect of a streaming platform according to various embodiments. Referring toFIGS. 1-5, the display screen500may displayed by the output device330of the first viewing device120aand the output device430of the broadcasting device110. Each of the viewing devices120may also become a broadcasting device (such as, but not limited to, the broadcasting device110) when the user decides to broadcast content. The display screen500may include contacts510to broadcast the streams to. The contacts510may be obtained from a contact list (e.g., a phone book) stored locally within the device, from a linked social media site (e.g., Facebook, Twitter, or the like), or from a social media feature of the streaming platform. Contacts510from the contact list may be invited to view the broadcast, to be notified of the broadcast, or to take over the broadcast, as described herein. User interactive elements520(or soft switches, actuators, operators, or the like) may be provided in the display screen500for performing such features.

FIG. 6is a process flowchart illustrating an interactive broadcasting method600according to various embodiments. Referring toFIGS. 1-6, the interactive broadcasting method600may be performed by the processor210of the server140according to some embodiments. Initially, the server140may output an output stream to the viewing devices120(including the first viewing device120a) containing media content of only the broadcasting device110. At block B610, the server140may receive a request from the broadcasting device110for the first viewing device120ato take over the output stream. The first viewing device120amay be used by a first viewer within a social network of the broadcaster. At block B620, the server140may relay the request to the first viewing device120a. For example, the server140may interface with the social network to provide notification to the first viewing device120a.

Subsequently, the server140may receive an acceptance notification from the first viewing device120aindicating that the first viewer has accepted taking over the output stream. At block B630, the server140may receive media content of the first viewing device120a. In some embodiments, the server140may receive the media content of the first viewing device120ain response to the first viewing device120aaccepting the takeover request. At this point, the server140may time-align the media content of the broadcasting device110and the first viewing device120abased on, for example, suitable synchronization methods using timestamps, sequence numbers, a combination thereof, and/or the like.

The time-aligned media content of both the broadcasting device110and the first viewing device120may be distributed (sent) by the server140to viewing devices120other than the first viewing device120ato be outputted simultaneously (or sequentially), at block B640. In other embodiments, the combined media content may be sent to the first viewing device120a, the broadcasting device110, or both to be outputted simultaneously.

Alternatively, instead of sending the media content of both the first viewing device120aand the broadcasting device110, the server140may only send the media content of the first viewing device120in response to the acceptance indication received from first viewing device120, until a termination indication has been received by the server140.

FIG. 7is a process flowchart illustrating an interactive broadcasting method700according to various embodiments. Referring toFIGS. 1-7, the interactive broadcasting method700may be performed by the processor410of the broadcasting device110according to some embodiments. At block B710, the broadcasting device110may send the media content captured by the broadcasting device110to the server140, to be outputted to the viewing devices120in the output stream.

At block B720, the broadcasting device110may send the request to the server140for the first viewing device120ato take over the output stream. The broadcasting device110may receive user input from the broadcaster via the input device440regarding which one of the viewing devices120to send the takeover request to. The first viewing device120amay correspond to a first viewer within the social network (such as, but not limited to, shown in the display screen500) of the broadcaster.

In some embodiments, the broadcasting device110may receive a second request from the first viewing device120a(or from the server140which relays the second request from the first viewing device120a) to have another one of the viewing devices (e.g., the second viewing device120b) to take over the output stream. When permitted, the second viewing device120bmay request for another one of the viewing devices120to take over the output stream, and so on. At block B730, the broadcasting device110may permit or deny any subsequent takeover requests by any of the viewing devices120requesting to have another one of the viewing devices120to take over the output stream. The permission and the denial may be sent to the server140, which would then time-align and/or combine the media content of the broadcasting device110and the permitted one of the viewing devices120to be sent to the viewing devices120.

At block B740, the broadcasting device110may send an indication for the first viewing device120a(or another viewing device currently taking over the output stream) to terminate the takeover. Once the server140receives such indication, the media content of any of the viewing devices120taking over the output stream may be dropped. The server140may once again send media content of only the broadcasting device110to the viewing devices120.

FIG. 8is a process flowchart illustrating an interactive broadcasting method800according to various embodiments. Referring toFIGS. 1-8, the interactive broadcasting method800may be performed by the processor310of the first viewing device120aaccording to some embodiments. Initially, the first viewing device120amay be configured to display, via the output device330, the output stream (containing media content from the broadcasting device110) received from the server140. At block B810, the first viewing device120amay receive the request to take over the output stream from the server140(that relays the request from the broadcasting device110) or from the broadcasting device110directly via the network130. In response, the first viewing device120amay send the media content of the first viewing device120aat block B820.

At block B830, the first viewing device120amay send a second request for the second viewing device120bto take over the output stream to the server140(which may relay the second request to the broadcasting device110) or to the broadcasting device110directly. The second request may be based on user input of the first viewer.

When the server140permits such subsequent takeover by the second viewing device120b, the first viewing device120a(as well as other viewing devices120including or not including the second viewing device120b) may display media content of both the broadcasting device110and the second viewing device120bsimultaneously, at block B840.

FIG. 9is a process flowchart illustrating an interactive broadcasting method900according to various embodiments. Referring toFIGS. 1-9, the interactive broadcasting method900may be performed by the processor210of the server140according to some embodiments. At block B910, the server140may send media content received from the broadcasting device110to the viewing devices120as the output stream. At block B920, the server140may receive the request from the broadcasting device110for the first viewing device120ato take over the output stream. In response, the server140may send the request to the first viewing device120a, at block B930.

At block B940, the first viewing device120amay determine whether to accept the takeover request, based on user input of the first viewer. When the first viewer indicates that taking over is not desired, the server140may continue to send the media content of the broadcasting device110at block B910(B940: NO). On the other hand, when the first viewer indicates that taking over is desired, the server140may stitch the media content of the broadcasting device110and the first viewing device120aat a transition point to transition sending the media content of the broadcasting device110to sending the media content of the first viewing device120aseamlessly, at block B950(B940: YES). Alternatively, the server140may time align the media content of the broadcasting device110and the first viewing device120a, and send the media content of both the broadcasting device110and the first viewing device120ato the viewing devices120to be displayed simultaneously.

In some embodiments, the server140may determine whether the indication of termination has been received from the broadcasting device110. When the indication of termination has been received from the broadcasting device110, the server140may drop the media content of the first viewing device120aand send the media content of only the broadcasting device110, at block B910(B960: YES). On the other hand, when the indication of termination has not been received from the broadcasting device110, the server140may continue to send the media content of the first viewing device120a(or both the broadcasting device110and the first viewing device120a, in the alternative case) to the viewing devices120, at block B950(B960: NO). In other embodiments, the first viewing device120amay itself terminate the takeover, based on user input.

At block B970, the server140may receive the second request from the first viewing device120afor the second viewing device120bto take over the output stream. The server140may forward the second request from the first viewing device120ato the broadcasting device110for approval. When the server140receives the permission from the broadcasting device110, permission has been granted at block B980. When the permission has been granted, the server140may stitch the media content of the first viewing device120aand the second viewing device120bat another transition point in the output stream to transition sending the media content of the first viewing device120ato sending the media content of the second viewing device120b, at block B990(B980: YES). Alternatively, the server140may time-align the media content of one or more of the broadcasting device110, the first viewing device120a, or the second viewing device120bfor sending to the viewing devices120. On the other hand, when then permission has not been granted, the server140may continue to send the media content of both the broadcasting device110and the first viewing device120ato the viewing devices120, at block B950(B980: NO).

Though described with respect to the first and the second viewing devices120a,120b, additional viewing devices may be invited by another viewing device to take over the output stream, subject to the permission of the broadcasting device110. For example, the second viewing device120bmay subsequently invite a third viewing device (not shown), and the third viewing device may then invite a fourth viewing device (not shown), and so forth.

However, when any of the viewing devices120takes over the output stream, the broadcasting device110may send the indication of termination to the server140to return the output stream back to containing the media content of only the broadcasting device110(e.g., at block B960).

FIG. 10is an example of a display screen1000for requesting the first viewer device120ato take over the output stream according to various embodiments. Referring toFIGS. 1-10, the display screen1000may be displayed by the output device430of the broadcasting device110. The display screen1000may include a first entry1010corresponding to the first viewer. One or more entries (such as, but not limited to, the first entry1010) may be displayed in the display screen1000for selection by the broadcaster, via the input device440. A first user interactive element1020(or soft switch, actuator, operator, or the like) may be presented such that, when selected via the input device440, may trigger sending of the request to take over to the first viewing device120aassociated with the first entry1010. A confirmation window1030may be displayed to verify that the broadcaster meant to send the request to the first viewing device120a.

FIG. 11is an example of a display screen1100for responding to the takeover request according to various embodiments. Referring toFIGS. 1-11, the display screen1100may be displayed by the output device330of the first viewing device120a. When the server140relays the takeover request to the first viewing device120a, the first viewing device120amay display the display screen1100to the first viewer. The display screen1100may include a notification window1110having at least one user interactive element, soft switch, actuator, operator, or the like for accepting or declining the takeover request.

FIG. 12is an example of a display screen1200displaying media content of the first viewing device120a(the first viewer's view125a) according to various embodiments. Referring toFIGS. 1-12, the display screen1200may be displayed by one or more or all of the output device330of the first viewing device120a, by the output device330of other viewing devices120, and/or by output device430of the broadcasting device110. The display screen1200may show takeover media content1210which may correspond to the first viewer's view125a. The output devices330of the viewing devices120may output an instant transition from the original media content (e.g., the broadcaster's view115) to the takeover media content1210. In other words, the original media content and the takeover media content1210may be stitched together to form a seamless, continuous video.

In particular embodiments, a Hypertext Transfer Protocol (HTTP) Live Streaming (HLS) protocol may be modified to transparently change the inbound stream from one source (e.g., the broadcasting device110) to another source (e.g., the first viewing device120a). Media content from both sources may be stored in the storage cluster145. The HLS protocol may be used to appropriately append the media content from the another source to the media content of the one source, thus allowing the transparent switchover.

Alternatively, the display screen1200may include the takeover media content1210as well as the original media content (e.g., the broadcaster's view115) from the broadcasting device110, in a split screen or overlapping format. The broadcasting device110may receive user input (via a sliding bar or other suitable user interactive element, soft switch, actuator, operator, or the like) related to adjusting a position and/or size of a screen playing the media content of the first viewing device120a. Additional embodiments include enabling the broadcaster to adjust a position and/or size of a screen playing the media content of the broadcasting device110and/or at least one additional screen playing the media content of another additional one of the viewing devices120(in the case in which media content of the broadcasting device110and two or more of the viewing devices120are playing at the same time). The broadcasting device110may send such adjustment indications to the server140. The server140may then distribute such adjustment indications to the viewing devices120. The position and/or size of the screens described herein may accordingly be adjusted by each of the viewing devices120according to the adjustment indication received.

FIG. 13is an example of a display screen1300displaying a termination message1310according to various embodiments. Referring toFIGS. 1-13, the display screen1300may be displayed by the output device330of the first viewing device120aor of any other viewing devices120taking over the output stream. In response to receiving the indication of termination from the server140or from the broadcasting device110directly, the first viewing device120amay be configured to display the termination message1310to notify the first viewer that the takeover is ending or will end soon.

FIG. 14is a process flowchart illustrating a stream content sharing method1400according to various embodiments. Referring toFIGS. 1-14, the streaming content sharing method1400may be performed by the processor310of the first viewing device120a(or the processor310of each of the viewing devices120) according to some embodiments. In further embodiments, the streaming content sharing method1400may be performed by the processor410of the broadcasting device110.

At block B1410, the first viewing device120amay store a predetermined time interval of a most recent portion of the output stream received from the server140. Given that the stream may be real-time and continues to accumulate data, the stored portion of the output stream may be constantly updated (e.g., adding the latest frames and deleting earlier frames beyond the predetermined time interval). The most recent portion of the output stream may be stored in the local memory320of the first viewing device120a. Alternatively, the most recent portion of the output stream may be stored in any suitable cloud storage or the storage cluster145, retrievable by the first viewing device120a.

At block B1420, the first viewing device120amay detect a trigger event. The trigger event may be detecting a user input related to retrieving at least a part of the most recent portion. For example, the streaming platform may provide a user interactive element, soft switch, actuator, operator, or the like for accepting the user input to retrieve and/or convert a part of the most recent portion of the output stream for sharing on social media or for permanent storage.

The part may be of a default length (e.g., the predetermined time interval or the entire length of the stored most recent portion) or a user-defined length of time, as indicated via any suitable user interactive element, soft switch, actuator, operator, or the like.

At block B1430, the first viewing device120amay convert the at least a part of the stored, most recent portion of the output stream into a video when the trigger event has been detected (B1420: YES). The first viewing device120amay subsequently share the video on social media or for permanent storage. Otherwise, the first viewing device120amay continue to store the most recent portion per block B1410.

FIG. 15is a schematic diagram1500illustrating an example of converting a part of the most recent portion of the output stream according to various embodiments. Referring toFIGS. 1-15, the output stream may include a plurality of segments (e.g., segments O1-O10). Each of the segments may include at least one audio or video frame. At time t1, a most recent portion at t11520may include segments O3-O6. That is assuming, in this non-limiting example, that the predetermined time interval may correspond to 4 segments. At time t2, a most recent portion at t21530may include segments O5-O8. Segments O3-O4may be deleted as they are beyond the predetermined time interval (e.g., 4 segments). Segments O7-O8may be added to the most recent portion at t21530.

In some embodiments, the at least a part of the most recent portion at t21530may be selected by the viewer of the viewing devices120. For example, a first user-selected part1540(at t2) may be the entirety of the most recent portion at t21530(e.g., O5-O8). This may be a default option when the viewer does not specify the length of the part of the most recent portion to be converted. A second user-selected part1550(at t2) may be the latest of the most recent portion at t21530(e.g., O6-O8), provided that the viewer wishes to convert three-segment length of the most recent portion at t21530. A third user-selected part1560(at t2) may be a part of the most recent portion at t21530other than the latest part (e.g., O5-O7), provided that the viewer wishes to convert three-segment length of the most recent portion at t21530. The viewer may, via the input device340of the first viewing device120a, indicate whether to select the first user-selected part1540(or default without any selection), the second user-selected part1550, or the third user-selected part1560, for example, at t2.

FIG. 16is an example of a display screen1600displaying a content sharing feature according to various embodiments. Referring toFIGS. 1-16, the display screen1600may be displayed by the output device330of each of the viewing devices120(e.g., the first viewing device120). The display screen1600may include at least one sharing element1610configured as a user interactive element, soft switch, actuator, operator, or the like, for triggering (at block B1420) the conversion (at block B1430). A time control window1620may allow the viewer to adjust a length of time (of the part of the stored most recent portion) desired to be converted. For example, the time control window1620may include at least one user interactive element, soft switch, actuator, operator, or the like for accepting user input related to whether the entire stored most recent portion, the latest part of the stored most recent portion, or another part other than the latest part of the stored most recent portion is desired to be converted.

FIG. 17is an example of a display screen1700displaying a content sharing feature according to various embodiments. Referring toFIGS. 1-17, the display screen1700may be displayed by the output device330of each of the viewing devices120(e.g., the first viewing device120). The display screen1700may include a social network element1710for sharing the converted video (per block B1430) to the viewer's social network.

FIG. 18is a process flowchart illustrating an interactive streaming method1800according to various embodiments. Referring toFIGS. 1-18, the interactive streaming method1800may be performed by the processor210of the server140according to some embodiments. Initially, the server140may be sending the content of the broadcasting device110to the viewing devices120. At block B1810, the server140may receive a request from the broadcasting device110to output content captured by the viewing devices120as the output stream. The broadcaster may select, via the input device440of the broadcasting device110, to trigger features related to sequentially displaying content from the viewing devices120, as described.

At block B1820, the server140may queue the viewing devices120for displaying the content in the output stream sequentially. In some embodiments, the viewing devices120queued may be devices that are spectating the broadcaster's stream (i.e., receiving media content from the server originating from the broadcasting device110) shortly prior to or concurrent with the server140receiving the request from the broadcasting device110. For example, when the server140receives the request, the server140may obtain a list of all viewing devices120that are receiving the broadcaster's media content from the server140.

The viewing devices120may be queued in any suitable manner. In some embodiments, the viewing devices120may be queued at random. In some embodiments, the viewing devices120may be queued based on the time at which each of the viewing devices120started to receive the content of the broadcasting device to the viewers. That is, the time at which each of the viewing devices120joined the broadcaster's stream. The server140may send an indication of the position in the queue to each of the corresponding viewing devices120for reference.

At block B1830, the server140may receive the content from each of the viewing devices120. In some embodiments, the content may be received in order of the queue positions of the corresponding viewing devices120in the manner described.

At block B1840, the server140may stitch the content from each of the viewing devices120into a same output stream for displaying content in real time in the manner described. The server140may output the stitched content to each of the viewing devices120.

FIG. 19is a process flowchart illustrating an interactive streaming method1900according to various embodiments. Referring toFIGS. 1-19, the interactive streaming method1800may be performed by the processor310of one of the viewing devices120(e.g., the first viewing device120a) according to some embodiments. At block B1910, the first viewing device120amay receive, from the server140, the position in queue to output the content of the first viewing device120a. At block B1920, the first viewing device120amay receive from the server140the stitched real-time content (stitched from the at least one of the viewing devices120other than the first viewing device120a) as output stream.

At block B1930, the first viewing device120amay display the received stitched real-time content with the output device330of the first viewing device120a. At block B1940, the first viewing device120amay send to the server140the content of the first viewing device120abased on the position of the first viewing device120ain queue. That is, the first viewing device120amay send its own content when it is about time that its own content is to be outputted according to the queue position. Thereafter, the first viewing device120amay continue to receive the stitched real-time content from other viewing devices120(if any) whose content has not been outputted yet.

FIG. 20is a schematic diagram2000illustrating an example of a stitching method according to various embodiments. Referring toFIGS. 1-20, the server input2010may be media content received from the viewing devices120, in a manner such as, but not limited to, described with respect to block B1930. For example, media content received from one of the viewing devices120having a first position in queue may be shown as V1. Media content received from another of the viewing devices120having a second position in queue may be shown as V2. Media content received from another of the viewing devices120having a third position in queue may be shown as V3. Media content received from another of the viewing devices120having a fourth position in queue may be shown as V4, and so forth.

The server output2020may correspond to the stitched content. Initially, the media content from the broadcasting device110(e.g., content B) may be distributed to the viewing devices120prior to a first transition point TR1. At the first transition point TR1, a first stitched media content V1′ corresponding to V1may be outputted. At a second transition point TR2, the first stitched media content V1′ may no longer be outputted, and instead, a second stitched media content V2′ corresponding to V2may be outputted. Similarly, at a third transition point TR3, the second stitched media content V2′ may no longer be outputted, and instead, a third stitched media content V3′ corresponding to V3may be outputted. At a fourth transition point TR4, the third stitched media content V3′ may no longer be outputted, and instead, a fourth stitched media content V4′ corresponding to V4may be outputted, and so on. Each of the first to fourth stitched media contents V1′-V4′ may be of a same predetermined interval T of a predetermined length. The predetermined interval T may be, for example, but not limited to, 2 seconds, 3 seconds, 5 seconds, 10 seconds, or the like. Each of the V1-V4may be received slightly before the transitions points (TR1-TR4), to ensure seamless stitching and accounting for local network latency. In some embodiments, T may be set as a default value by the server140. In other embodiments, the server140may receive an indication of T to correspond to a broadcaster-set length of time received from the broadcasting device110.

FIG. 21is an example of a display screen2100displaying an interactive broadcasting interface according to various embodiments. Referring toFIGS. 1-21, the display screen2100may be displayed by the output device330of one of the viewing devices120(e.g., the first viewing device120a). Additionally, the display screen2100may be displayed by the output device430of the broadcasting device110. The display screen2100may include a current user icon2110indicating a current viewing device that is presenting its media content in real time. For example, the current user icon2110may correspond to the output media stream2140. The display screen2100may also include at least subsequent user icons2120a,2120b,2120cthat represent subsequent viewing devices120queued for outputting media content following the viewing device corresponding to the current user icon2110. The current user icon2110may be graphically distinguished from the subsequent user icons2120a,2120b,2120c. The information relates to the current user icon2110and the subsequent user icons2120a,2120b,2120cmay be received from the server140.

The display screen2100may also include a first timer2130counting down to a time that media content from the first viewing device120ais to be outputted. Given that the predetermined interval T, the position of the first viewing device120a, and a position of the current viewing device may be known, the time shown on the first timer2130may accordingly be determined. In alternative embodiments, synchronized time may be pushed from the server140to the first viewing device120a. In other embodiments, instead of or in addition to the first timer2130being displayed, the display screen2100may include the position in queue associated with the first viewing device120a.

FIG. 22is an example of a display screen2200displaying an interactive broadcasting interface according to various embodiments. Referring toFIGS. 1-23, the display screen2200may be displayed by the output device330of one of the viewing devices120(e.g., the first viewing device120a). Additionally, the display screen2200may be displayed by the output device430of the broadcasting device110. In particular embodiments, the display screen2200may be displayed by the first viewing device120awhen first viewing device120ais allowed to send its media content to the server140to be pushed to the viewing devices120. For example, a current user icon2210may correspond to the first viewing device120a. Subsequent user icons2220a,2220b,2220cmay be displayed in the display screen2200to indicate identities of the viewing devices120that have later positions in the queue. An output media stream2240may correspond to data captured by the input device340of the first viewing device120a. A notification window2230may be displayed to notify the first viewer that it is the first viewer's turn to output media content. A second timer2250may indicate to the first viewer an amount of time left in the predetermined time interval T.

Accordingly, embodiments described herein provide a standards-based live streaming with various enhancements. The embodiments benefit from mobile-first and mobile-centric approaches for data reliability and offline performance. Content streams from the broadcaster and the viewers alike may be stitched together for seamless output.

Various embodiments described above with reference toFIGS. 1-22include the performance of various processes or tasks. In various embodiments, such processes or tasks may be performed through the execution of computer code read from computer-readable storage media. For example, in various embodiments, one or more computer-readable storage mediums store one or more computer programs that, when executed by a processor cause the processor to perform processes or tasks as described with respect to the processor in the above embodiments. Also, in various embodiments, one or more computer-readable storage mediums store one or more computer programs that, when executed by a device, cause the computer to perform processes or tasks as described with respect to the devices mentioned in the above embodiments. In various embodiments, one or more computer-readable storage mediums store one or more computer programs that, when executed by a database, cause the database to perform processes or tasks as described with respect to the database in the above embodiments.

Thus, embodiments include program products including computer-readable or machine-readable media for carrying or having computer or machine executable instructions or data structures stored thereon. Such computer-readable storage media can be any available media that can be accessed, for example, by a general purpose or special purpose computer or other machine with a processor. By way of example, such computer-readable storage media can include semiconductor memory, flash memory, hard disks, optical disks such as compact disks (CDs) or digital versatile disks (DVDs), magnetic storage, random access memory (RAM), read only memory (ROM), and/or the like. Combinations of those types of memory are also included within the scope of computer-readable storage media. Computer-executable program code may include, for example, instructions and data which cause a computer or processing machine to perform certain functions, calculations, actions, or the like.

The embodiments disclosed herein are to be considered in all respects as illustrative, and not restrictive. The present disclosure is in no way limited to the embodiments described above. Various modifications and changes may be made to the embodiments without departing from the spirit and scope of the disclosure. Various modifications and changes that come within the meaning and range of equivalency of the claims are intended to be within the scope of the disclosure.