目录
配置文件
- 可以在此设置像素流鼠标是否被浏览器同步、默认鼠标样式、文本框鼠标样式、隐藏鼠标样式。
- 按照目前项目情况,我们应当是隐藏鼠标的。
IPixelStreamingModule类
继承IInputDeviceModule,像素流模块的基类,定义了一些虚函数。
/**
* Returns a reference to the input device. The lifetime of this reference
* is that of the underlying shared pointer.
* 返回对输入设备的引用。
* @return A reference to the input device.
*/
virtual class FInputDevice& GetInputDevice() = 0;
/**
* Add any player config JSON to the given object which relates to
* configuring the input system for the pixel streaming on the browser.
* 添加用户配置信息
* @param JsonObject - The JSON object to add fields to.
*/
virtual void AddPlayerConfig(TSharedRef<class FJsonObject>& JsonObject) = 0;
/**
* Send a data response back to the browser where we are sending video. This
* could be used as a response to a UI interaction, for example.
* 发送一个数据响应回浏览器我们在哪里发送视频。 例如,这可以用作对UI交互的响应。
* @param Descriptor - A generic descriptor string.
*/
virtual void SendResponse(const FString& Descriptor) = 0;
/**
* Send a data command back to the browser where we are sending video. This
* is different to a response as a command is low-level and coming from UE4
* rather than the pixel streamed application.
* 发送一个数据响应回浏览器我们在哪里发送视频。这与上面的响应不同,因为命令是低级的,来自ue4而不是像素流应用程序。
* @param Descriptor - A generic descriptor string.
*/
virtual void SendCommand(const FString& Descriptor) = 0;
/**
* Freeze Pixel Streaming.
* 冻结像素流帧,例如如果浏览器端过长时间无响应则可以冻结像素流程序,并发送最后一帧给浏览器以减少性能负载。
* @param Texture - The freeze frame to display. If null then the back buffer is captured.
*/
virtual void FreezeFrame(UTexture2D* Texture) = 0;
/**
* Unfreeze Pixel Streaming.
* 同上,解冻。
*/
virtual void UnfreezeFrame() = 0;
PixelStreamingModule类
1. 像素流模块,继承与上述基类,我们先来看这个类有哪些东西。
- 先对上述的虚函数都进行分别实现
/** IModuleInterface implementation */
void StartupModule() override;
void ShutdownModule() override;
TSharedPtr<class IInputDevice> CreateInputDevice(const TSharedRef<FGenericApplicationMessageHandler>& InMessageHandler) override;
TSharedPtr<IMediaPlayer, ESPMode::ThreadSafe> CreatePlayer(IMediaEventSink& EventSink) override;
/** IPixelStreamingModule implementation */
FInputDevice& GetInputDevice() override;
void AddPlayerConfig(TSharedRef<FJsonObject>& JsonObject) override;
void SendResponse(const FString& Descriptor) override;
void SendCommand(const FString& Descriptor) override;
void FreezeFrame(UTexture2D* Texture) override;
void UnfreezeFrame() override;
- 持有FStreamer唯一指针,持有平台对象InpitDevice共享指针,持有所有UPixelStreamerInputComponent*的引用
private