If a player is completely redeveloped based on Unity3d, the cost is high and the cycle is long, so it is not suitable for rapid product release. The best way is to integrate the mature and stable player on the existing Native platform.

Feasibility analysis of Navtive Player integration:

Android: Unity3d can call the Android Java interface, there are many examples of this, search will find a lot of.

IOS: Unity3d can call C interface, C#–call–>C– call– object-c. There are plenty of examples.

Windows: Unity3d call C# needless to say, native support, C# call C DLL, you can use P/INVOKE technology, or c interface into COM components can also be.

To sum up, Unity3d has no problem interacting with the three platforms.

All three platforms already have mature, stable, low latency RTMP/RTSP player SDKS, as long as these existing player SDKS can spit out image data and let Unity3d draw.

Implementation steps:

1.Native player SDK supports one of the uncompressed image formats such as RGB/YUV420/NV12.

2.Unity3D create corresponding RGB/YUV420 Shader.

3.Unity3D can get image data from each platform to fill texture.

It was tried and completely feasible with very low latency (milliseconds).