New To The Forum? Click Here To Read The How To Guide. -- Developers Click Here.

Movie Playing in UnitySDK

smxsmx Posts: 37
edited October 2015 in Mobile Development
In the sample scene "MoviePlayer_Sample" offered by Oculus in the UnitySDK:

I cannot play a movie. Although I changed
mediaPlayer.Call( "setDataSource", "/sdcard/oculus/Movies/Trailers/Night_of_the_living_Dead.mp4" );
to an existing movie it doesn't play the movie.

Also it says: "NOTE: The resolution of the movie texture is hard coded to 960x540 in MediaSurface.cpp."

How can I change that to 4096x2048 video @ 30 FPS or a
2048x2048 video @ 60 FPS as hinted at in the docs.


Thanks!
«1

Comments

  • HomerS66HomerS66 Posts: 1,365
    Brain Burst
    smx wrote:
    How can I change that to 4096x2048 video @ 30 FPS or a
    2048x2048 video @ 60 FPS as hinted at in the docs.

    I think those settings are only ment for 360 videos.
  • smxsmx Posts: 37
    HomerS66 wrote:
    smx wrote:
    How can I change that to 4096x2048 video @ 30 FPS or a
    2048x2048 video @ 60 FPS as hinted at in the docs.

    I think those settings are only ment for 360 videos.

    Yeah, I want to build my own 360 video player.
  • smx wrote:
    Also it says: "NOTE: The resolution of the movie texture is hard coded to 960x540 in MediaSurface.cpp."

    How can I change that to 4096x2048 video @ 30 FPS or a
    2048x2048 video @ 60 FPS as hinted at in the docs.


    Thanks!

    I think this is done by going into the sdk and modifying MediaSurface.cpp (sdk\VRLib\jni\Integrations\Unity\MediaSurface.cpp). There are two values width and height on line 171 that are hard coded as 960 and 540. Changing these values failed to solve my resolution problems in unity 360 video, however. Let me know if you are able to get anything.
  • smxsmx Posts: 37
    Regarding my first question: SOLVED

    I needed to change the path of the movie to:
    "/storage/extSdCard/Oculus/Movies/Trailers/Interstellar.mp4"
    

    However, concerning the second question,
    eoniantech wrote:
    smx wrote:
    Also it says: "NOTE: The resolution of the movie texture is hard coded to 960x540 in MediaSurface.cpp."

    How can I change that to 4096x2048 video @ 30 FPS or a
    2048x2048 video @ 60 FPS as hinted at in the docs.


    Thanks!

    I think this is done by going into the sdk and modifying MediaSurface.cpp (sdk\VRLib\jni\Integrations\Unity\MediaSurface.cpp). There are two values width and height on line 171 that are hard coded as 960 and 540. Changing these values failed to solve my resolution problems in unity 360 video, however. Let me know if you are able to get anything.

    I suppose I will need to recoompile the Oculus Plugin.
  • Have you had any success in changing the resolution? If so what are you doing? I've tried re-importing the unity package after setting the dimensions to 2048x2048 with no perceived effect on quality.
  • smxsmx Posts: 37
    I haven't tried, yet. But others seemed to have your experience.

    I would really like to have an official answer on that. Especially because watching movies on the GearVR is such a worthwhile experience.
  • HirdannenHirdannen Posts: 64
    Hiro Protagonist
    Changing the hard-coded values in the vrlib should work, it worked for me. Are you making a native app or a unity app ? If so, what did you replace in the Unity project ?
  • Which version of the Oculus Mobile SDK are you using?

    In my version (0.4.1, 2015/01/06) of sdk\VRLib\jni\Integrations\Unity\MediaSurface.cpp, I see the code:
    // FIXME: no way to get texture dimensions even in ES 3.0???
    int width = 960;
    int height = 540;
    if ( width != TexIdWidth || height != TexIdHeight )
    {
    	LOG( "New surface size: %ix%i", width, height );
    
    	TexIdWidth = width;
    	TexIdHeight = height;
    		
    	...
    }
    
    Which, I believe, coerces (stretches) the movie to be 960x540, which is a 16:9 aspect ratio.

    MoviePlayerSample.cs works for me with a 1280 x 720 mp4 (also 16:9) and looks good. I didn't modify MediaSurface.cpp.
  • One thing I did notice, is that you have absolutely no control over the movie volume. Even after destroying all AudioListeners in the scene, the movie plays at full volume, meaning that the movie player goes around Unity to do the audio.
  • Yeah, I want to build my own 360 video player.

    So would these steps work to make a 360 video player in Unity Free? (Still waiting for my Gear VR to test)

    -change media dimensions in MediaSurface.cpp
    -create a sphere, reverse normals and put camera prefab in the scene
    -apply the movieplayersample.cs script and change video location
  • HirdannenHirdannen Posts: 64
    Hiro Protagonist
    Yeah, I want to build my own 360 video player.

    So would these steps work to make a 360 video player in Unity Free? (Still waiting for my Gear VR to test)

    -change media dimensions in MediaSurface.cpp
    -create a sphere, reverse normals and put camera prefab in the scene
    -apply the movieplayersample.cs script and change video location

    Yes it would. But you also need to adjust UVs on the video you want to stream, if you have stereo.
    For example, given a 3840x1440 stereo video, you would actually need 2 meshes, each one mapped to half the video.
    You can test UV mapping quite easily by using a half red, half green 3840x1440 texture on the spheres.

    Also be careful from where you want to play the video. From SDcard, no problem. From APK, it's a whole different thing.

    Note that MediaPlayer works, of course, only on the phone, since it's a java object. You can't test it on PC
  • Anyone experience flickering in right eye but smooth motion in the left? I updated MediaSurface.cpp and recompiled plugin using NDK - the left eye is playing perfectly and the right eye flickers when I move my head. Movie I was testing is 3840x1920.
  • HirdannenHirdannen Posts: 64
    Hiro Protagonist
    buildmedia wrote:
    Anyone experience flickering in right eye but smooth motion in the left? I updated MediaSurface.cpp and recompiled plugin using NDK - the left eye is playing perfectly and the right eye flickers when I move my head. Movie I was testing is 3840x1920.

    Hmm, weird. Maybe check right eye sphere's UVs and verify that it can only be seen by one eye at the time..
  • koel2009koel2009 Posts: 4
    NerveGear
    Hey Guys,
    I'm also playing around with video in unity for the Gear.
    I want to change the video resolution, to do that from what i understand, I need to change the hard coded res in MediaSurface.cpp, which I did.
    Now, again from what I understand, I need to recompile the VRLib.jar and re-import it into my unity project.

    My question is how do I recompile VRLib.jar? I think I need to use the build.sh file, but how do I do that?
    can anyone please take me through the steps?

    many thanks
  • RVianaRViana Posts: 5
    koel2009 wrote:
    Hey Guys,
    I'm also playing around with video in unity for the Gear.
    I want to change the video resolution, to do that from what i understand, I need to change the hard coded res in MediaSurface.cpp, which I did.
    Now, again from what I understand, I need to recompile the VRLib.jar and re-import it into my unity project.

    My question is how do I recompile VRLib.jar? I think I need to use the build.sh file, but how do I do that?
    can anyone please take me through the steps?

    many thanks

    Hi!

    Same here, trying to recompile VRLib.jar too. to use build.sh u need to use some Terminal on a Mac/Linux,
    on windows maybe Powershell. But you got to have the Android development tools required for Native Android development.
    See SDK docs for the environment setup. eclipse+ndk+adk


    i can build the libOculus.so plugin, but as for VRLib.jar no clue. does anyone been successful at it?

    thanks in advance
    Ricardo
  • HirdannenHirdannen Posts: 64
    Hiro Protagonist
    Both should be done at the same time while recompiling the Native VRLib. It worked when I had to do it in September 2014
  • RVianaRViana Posts: 5
    I get libJavaVr.so and libOculusPlugin.so

    but no vrlib.jar ! :(
    maybe it doesn't eve n need it don't know.
    Unity player crashes at splash screen.
    and get :

    E/Unity ( 2715): Unable to find OculusInitPlugin

    here is what the terminal spits out on build.sh
    ========================== Update VRLib Project ===========================
    Updated project.properties
    Updated local.properties
    Updated file ./proguard-project.txt
    Updated and renamed default.properties to project.properties
    Updated local.properties
    No project name specified, using project folder name 'bin'.
    If you wish to change it, edit the first line of build.xml.
    Added file ./bin/build.xml
    Added file ./bin/proguard-project.txt
    ========================== Build VRLib release  ===========================
    Android NDK: WARNING: Ignoring unknown import directory: jni/../../3rdParty/libjpeg-turbo    
    Android NDK: WARNING: Ignoring unknown import directory: jni/../../3rdParty/breakpad/android    
    [armeabi-v7a] Install        : libJavaVr.so => libs/armeabi-v7a/libJavaVr.so
    [armeabi-v7a] Install        : libOculusPlugin.so => libs/armeabi-v7a/libOculusPlugin.so
    
  • leftbigtoeleftbigtoe Posts: 46
    Brain Burst
    hey guys, running in the same issue, no VRLib.jar file is generated.
    Was anybody successful in solving this problem?
  • HirdannenHirdannen Posts: 64
    Hiro Protagonist
    Note: actually since you change only MediaSurface.cpp, you only need the .so file.

    As for compiling the VRlib, I managed it through Eclipse a while ago and it still works. I'm no expert on Android development and can't explain much on how to correctly compile it (it wasn't easy for me)
  • leftbigtoeleftbigtoe Posts: 46
    Brain Burst
    sweet, got it running. had to disable the maven plugin (this thing was actually quite useful configuring to configure NDK, SDK and eclipse http://www.gearvrf.org/bin/view/GearVRfDeveloperGuide/GearVRfDevGuide200Start

    ran into the next problem though: movie is playing fine on a Note 4 running Android 5.0.1 but nothing happens on a S6 with Android 5.0.2 (both built with Unity 5.0.2 and the Oculus SDK 0.5.1). Scene starts up, one sees the initial texture but the movie never starts playing.
    Checked the adb logcat output for Unity and the MediaPlayer couldn't find any error messages, the only difference between the Note 4 where it runs and S6 where it doesn't was this mysterious line saying "No OnVrApiEvent delegate set!" from the OVRManager - not sure if that has anything to do with that.

    If I had to guess I'd say it's either some weird difference between the Android versions or some weird path issue...although you would expect some error messages in that case. Has anybody experienced something similar?
  • HirdannenHirdannen Posts: 64
    Hiro Protagonist
    That's weird. Did you use the S6 with other GearVR apps ?

    Do you have all the traditional MediaPlayer messages (when it loads the media, etc...) ?

    It might be indeed a path problem, since things like /sdcard/ or /extSdcard/ can change between phones.

    The video does not play.. But do you see the app launching ? Are you in the app ? If yes, then my guess is that it must be definitely a path problem.
  • leftbigtoeleftbigtoe Posts: 46
    Brain Burst
    S6 works fine for everything else and I indeed get in the app, only the movie does not start.

    I get all the normal MediaPlayer messages EXCEPT this one (that I get on the Note4):
    E/MediaPlayer(23595): setDataSource replace URI : /storage/extSdCard/
    

    Trying to use a FileDescriptor instead of a path with your code from the other thread (https://forums.oculus.com/viewtopic.php?t=21265), no luck so far though. Is there an easy way to get an file descriptor from any path and also check if it is readable? Still new to interfacing with the Java code directly...

    UPDATE: so I checked some stuff. I can definitely find the file, the following code within awake returns true:
    string path = "/storage/sdcard0/Oculus/360Videos/test_video.mp4";
    bool fileTest = new AndroidJavaObject ("java/io/File", path).Call<bool>("exists");
    Debug.Log ((fileTest ? "found " : "could not find ") + path);
    

    I use the following method to get a fileDescriptor:
    	public static AndroidJavaObject fileDescriptorFromPath(string path){
    		Debug.Log ("opening file descriptor");
    		AndroidJavaObject fd = new AndroidJavaObject ("java/io/FileInputStream", (new AndroidJavaObject ("java/io/File", path))
    		                                              ).Call<AndroidJavaObject>("getFD");
    			Debug.Log ("fd toString output: " + fd.Call<String> ("toString"));
    			Debug.Log ("fd is: " + (fd.Call<bool> ("valid") ? "valid" : "invalid"));
    		if (fd != null) {
    			Debug.Log ("successfully created a file descriptor"); 
    			return fd;
    		} else {
    			Debug.Log ("something went wrong, fileDescriptor is null");
    			return null;
    		}
    	}
    

    I pass this file descriptor to the SetDataSource method, using the code from the sample provided by the SDK:
    	AndroidJavaObject StartVideoPlayerOnTextureId(int textureId)
    	{
    		Debug.Log("SetUpVideoPlayer ");
    
    		IntPtr  androidSurface = OVR_Media_Surface(textureId);
    
    		AndroidJavaObject mediaPlayer = new AndroidJavaObject("android/media/MediaPlayer");
    
    		// Can't use AndroidJavaObject.Call() with a jobject, must use low level interface
    		//mediaPlayer.Call("setSurface", androidSurface);
    		IntPtr setSurfaceMethodId = AndroidJNI.GetMethodID(mediaPlayer.GetRawClass(),"setSurface","(Landroid/view/Surface;)V");
    		jvalue[] parms = new jvalue[1];
    		parms[0] = new jvalue();
    		parms[0].l = androidSurface;
    		AndroidJNI.CallObjectMethod(mediaPlayer.GetRawObject(), setSurfaceMethodId, parms);
    
    		//############# set movie path here ####################
    		Debug.Log("movie player trying to open file...");
    
    		mediaPlayer.Call("setDataSource", fileDescriptorFromPath("/storage/sdcard0/Oculus/360Videos/test_video.mp4"));
    
    		mediaPlayer.Call("prepare");
    		mediaPlayer.Call("setLooping", true);
    		Debug.Log("starting player");
    		mediaPlayer.Call("start");
    		Debug.Log("called start, movie should run");
    
    		return mediaPlayer;
    	}
    

    and just for the sake of completeness, the logcat output:
    --------- beginning of system
    D/Unity   (10109): GL_EXT_debug_marker GL_ARM_rgba8 GL_ARM_mali_shader_binary GL_OES_depth24 GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_EXT_read_format_bgra GL_OES_compressed_paletted_texture GL_OES_compressed_ETC1_RGB8_texture GL_OES_standard_derivatives GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_sync GL_OES_texture_npot GL_OES_vertex_half_float GL_OES_required_internalformat GL_OES_vertex_array_object GL_OES_mapbuffer GL_EXT_texture_format_BGRA8888 GL_EXT_texture_rg GL_EXT_texture_type_2_10_10_10_REV GL_OES_fbo_render_mipmap GL_OES_element_index_uint GL_EXT_shadow_samplers GL_OES_texture_compression_astc GL_KHR_texture_compression_astc_ldr GL_KHR_texture_compression_astc_hdr GL_KHR_debug GL_EXT_occlusion_query_boolean GL_EXT_disjoint_timer_query GL_EXT_blend_minmax GL_EXT_discard_framebuffer GL_OES_get_program_binary GL_OES_texture_3D GL_EXT_texture_storage GL_EXT_multisampled_render_to_texture GL_OES_surfaceless_context GL_OES_texture_stencil8 GL_EXT_shader
    D/Unity   (10109): _pixel_local_storage GL_ARM_shader_framebuffer_fetch GL_ARM_shader_framebuffer_fetch_depth_stencil GL_ARM_mali_program_binary GL_EXT_sRGB GL_EXT_sRGB_write_control GL_EXT_texture_sRGB_decode GL_KHR_blend_equation_advanced GL_OES_texture_storage_multisample_2d_array GL_OES_shader_image_atomic 
    I/Unity   (10109): Unity Version: 5.0.2f1
    I/Unity   (10109):  
    I/Unity   (10109): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebug.gen.cpp Line: 56)
    I/Unity   (10109): 
    I/Unity   (10109): Inhibiting Entitlement Check!
    I/Unity   (10109):  
    I/Unity   (10109): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebug.gen.cpp Line: 56)
    I/Unity   (10109): 
    I/Unity   (10109): Creating volume controller...
    I/Unity   (10109):  
    I/Unity   (10109): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebug.gen.cpp Line: 56)
    I/Unity   (10109): 
    I/Unity   (10109): Awake
    I/Unity   (10109):  
    I/Unity   (10109): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebug.gen.cpp Line: 56)
    I/Unity   (10109): 
    I/Unity   (10109): external dir path: /storage/emulated/0
    I/Unity   (10109):  
    I/Unity   (10109): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebug.gen.cpp Line: 56)
    I/Unity   (10109): 
    I/Unity   (10109): found /storage/sdcard0/Oculus/360Videos/video_test.mp4
    I/Unity   (10109):  
    I/Unity   (10109): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebug.gen.cpp Line: 56)
    I/Unity   (10109): 
    I/Unity   (10109): Movie Texture id: 22
    I/Unity   (10109):  
    I/Unity   (10109): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebug.gen.cpp Line: 56)
    I/Unity   (10109): 
    I/Unity   (10109): OnApplicationFocus() True
    I/Unity   (10109):  
    I/Unity   (10109): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebug.gen.cpp Line: 56)
    I/Unity   (10109): 
    I/Unity   (10109): SetUpVideoPlayer 
    I/Unity   (10109):  
    I/Unity   (10109): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebug.gen.cpp Line: 56)
    I/Unity   (10109): 
    I/MediaPlayer(10109): Need to enable context aware info
    I/Unity   (10109): movie player trying to open file...
    I/Unity   (10109):  
    I/Unity   (10109): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebug.gen.cpp Line: 56)
    I/Unity   (10109): 
    I/Unity   (10109): opening file descriptor
    I/Unity   (10109):  
    I/Unity   (10109): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebug.gen.cpp Line: 56)
    I/Unity   (10109): 
    I/Unity   (10109): fd toString output: FileDescriptor[61]
    I/Unity   (10109):  
    I/Unity   (10109): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebug.gen.cpp Line: 56)
    I/Unity   (10109): 
    I/Unity   (10109): fd is: valid
    I/Unity   (10109):  
    I/Unity   (10109): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebug.gen.cpp Line: 56)
    I/Unity   (10109): 
    I/Unity   (10109): successfully created a file descriptor
    I/Unity   (10109):  
    I/Unity   (10109): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebug.gen.cpp Line: 56)
    I/Unity   (10109): 
    E/MediaPlayer(10109): Should have subtitle controller already set
    E/MediaPlayer(10109): Should have subtitle controller already set
    I/Unity   (10109): starting player
    I/Unity   (10109):  
    I/Unity   (10109): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebug.gen.cpp Line: 56)
    I/Unity   (10109): 
    W/MediaPlayer(10109): this is IMEDIA_PLAYER_VIDEO_EXIST
    I/MediaPlayer(10109): sendBroadcast android.media.IMediaPlayer.videoexist
    I/Unity   (10109): called start, movie should run
    I/Unity   (10109):  
    I/Unity   (10109): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebug.gen.cpp Line: 56)
    I/Unity   (10109): 
    I/MediaPlayer(10109): send context aware event
    I/MediaPlayer(10109): sendBroadcast CONTEXT_AWARE_MUSIC_INFO - type(start) - id (40)
    W/MediaPlayer(10109): this is IMEDIA_PLAYER_VIDEO_EXIST
    I/MediaPlayer(10109): sendBroadcast android.media.IMediaPlayer.videoexist
    W/MediaPlayer(10109): info/warning (3, 0)
    I/Unity   (10109): OnApplicationPause() True
    I/Unity   (10109):  
    I/Unity   (10109): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebug.gen.cpp Line: 56)
    I/Unity   (10109): 
    I/Unity   (10109): OnApplicationPause: True
    I/Unity   (10109):  
    I/Unity   (10109): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebug.gen.cpp Line: 56)
    I/Unity   (10109): 
    I/MediaPlayer(10109): sendBroadcast CONTEXT_AWARE_MUSIC_INFO - type(pause) - id(40)
    I/Unity   (10109): OnApplicationFocus() False
    I/Unity   (10109):  
    I/Unity   (10109): (Filename: ./artifacts/generated/common/runtime/UnityEngineDebug.gen.cpp Line: 56)
    I/Unity   (10109): 
    W/MediaPlayer( 3877): info/warning (973, 0)
    E/MediaPlayer( 3877): Should have subtitle controller already set
    I/MediaPlayer( 3877): sendBroadcast CONTEXT_AWARE_MUSIC_INFO - type(release) - id(39)
    E/MediaPlayer( 3877): Should have subtitle controller already set
    I/MediaPlayer( 3877): send context aware event
    I/MediaPlayer( 3877): sendBroadcast CONTEXT_AWARE_MUSIC_INFO - type(start) - id (41)
    I/MediaPlayer( 3877): sendBroadcast CONTEXT_AWARE_MUSIC_INFO - type(complete) - id(41)
    

    any ideas? this is driving me crazy...
  • cblesercbleser Posts: 1
    My Application crashes in the sample scene "MoviePlayer_Sample" offered by Oculus in the UnitySDK:

    After loading i become a message and the Sample is closing. The only diference to the previus posts is, in logcat i have
    the message - E/Unity (12569): Unable to find OculusInitPlugin -

    Has anybody a idea? i am trying to solve the issue since 8h.
  • HirdannenHirdannen Posts: 64
    Hiro Protagonist
    I don't think you need a filedescriptor towards your desired file as long as you're not targeting a file inside the APK. Moreover, it is not the same " setDataSource" function than the one using a path. In the path, you mentioned, I show how to retrieve the "setDataSource" function for filedescriptors.

    Have you build yourself any other GearVR app on the S6 ? Do you have the signature file ? (jsut asking, we never know)
  • leftbigtoeleftbigtoe Posts: 46
    Brain Burst
    I managed to finally solved the issue - the fix being something quite unexpected:
    I had the texture compression settings on "Don't override" and as soon as I set them to GLES 3.0 the whole thing started working.

    really weird since the scene itself started up, it was just the movie that was not playing before. surprised that a texture compression setting could fix that. SDK vodoo I guess...
  • HirdannenHirdannen Posts: 64
    Hiro Protagonist
    Ah... Saw some other posts talking about problems with GLES & S6...

    Good to keep that in mind, thanks for going through all the trouble for the rest of us ;)
  • TNTantoineTNTantoine Posts: 27
    Hey everyone !

    I downloaded the latest sdk (0.6.0), and I have troubles getting decent 360 video quality (even at 4k) with the MoviePlayerSample.cs script in Unity.

    As suggested in the .cs file and in your previous posts, I searched for the MediaSurface.cpp file in the sdk, but couldn't find it in the 0.6.0 revision.

    Has the file name and/or path changed ?
  • TNTantoine wrote:
    Hey everyone !

    I downloaded the latest sdk (0.6.0), and I have troubles getting decent 360 video quality (even at 4k) with the MoviePlayerSample.cs script in Unity.

    As suggested in the .cs file and in your previous posts, I searched for the MediaSurface.cpp file in the sdk, but couldn't find it in the 0.6.0 revision.

    Has the file name and/or path changed ?

    Same problem;(

    Does any of you have the answer?
  • gconvergengconvergen Posts: 44
    Brain Burst
    I think it's been moved to the VrApi which as of 0.6.0:
    VrApi source is no longer included with the SDK.

    I do hope I'm wrong!
  • TNTantoineTNTantoine Posts: 27
    gconvergen wrote:
    I think it's been moved to the VrApi which as of 0.6.0:
    VrApi source is no longer included with the SDK.

    I do hope I'm wrong!

    Well, that's unfortunate. :(
    Just had a look at the files, and there's indeed no source for VrApi.

    This solution is the only "free" way to play 360 videos correctly in the gear VR at adequate framerate.

    Is Oculus going to provide a way to change the resolution setting inside Unity ?
«1
Sign In or Register to comment.