360 Video playback in normal play mode staggering in landscape view on iOS

  • Hello everyone,

    I have a cordova 9 iOS app which plays 360 videos with Krpano WebVR player.
    Everything plays nice except in normal player mode if I turn the device to landscape the whole playback start's to stagger.
    Switching to stereo becomes fluent or turning the device back to portrait also completely fluent.

    If somebody knows a solution I would much appreciate!

    Thank you.

    Edited 2 times, last by stephnx (May 18, 2020 at 3:21 PM).

  • UPDATE
    krpano at version 1.20.6
    So after a few hours I found the cause of the problem but no solution to it:
    The lags are coming from the videointerface.xml skin, but only if the video time is updating, so if I call the "skin_video_setup()" method (see bellow).
    I'm using the bellow code for about 5 years now and worked just fine (except that I was using the old skin 1.18 where there were 2 different methods to initialize the playback skin), but if anybody notices a problem with the bellow code please let me know.

    The application is generating an xml file on the phone and initializes as follows:

    <krpano>
    <include url="%SWFPATH%/plugins/webvr.xml" />
    <plugin name="WebVR" mobilevr_fake_support="true" mobilevr_wakelock="false"/>
    <layer name="webvr_button" ondown="video_auto_start();" />
    <control mousetype="drag2d" touchzoom="true" zoomoutcursor="true"/>
    <view fovtype="VFOV" fov="90" fovmin="40" fovmax="150" />
    <plugin name="video" keep="true" url.html5="%SWFPATH%/plugins/videoplayer.js" videourl.no-ios="LOCAL FILE NAME HERE" videourl.ios="LOCAL FILE NAME HERE" loop="true" pausedonstart="true" visible="false" onvideoready="loadscene(video_scene, null, MERGE|KEEPVIEW|KEEPMOVING, BLEND(1));"/>
    <events name="video_events" devices="mobile.or.tablet" keep="true" onmousedown="video_auto_start();" onremovepano="if(xml.scene != video_scene, plugin[video].seek(0); plugin[video].pause(); );"/>
    <action name="video_auto_start">if(video_auto_start !== true,if(plugin[video].ispaused,plugin[video].play();delayedcall(0.1, plugin[video].pause() );set(events[video_events].onmousedown, null);set(video_auto_start, true);););</action>
    <scene name="video_scene" onstart="plugin[video].play(); skin_video_setup();">
    <include url="%SWFPATH%/skin/videointerface.xml" />
    <image><sphere url="plugin:video" /></image>
    </scene>
    </krpano>

  • UPDATE

    I've noticed that if the player bar is hidden the video playback is still fluent, even though it's updating the time.
    Therefore I made a change in the videointerface.xml so whenever the plain 360 video starts it will start with the player bar hidden, when you tap on the screen the player bar shows but also pauses the video (since the bar is only needed to seek time in the timeline). After you press play, the player bar hides instantly.
    It's a compromise but at least the customer can use the app...

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!