When using VirtualCamera.cs in the latest version of the asset (3.0.5) on iOS 11, in each recording around 40 frames are not recorded.
If videoConverter.ConvertFrameBufferToVideo() is called 180 times during a recording, only 140 frames are output in the final video. In previous versions of your plugin (3.0.0), if that function is called 180 times, 179 frames are output in the final video.
These frames appear to be missing from the front of the recording. How can I make sure that the final output video contains as many frames as are called using videoConverter.ConvertFrameBufferToVideo?
Since while recording the screen, the FPS sometimes drop down, to make sure converting the video with the correct FPS, we use the first 40 frames to determine the real FPS.
If you call ConvertFramrBufferToVideo manually, you can call it with additional 40 times.
Thank you for the prompt response, I think I have a good sense of what is going on.
In my opinion this is the wrong way to handle this. The framerate that the Unity developer sets in the Unity application should be the framerate of the output video. Every frame that the Unity application sends to the plugin should be in the output video.
The plugin definitely should not be changing or estimating the framerate behind the scenes.
The plugin absolutely should not be dropping any frames the Unity application sends to the video encoder.
I understand that if there are dropped frames the video will not playback in realtime. But it should not be the Plugin developerās job to handle this. It is the Unity developerās job to make sure that the application runs without dropped frames while recording video.
Even with variable framerate estimation, itās a big assumption that you would be able to estimate the applicationās overall performance in just 40 frames. The current functionality is unreliable and too unpredictable.
For the time being I can modify the source code to get the plugin working. Please consider modifying this behavior, or making an alternate version of the virtual camera that takes an āabsolute framerateā opposed to estimating a ārelative framerateā, and records every frame the application requests.
Hello, Iāve recently purchased your plugin. Iām testing videos recorded with a Samsung Galaxy S5, and Iām using OpenGLSE3 for the graphics api, but the resulting video is just coming out as a black screen. Do you have any advice on how to troubleshoot this? If I force OpenGLSE2 it works but the performance in my app is very slow
Hi, i have an issue with demo scene āVirtualCameraExampleā.
Iām using the Pixel phone and Unity version is 2017.2.0f3.
When I run the demo scene and touch the āBeginā button, recording seems to work.
But after about 10~15 seconds the app dies.
Can you check on this?
Thank you.
Finally, we have completed OpenGL ES 3.0 support for iOS and submitted it.
This version, 4.0.0, fix OpenGL ES 3.0 bugs on Android devices, especially on Samsung devices.
We appreciate whom use our plugin and give us many feedbacks to improve this plugin.
Hey. We bought your plugin. However, for androids, he is not a worker. On the test scene āVirtualCameraExampleā on the device, we get errors.
E/Images2VideoJNI: after glReadPixels() glError:GL_INVALID_FRAMEBUFFER_OPERATION
As a result, the video is just black. How can I correct this error.
Hello Jarold,
Could you check the order of the graphic apis in Player Settings>Other Settings>Graphics APIs?
You can uncheck Auto Graphics API to see the order.