A system comprising: a broadcasting agent stored in memory and executable by a processor to broadcast an application data stream generated by an application from a broadcasting device that is locally-executing the data stream to a spectating device; an input driver stored in memory and executable by a processor to convey user inputs received from a locally-present controller to an application programming interface of the application to affect first control actions to broadcast content within the application data stream; and a virtual input controller stored in memory and executable by the processor to: receive a request from the spectating device for remote participation in the application data stream; translate input data received from the spectating device from a protocol incompatible with the input driver to a protocol compatible with the input driver; request a broadcast application identifier for a currently-broadcasting application from the broadcasting agent; establish bidirectional communication between the input driver and the spectating device using the broadcast application identifier obtained from the broadcasting agent; and provide the translated input data to the input driver in association with the broadcast application identifier along the established bidirectional communication to affect second control actions to broadcast content within the broadcast application data stream such that the input data is received, translated and provided to the input driver without executing a secondary instance of the application. a broadcasting agent stored in memory and executable by a processor to broadcast an application data stream generated by an application from a broadcasting device that is locally-executing the data stream to a spectating device; an input driver stored in memory and executable by a processor to convey user inputs received from a locally-present controller to an application programming interface of the application to affect first control actions to broadcast content within the application data stream; and a virtual input controller stored in memory and executable by the processor to: receive a request from the spectating device for remote participation in the application data stream; translate input data received from the spectating device from a protocol incompatible with the input driver to a protocol compatible with the input driver; request a broadcast application identifier for a currently-broadcasting application from the broadcasting agent; establish bidirectional communication between the input driver and the spectating device using the broadcast application identifier obtained from the broadcasting agent; and provide the translated input data to the input driver in association with the broadcast application identifier along the established bidirectional communication to affect second control actions to broadcast content within the broadcast application data stream such that the input data is received, translated and provided to the input driver without executing a secondary instance of the application. receive a request from the spectating device for remote participation in the application data stream; translate input data received from the spectating device from a protocol incompatible with the input driver to a protocol compatible with the input driver; request a broadcast application identifier for a currently-broadcasting application from the broadcasting agent; establish bidirectional communication between the input driver and the spectating device using the broadcast application identifier obtained from the broadcasting agent; and provide the translated input data to the input driver in association with the broadcast application identifier along the established bidirectional communication to affect second control actions to broadcast content within the broadcast application data stream such that the input data is received, translated and provided to the input driver without executing a secondary instance of the application.