Search Unity

  1. Good news ✨ We have more Unite Now videos available for you to watch on-demand! Come check them out and ask our experts any questions!
    Dismiss Notice
  2. Ever participated in one our Game Jams? Want pointers on your project? Our Evangelists will be available on Friday to give feedback. Come share your games with us!
    Dismiss Notice

[Released] AVPro Video - complete video playback solution

Discussion in 'Assets and Asset Store' started by AndrewRH, Feb 12, 2016.

  1. bdovaz

    bdovaz

    Joined:
    Dec 10, 2011
    Posts:
    765
    @AndrewRH I see that there is no event to check when you have a video looping when it reaches each loop.

    Do you know what is the best way to do that? It would be nice that you provide an event for this.

    In my case I need to reset some things when it "starts again" (new loop).
     
  2. Jotesting

    Jotesting

    Joined:
    Jul 24, 2012
    Posts:
    5
    Hi,

    the HLS streaming is not working anymore on Android Pie (9) on Google Pixel devices. Can you please take a look. Its working on all other Android devices and systems

    Thanks
     
  3. unity_tLzl9kOwhXjNOQ

    unity_tLzl9kOwhXjNOQ

    Joined:
    Aug 10, 2018
    Posts:
    4
    Hi,
    Am using AVPRO in my project for streaming the HLS, MPED-DASH video for my desktop application. Is it possible to find all the supported video resolution while streaming the video like in youtube which allows the user to select the video quality and loads the video based on user input?Am providing the manifest file as input.
     
  4. AndrewRH

    AndrewRH

    Joined:
    Jan 24, 2012
    Posts:
    2,637
    This is very strange. Are you using the latest version of the AVProVideo plugin? I can't reproduce it here - that scene runs fine for me...
    Perhaps you could email our unity support address (www.renderheads.com/contact/) so that we can start a ticket to investigate your issue?

    Thanks,
     
  5. AndrewRH

    AndrewRH

    Joined:
    Jan 24, 2012
    Posts:
    2,637
    I've had a quick look into adding support for this, but it didn't work. The video didn't decode for some reason. I think in your case you may need to swap your GPU / Monitor order so that your get the best video decoding.

    Thanks,
     
  6. Kreekakon

    Kreekakon

    Joined:
    Aug 24, 2015
    Posts:
    5
    Hi, is it possible for the plugin to be able to get a VideoClip variable and play a video via that instead of doing it through usage of a file path? The reason is that for our project we plan to download an external asset bundle that our main project will be able to interact with and extract asset references as Object variables as needed, so a file path would not be able to pinpoint the video file we want from a bundle.

    Also if not, would the video player be able to locate a video file on the phone if we were to download it alongside the bundle and therefore giving it a proper file path? In this case where would we need to download the video file to ensure that it stays relative to the game files? This is of course assuming that such a feat is possible at all and I personally have never tried it.
     
    Last edited: Oct 15, 2018
  7. AndrewRH

    AndrewRH

    Joined:
    Jan 24, 2012
    Posts:
    2,637
    No, VideoClips and AssetBundles are not compatible with AVPro Video. You would have to extract the video file from the bundle, write it to disk and then let AVPro Video play that file.

    If you can give AVPro Video the path to a video file, then it will be able to play it. Usually files are downloaded and stored in the Application.persistentDataPath folder, from which you can play the files.

    Thanks,
     
  8. fuku-sin

    fuku-sin

    Joined:
    Oct 17, 2018
    Posts:
    2
    New
    Hi,
    When I open a video file the second time or later on iOS devices, Sometimes it will fail.
    Then, "MediaPlayerEvent.EventType.Stalled" is dispatched from AvPro, and "MediaPlayerEvent.EventType.ReadyToPlay" is not called.

    It only happens with Unity 2018.2. Also It works perfectly on UnityEditor.

    Code (CSharp):
    1. public void VideoPlay()
    2. {
    3.  displayUGUI._mediaPlayer.Events.AddListener(OnVideoEvent);              
    4.  displayUGUI._mediaPlayer.OpenVideoFromFile(displayUGUI._mediaPlayer.m_VideoLocation, GetFilePath(), false);
    5. }
    6. public void VideoStop()
    7. {
    8.   displayUGUI._mediaPlayer.Events.RemoveListener(OnVideoEvent);
    9.   displayUGUI._mediaPlayer.CloseVideo();
    10. }
    11. public void OnVideoEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode)
    12. {
    13.  Debug.Log("OnVideoEvent" + et.ToString());
    14.  switch (et)
    15.   {
    16.    case MediaPlayerEvent.EventType.ReadyToPlay:
    17.    mp.Play();
    18.    break;
    19.   }
    20. }
     
    Last edited: Oct 17, 2018
    jsm2112 likes this.
  9. redagrandrei

    redagrandrei

    Joined:
    Sep 3, 2017
    Posts:
    49
    Problem description:

    Hello. I bought AVPRO IOS some time s ago. Now wanted to use it again and its always trial. Not sure what to do with it and why its trial.




    System Information:

    AVPro Video: plugin v1.9.1t scripts v1.9.2
    Target Platform: iOS
    Unity: v2018.2.5f1 WindowsEditor
    OS: Desktop - All Series (ASUS) - Windows 10 (10.0.0) 64bit - Russian
    CPU: Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz - 4 threads - 16326KB
    GPU: Emulated GPU running Metal - Emulated - Metal [emulated] - 2016KB - 4096
     
  10. AndrewRH

    AndrewRH

    Joined:
    Jan 24, 2012
    Posts:
    2,637
    Currently the MediaPlayer doesn't have this functionality. What you could do is use our StreamParser component to parse the manifest and then you can query it for the lists of available resolutions. You can then feed the URL for these resolutions into the MediaPlayer directly for it to play them.
    Thanks,
     
  11. AndrewRH

    AndrewRH

    Joined:
    Jan 24, 2012
    Posts:
    2,637
    I'm afraid we don't have an Android 9 device to test on.....Are you able to share the log collected via adb log cat ? Also have you tried switching the video API between ExoPlayer and MediaPlayer to see whether that makes any difference (the option is on the MediaPlayer in Platform Specific > Android)?

    Thanks,
     
  12. AndrewRH

    AndrewRH

    Joined:
    Jan 24, 2012
    Posts:
    2,637
    Yes currently there is no event for this. What you can do is manually check the video time, via:

    mediaPlayer.Control.GetCurrentTimeMs()

    and if the user has no control over the playback position, and this value suddenly goes backwards (close to zero), then you can assume that it has looped.

    Something like:

    Code (CSharp):
    1. if (mediaPlayer.IsLooping())
    2. {
    3.     float time = mediaPlayer.Control.GetCurrentTimeMs();
    4.     if (time < _previousTime)
    5.     {
    6.          Debug.Log("loop detected!  Do something here");
    7.     }
    8.     _previousTime = time;
    9. }
    Thanks,
     
  13. AndrewRH

    AndrewRH

    Joined:
    Jan 24, 2012
    Posts:
    2,637
    I'm afraid there is no way to do this.....
    If you want to play the manifest locally, then you would need to have all of the files there locally for it to play from. Perhaps unless you modify the manifest to point to a full URL for the other files... This is a very special case and is beyond the intended scope of our plugin.

    Thanks,
     
  14. AndrewRH

    AndrewRH

    Joined:
    Jan 24, 2012
    Posts:
    2,637
    Is the video very high resolution? You may be running out of memory as these devices don't have much RAM..... If you're still having trouble please send us an email (www.renderheads.com/contact) with all the detailed information (eg plugin version number, iOS version, video specs)

    Thanks,
     
  15. AndrewRH

    AndrewRH

    Joined:
    Jan 24, 2012
    Posts:
    2,637
    If you only purcahsed the iOS version of the plugin "AVPro Video (iOS)", then the watermark will still appear on non-iOS platforms, such as in the Unity editor which runs on Windows / macOS.

    Once you deploy your build to the iOS device there should be no watermark.

    Thanks,
     
  16. AndrewRH

    AndrewRH

    Joined:
    Jan 24, 2012
    Posts:
    2,637
    We would love to add ML support, but we don't actually have one yet...

    I installed the Lumin SDK and had a look at that Build Plugin option. It doesn't seem to be an easy way to convert existing plugins....Also it seems to only support C++ while our plugin is a mix of C++ and Java.... I'm not very familiar with the SDK though so maybe there is a way, but I can't see it.

    Could you say what areas we could improve over MLMediaPlayer by adding support for ML to AVPro Video?

    Thanks,
     
  17. Krstn

    Krstn

    Joined:
    Dec 30, 2012
    Posts:
    25
    What is the correct way to enable the OES Path in Android?
    I have created an example project, imported latest AVPro from Asset Store, opened the 04_Demo_uGUI scene, opened the AV Pro Video uUGI object and set the material to UI-Video and then changed the shader on UI-Video to AVProVideo/UI/Android OES.

    On the AVPro Media Player I have checked the Use Fast OES Path.
    I have selected a video from the Streaming Assets.


    Then built and the result i have is a white video object.

    Is this the right way to set it up?
     
  18. Sutee9

    Sutee9

    Joined:
    Mar 12, 2015
    Posts:
    4
    Hi,

    I am running Unity 2018.2 with MacOS High Sierra, and tried your trial version before buying the full package.
    After running into problems with my videos not playing right, I built the pure "04-Demo_uGui" - Scene, and the problem is the same. The video is caught in a short loop of about half a second, while Audia actually plays.

    Editor works. Windows builds too. Mac Builds not.

    Device (which devices are you having the issue with - model, OS version number):

    Mac OS X High Sierra.

    Media (tell us about your videos - number of videos, resolution, codec, frame-rate, example URLs):

    It is your included bunny vid. All my own videos behave exactly the same.

    System Information:

    AVPro Video: plugin v1.9.2t scripts v1.9.2
    Target Platform: Standalone
    Unity: v2018.2.8f1 OSXEditor
    OS: Desktop - MacBookPro11,3 - Mac OS X 10.13.6 - English
    CPU: Intel(R) Core(TM) i7-4870HQ CPU @ 2.50GHz - 8 threads - 16384KB
    GPU: NVIDIA GeForce GT 750M - Apple - Metal - 2048KB - 16384
     
  19. MESHED-space-GmbH

    MESHED-space-GmbH

    Joined:
    Nov 11, 2015
    Posts:
    22
    Hi, maybe can you post an working web-example , so i can try it on my ipad device (i used the last version of your plugin)?
    thanks,
    Ulf
     
  20. AndrewRH

    AndrewRH

    Joined:
    Jan 24, 2012
    Posts:
    2,637
    The uGUI component already supports OES natively, so you shouldn't assign a material to it. The shader is only needed when using the ApplyToMesh / ApplyToMaterial components - then you have to make sure that material that the mesh is using supports OES. So I think if you just remove the material from the DisplayUGUI component it should work.

    Thanks,
     
  21. AndrewRH

    AndrewRH

    Joined:
    Jan 24, 2012
    Posts:
    2,637
    Ahh yes, actually this is a known issue. This issue is only with specific Macbooks which is why we haven't been able to test it yet. You can fix it by changing the graphics API to OpenGL (go to Unity's Player Settings > Other Settings > untick Automatic Graphics API and make sure to remove Metal from the list).

    Thanks,
     
  22. unity_tLzl9kOwhXjNOQ

    unity_tLzl9kOwhXjNOQ

    Joined:
    Aug 10, 2018
    Posts:
    4
    Hi Andrew, Thanks for your reply. I have used StreamParser component. In the Url, I have given the manifest file path. While parsing this file, it says
    [AVProVideo]HLSParser cannot parse stream QualityLevels(128140)/Manifest(video,format=m3u8-aapl), Could not find a part of the path "<PATH>\QualityLevels(128140)\Manifest(video,format=m3u8-aapl)".
    UnityEngine.Debug:LogError(Object)
    RenderHeads.Media.AVProVideo.HLSStream: ParseFile(String[], String) (at Assets/Materials/Scripts/Internal/HLSStream.cs:204)
    RenderHeads.Media.AVProVideo.HLSStream:.ctor(String, Int32, Int32, Int32) (at Assets/Materials/Scripts/Internal/HLSStream.cs:279)
    RenderHeads.Media.AVProVideo.StreamParser:LoadFile() (at Assets/Materials/Scripts/Components/StreamParser.cs:61)

    I have attached my Manifest file also. Though it is showing error am able to get the resolution which are specified in the manifest file. But this manifest file doesn't contain any information about the url for each resolution, So what can I give as input to AVPRO Media Player when the user selects the resolution.
     

    Attached Files:

  23. remy_rm

    remy_rm

    Joined:
    Jan 16, 2017
    Posts:
    17
    Hi Andrew,

    Thanks for your reply. Maybe for future reference this is how i ended up doing it: I redirect the request to localhost/<port>, on this port i run a httpListener and a HttpListenerContext which is able to catch the name of the requested file. I send this file to the server to be downloaded. Once the file is downloaded i Write the contents of the file back to the localhost port using the same HttpListenerContext, due to witch the mediaPlayer knows that that is the file it needs.

    I do have one other question though. Is there a way to force a quality through AVPro? Currently it will start the download at 1080p, download it, and when it can it switched to 4k. However when the video loops it will have the 4K available, but still play back the 1080p for the first fragment, despite having 4K listed as the first resolution in the .m3u8 file. The only way to make it start at 4k is by removing all other resolutions from the m3u8 file, which isn't really a solution.

    With kind regards, Remy.
     
  24. AndrewRH

    AndrewRH

    Joined:
    Jan 24, 2012
    Posts:
    2,637
    Currently you can't force the resolution. It is up to the device manufacturer's decoder to decide which resolution to use based on the bandwidth. We hope to improve support for this in the future.

    Thanks,
     
  25. AndrewRH

    AndrewRH

    Joined:
    Jan 24, 2012
    Posts:
    2,637
    Hi All,

    AVPro Video version 1.9.3 has just been released!

    You can find the updated version on the Asset Store and the free trial version on our website.

    Changes include:

    Android
    • Fixed Oculus Go texture wrap mode being set to repeat instead of the default clamp. This was due to a new firmware update that allowed different texture wrap modes on OES textures
    • Added support for SeekFast() to ExoPlayer which seeks to the closest keyframe
    • Various robustness improvements related to resource freeing and plugin shutdown for Android apps that contain a Unity player instance
    • Built with new version of Android Studio (3.2)
    macOS / iOS / tvOS
    • Added support for handling key requests for encrypted HLS streams (eg using AES). Supports direct key setting and key retrieval using authentication token via HTTP header. See DRM section for details.
    • Added new SetPlayWithoutBuffering(bool) method to allow playback to start immediately, bypassing the API buffering duration logic
    WebGL
    • Added support for mip-map texture generation
    General
    • Fixed regression in 1.9.2 causing some events not to fire, in particular the subtitle change event
    • Fixed issue where videos would open twice when calling OpenVideoFromFile() while AutoLoad was enabled and Start() hadn’t run yet
    • Many improvements to PlaylistMediaPlayer, including StartMode and ProgressMode options, improved UI and per-item transitions

    Thanks to everyone that reported bugs that were fixed in this release :)

    Please report any issues here on the forum, or to our customer support email

    Thanks,
     
    remy_rm likes this.
  26. DrMaxP

    DrMaxP

    Joined:
    Sep 18, 2018
    Posts:
    23
    I have a video that I want to play back in reverse. Currently, if I set a negative, integer value for the playback speed the playback is choppy (whereas a positive, integer value for the playback speed is ok). So I've attempted to re-encode the video using ffmpeg to reverse it. I then want to 'fast forward' the reversed video. This works, but any attempt to set the playback speed to a positive value that is not 1.0 results in choppy playback. The original videos are much happier being played at a positive multiple of 1.0 (e.g. 4.0). What steps can I take in ffmpeg to re-encode the videos in reverse that still works well with positive multiple of 1.0 for the playback? Is this a bitrate issue, a codec issue or what?
     
  27. DrMaxP

    DrMaxP

    Joined:
    Sep 18, 2018
    Posts:
    23
    I guess to simplify my question it's how do I (re)encode a video for optimal playback performance at multiple (positive) values of the playback speed...
     
  28. AndrewRH

    AndrewRH

    Joined:
    Jan 24, 2012
    Posts:
    2,637
    Hi,

    It all has to do with adding more keyframes and reducing encoding complexity. We have a dedicated section in the AVPro Video PDF documentation about this - see section 4.14.

    Here's an example of an FFMPEG script you can use:
    ffmpeg -y -i %1 -pix_fmt yuv420p -profile:v main -refs 2 -crf 20 -g 1 -tune fastdecode -movflags faststart %1-simple.mp4

    This will take your input video and encode it with many h.264 features disabled (eg, B-frames, CABAC), which makes decoding simpler, and with a keyframe for every frame (-g 1). Note that if your video is very high resolution, and close to the resolution limit of the hardware decoder, you won't be able to set the playback rate very high without stuttering, as you would be asking it to decode faster than it can. Eg If a GPU can decode a maximum of 4K at 30fps, then playing a 4K30 video at 2x the rate can't be done smoothly, but a 2K video should be able to go up to almost 4x as it is a quarter of the resolution.

    Thanks,
     
  29. DrMaxP

    DrMaxP

    Joined:
    Sep 18, 2018
    Posts:
    23
    Many thanks. This information is really great.
     
  30. phileday

    phileday

    Joined:
    Feb 8, 2014
    Posts:
    85
    Hi

    Thanks for the update. I had problems with the autostart before when I upgraded to the previous release and the same with this release. I was putting together a test scene to send you and noticed it worked. I've found the issue, in this case there was a play option after the load which for some reason was overriding the autostart always setting it on. Regardless I fixed it and it's working now :)

    I do have another question. I'm currently working towards an Oculus Go release and one feature I'd like to use is the OES shaders. The only problem is that my current shader allows me to change the hue, saturation, brightness, contract and gamma. Is there a way to convert that shader over or can you suggest another way to implement these colour changes that would work with your OES shaders?

    Also previously I asked about mipmaps on Android. You mentioned about implementing it and I wondered that once you've implemented it whether it would work with OES as well?

    All the best and thanks for another great update.

    Phil
     
    Last edited: Oct 23, 2018
  31. MaximePeloquin

    MaximePeloquin

    Joined:
    May 15, 2018
    Posts:
    6
    Hi,

    I'm playing a video from a HLS stream. Is there a way to continue playing a buffered video but stop further buffering?

    I'd like to only allow my users to play videos only while they are on a wifi connection and stop buffering once they get on cellular data network. If a user has already loaded 1 minute of the video, I'd like to allow him to continue watching until there's no more buffered data then stop the playback.

    Right now we just stop the video once the user is no longer on wifi, but it could be frustrating for users if they only disconnect for a few seconds and have to start the video again.

    Thanks
     
  32. VR_Unity_Account

    VR_Unity_Account

    Joined:
    Aug 17, 2017
    Posts:
    17
    Is there a way to play videos from a shared folder on android?
     
  33. AndrewRH

    AndrewRH

    Joined:
    Jan 24, 2012
    Posts:
    2,637
    Glad you fixed the autoplay issue...I'm not sure whether this is a bug or you were just using it wrong? We certainly fixed an autoplay bug recently...If you think it's a bug please let us know the details so we can fix it. If you're calling OpenVideoFromFile() then note that the last parameter is automatic and specifies whether the video should autoplay and defaults to true.

    Yes, it shouldn't be difficult to port such a shader to OES...You can probably do it yourself. Just take the OES shader that you're using, duplicate and rename it...then add in your shader code. Keep in mind that you have to use GLSL instead of CG/HLSL, so it is a little different. We have actually created some #defines in our CGINC file to make it easier to write shaders for both. If you're having trouble just email us.

    Mipmap for Android is coming...We just added support for Mipmaps in WebGL. I still need to investigate whether we can support it for OES. I think by default OES doesn't support mipmaps, but there is a good chance that there is a GLES extension that adds support for devices that support the extension.

    Thanks,
     
  34. AndrewRH

    AndrewRH

    Joined:
    Jan 24, 2012
    Posts:
    2,637
    I'm afraid currently we don't have any way to pause the buffering.. It's automatically controlled by the operating system's video API and we haven't found any way to control it. It's a feature that we're often trying to add support for. Hopefully in the future.

    Thanks,
     
  35. AndrewRH

    AndrewRH

    Joined:
    Jan 24, 2012
    Posts:
    2,637
    I'm not sure what a shared folder is....Do you mean a folder on the network exposed by a UNC?

    Basically, I don't think so....It's not something we've actually tried ever.

    There is a free trial version of AVPro Video available for download from our website, so you can always try it yourself and let us know. I have a feeling it's not supported though...

    Thanks,
     
  36. AndrewRH

    AndrewRH

    Joined:
    Jan 24, 2012
    Posts:
    2,637
    Hi All,

    AVPro Video version 1.9.4 has just been released!

    You can find the updated version on the Asset Store and the free trial version on our website.

    Changes include:

    iOS / tvOS
    • Fixed issue where subsequent video loads would sometimes fail to display frames

    Thanks to everyone that reported bugs that were fixed in this release :)

    Please report any issues here on the forum, or to our customer support email

    Thanks,
     
  37. huxley

    huxley

    Joined:
    Apr 27, 2009
    Posts:
    326
    Is there currently any support for video depth maps, or any planned support for this in the future for VR cameras that can generate 6DOF maps like Google Jump or Kandao Obsidian?
     
  38. Architree

    Architree

    Joined:
    Oct 29, 2012
    Posts:
    6
    Dear Renderheads,

    I am doing a project with still moving background (background with looping bgm and simple animation), I realized there was a sec of silence pause between looping (or during rewind).
    I want a seamless loop without any silence pause please and thank you.
     
  39. Monarc

    Monarc

    Joined:
    Jun 20, 2016
    Posts:
    7
    I found that I'm using another plugin which also utilizes exoplayer and that plugin causes something wrong at runtime. I informed the creator of the plug-in to let me know about the solution.
    I am sorry to bother you.
    Thanks.
     
    AndrewRH likes this.
  40. NS24

    NS24

    Joined:
    Feb 21, 2018
    Posts:
    15
    @AndrewRH I am having some problems here and hope you could help?

    I managed to get a setup where I can detect Stereo video and then switch between stereo and mono playback by enabling/disabling the UpdateStereoMaterial component and setting stereo packing accordingly.

    This solution works fine on Oculus Go and GearVR, however it does not work on Windows, most likely because of the issue above.

    Please can you explain why this behaviour is different on the Windows platform when compared to GearVR/GO?

    To get around the problem I looked at #FAQ8 and tried both methods of removing the metadata:
    • ffmpeg -i %1-video.nut -crf 10 %1-stripped.mp4
    • ffmpeg -i in.mp4 -map_metadata -1 -c:v copy -c:a copy out.mp4
    However when playing back on the Rift, it seems the left eye flickers while playing, so it's not a pleasant experience.

    Do you have any other suggestions here?
     
  41. AndrewRH

    AndrewRH

    Joined:
    Jan 24, 2012
    Posts:
    2,637
    Hi,

    On Windows we're using an API that tries to handle stereo videos itself, and so it doesn't support sending us the decoded frame containing both the left and the right eye content. This is why you need to strip the stereo metadata from the video file currently. In the future we plan to use another video decoder system so that we can resolve this problem.

    I have no idea why it would be flickering in the Rift....Feel free to send us that video file (www.renderheads.com/contact/) so we can help debug the situation.

    Thanks,
     
  42. AndrewRH

    AndrewRH

    Joined:
    Jan 24, 2012
    Posts:
    2,637
    To get the best result with looping, I recommend:

    1) removing any audio track that is in the video file, even if it is silent
    2) playing any audio separately
    3) encoding the video in a very simple manner - eg, all key-frames.

    Thanks,
     
  43. AndrewRH

    AndrewRH

    Joined:
    Jan 24, 2012
    Posts:
    2,637
    Hi,

    Well, since those videos are just normal videos, with a depth map in part of the frame: we already support playback of these videos. We don't include any visualisation of such videos though as that's beyond the scope of our plugin, which is aimed purely at video playback. Using a point cloud or other component it shouldn't be difficult to use AVPro Video to display these 6DOF videos correctly. Perhaps we can include a sample of this in the future.

    Thanks,
     
  44. AndrewRH

    AndrewRH

    Joined:
    Jan 24, 2012
    Posts:
    2,637
    Thanks for the suggestions - these have been added to the current version.

    We're working on these, and they should also appear in a future version. We've added to the current version the ability to offset the transition so it starts before the video ends.

    Hmm I'm not sure what you're trying to do here.. Perhaps you should try _mplaylist.CloseVideo()? or _mplaylist.CurrentPlayer.CloseVideo()?

    Thanks,
     
  45. JoRangers

    JoRangers

    Joined:
    Nov 7, 2017
    Posts:
    24
    Hi,

    I have an issue with the AVProVideo on Oculus GO.

    I use unity 2017.4.14f1 and AVProVideo 1.9.4

    I have a simple scene with the AVPro Media Player Inside

    All works fine with my video at 3840x3840,
    But after 4 or 5 reload of my scene, the app crashes.
    I have checked the adb logcat but I don't find something that helps me, perhaps you can help me.

    Some screenshots of my AVPro setup are in attachment


    Here is the logcat when the app crashes :
    10-30 10:50:33.383 26706 26706 I System.out: AVProVideo video state: buffering
    10-30 10:50:33.383 26706 26706 I System.out: AVProVideo buffer preparing
    10-30 10:50:33.388 575 2977 D VrApiService: refresh-rate changed to 72Hz
    10-30 10:50:33.390 26706 26722 I VrApi : Set Display(0) Refresh Rate = 72.000000
    10-30 10:50:33.396 26706 26722 I Unity : OVR SetFrequency CHECK 72
    10-30 10:50:33.396 26706 26722 I Unity : UnityEngine.DebugLogHandler:Internal_Log(LogType, String, Object)
    10-30 10:50:33.396 26706 26722 I Unity : UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[])
    10-30 10:50:33.396 26706 26722 I Unity : UnityEngine.Logger:Log(LogType, Object)
    10-30 10:50:33.396 26706 26722 I Unity : UnityEngine.Debug:Log(Object)
    10-30 10:50:33.396 26706 26722 I Unity : DebugLogController:Log(Object[]) (at D:\Documents\_Scripts\Debug\DebugLogController.cs:38)
    10-30 10:50:33.396 26706 26722 I Unity : <SetFrequency>c__Iterator0:MoveNext() (at D:\Documents\_Scripts\Oculus\OVRFrequency.cs:30)
    10-30 10:50:33.396 26706 26722 I Unity : UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr) (at /Users/builduser/buildslave/unity/build/Runtime/Export/Coroutines.cs:17)
    10-30 10:50:33.396 26706 26722 I Unity :
    10-30 10:50:33.396 26706 26722 I Unity : (Filename: D Line: 0)
    10-30 10:50:33.396 26706 26722 I Unity :
    10-30 10:50:33.452 26706 26840 D MediaCodecInfo: NoSupport [sizeAndRate.support, 3840x3840x-1.0] [OMX.qcom.video.decoder.avc, video/avc] [pacific, Pacific, Oculus, 25]
    10-30 10:50:33.454 26706 26840 D MediaCodecInfo: NoSupport [sizeAndRate.support, 3840x3840x-1.0] [OMX.qcom.video.decoder.avc, video/avc] [pacific, Pacific, Oculus, 25]
    10-30 10:50:33.486 554 885 I MediaPlayerService: MediaPlayerService::getOMX
    10-30 10:50:33.489 26706 26844 I OMXClient: MuxOMX ctor
    10-30 10:50:33.498 550 872 I OMXMaster: makeComponentInstance(OMX.qcom.video.decoder.avc) in mediacodec process
    10-30 10:50:33.512 550 872 I OMX-VDEC-1080P: component_init: OMX.qcom.video.decoder.avc : fd=244
    10-30 10:50:33.518 550 872 I OMX-VDEC-1080P: omx_vdec::component_init() success : fd=244
    10-30 10:50:33.542 26706 26843 I MediaCodec: [OMX.qcom.video.decoder.avc] setting surface generation to 27346953
    10-30 10:50:33.547 550 4144 E OMX-VDEC-1080P: Extension: OMX.google.android.index.storeANWBufferInMetadata not implemented
    10-30 10:50:33.548 26706 26844 I ExtendedACodec: setupVideoDecoder()
    10-30 10:50:33.548 26706 26844 I ExtendedACodec: vpp-enable search is 0 and value is 0
    10-30 10:50:33.563 550 1128 E OMX-VDEC-1080P: Extension: OMX.google.android.index.storeANWBufferInMetadata not implemented
    10-30 10:50:33.563 550 1128 E OMX-VDEC-1080P: Extension: OMX.google.android.index.configureVideoTunnelMode not implemented
    10-30 10:50:33.563 550 1128 E OMX-VDEC-1080P: Extension: OMX.google.android.index.useAndroidNativeBuffer is supported
    10-30 10:50:33.565 26706 26844 I ExtendedACodec: Decoder will be in frame by frame mode
    10-30 10:50:33.576 550 4144 E OMX-VDEC-1080P: Does not handle dataspace request
    10-30 10:50:33.577 550 4144 E OMXNodeInstance: getConfig(226007c:qcom.decoder.avc, ??(0x7f000062)) ERROR: UnsupportedSetting(0x80001019)
    10-30 10:50:33.659 26706 26844 D SurfaceUtils: set up nativeWindow 0xcaccd008 for 3840x3840, color 0x7fa30c06, rotation 0, usage 0x2002900
    10-30 10:50:33.715 26706 26764 I VrApi : FPS=34,Prd=37ms,Tear=1,Early=3,Stale=53,VSnc=1,Lat=1,Fov=0,CPU2/GPU=4/2,1593/315MHz,OC=F,TA=E/0/0,SP=N/N/N,Mem=1804MHz,Free=258MB,PSM=0,PLS=0,Temp=23.7C/25.0C,TW=2.28ms,App=9.32ms
    10-30 10:50:33.817 26706 26763 I Vsync : Vsync 5119467: 2 x 13.93 ms (71.82 Hz, at 85320.817)
    10-30 10:50:33.817 26706 26711 I art : Do partial code cache collection, code=28KB, data=30KB
    10-30 10:50:33.830 26706 26765 I UtilPoller: GPU Util 0.331454 / CPU Util 0.936842 (avg 0.920761)
    10-30 10:50:33.870 26706 26711 I art : After code cache collection, code=28KB, data=30KB
    10-30 10:50:33.876 26706 26711 I art : Increasing code cache capacity to 128KB
    10-30 10:50:34.063 550 1476 E OMX-VDEC-1080P: Does not handle dataspace request
    10-30 10:50:34.064 550 1476 E OMXNodeInstance: getConfig(226007c:qcom.decoder.avc, ??(0x7f000062)) ERROR: UnsupportedSetting(0x80001019)
    10-30 10:50:34.103 26706 26844 D SurfaceUtils: set up nativeWindow 0xcaccd008 for 3840x3840, color 0x7fa30c06, rotation 0, usage 0x2002900
    10-30 10:50:34.207 970 981 I ActivityManager: Process android.ext.services (pid 26253) has died
    10-30 10:50:34.208 970 981 D ActivityManager: cleanUpApplicationRecord -- 26253
    10-30 10:50:34.210 970 981 W ActivityManager: Scheduling restart of crashed service android.ext.services/.notification.Ranker in 28352ms
    10-30 10:50:34.218 970 970 V NotificationRankers: notification ranker service connection lost: ComponentInfo{android.ext.services/android.ext.services.notification.Ranker}
    10-30 10:50:34.266 26706 26763 I TimeWarp: Tear: 0.010716
    10-30 10:50:34.266 26706 26763 I Vsync : Vsync 5119499: 2 x 13.92 ms (71.82 Hz, at 85321.266)
    10-30 10:50:34.307 970 12181 I ActivityManager: Process com.oculus.horizon (pid 26204) has died
    10-30 10:50:34.307 970 12181 D ActivityManager: cleanUpApplicationRecord -- 26204
    10-30 10:50:34.319 1193 1193 I com.oculus.telemetry.core.EventRecorder: Disconnected from the logging service: ComponentInfo{com.oculus.horizon/com.oculus.horizon.service.SDKLoggingService}
    10-30 10:50:34.332 1535 1535 E com.oculus.gkserviceproxy.GkServiceProxy: Disconnected from horizon config service
    10-30 10:50:34.335 970 12181 W ActivityManager: Scheduling restart of crashed service com.oculus.horizon/.service.SDKLoggingService in 38227ms
    10-30 10:50:34.335 970 12181 W ActivityManager: Scheduling restart of crashed service com.oculus.horizon/com.oculus.config.service.GkService in 48227ms
    10-30 10:50:34.336 970 12181 W ActivityManager: Scheduling restart of crashed service com.oculus.horizon/.service_media.OVRMediaService in 58227ms
    10-30 10:50:34.336 970 12181 W ActivityManager: Scheduling restart of crashed service com.oculus.horizon/com.oculus.appmanager.installer.notification.InstallerNotificationService in 68227ms
    10-30 10:50:34.347 970 970 W TelecomManager: Telecom Service not found.
    10-30 10:50:34.354 1186 1186 I OSUpdateEventLogger: disconnected from logging service
    10-30 10:50:34.362 564 564 E cnss-daemon: Stale or unreachable neighbors, ndm state: 4
    10-30 10:50:34.383 1210 1210 D OculusNotificationListenerService: Notification removed: 0|com.oculus.horizon|135234|null|10037
    10-30 10:50:34.387 1186 1186 I OSUpdateEventLogger: binding with com.oculus.horizon.service.SDKLoggingService
    10-30 10:50:34.409 1276 1310 I TrackingService: Unregistering client 'pid 26706' by binder death
    10-30 10:50:34.414 1276 1310 I TrackingService: TrackingServiceHost Unregistering client: pid 26706
    10-30 10:50:34.418 970 15574 I WindowManager: WIN DEATH: Window{7e4d586 u0 SurfaceView - com.myapp.crash/com.unity3d.player.UnityPlayerActivity}
    10-30 10:50:34.421 970 1021 W InputDispatcher: channel '87030a1 com.myapp.crash/com.unity3d.player.UnityPlayerActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9
    10-30 10:50:34.421 970 1021 E InputDispatcher: channel '87030a1 com.myapp.crash/com.unity3d.player.UnityPlayerActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
    10-30 10:50:34.423 550 872 E OMXNodeInstance: !!! Observer died. Quickly, do something, ... anything...
    10-30 10:50:34.423 550 4144 E OMXNodeInstance: !!! Observer died. Quickly, do something, ... anything...
    10-30 10:50:34.423 550 1485 E OMXNodeInstance: !!! Observer died. Quickly, do something, ... anything...
    10-30 10:50:34.423 550 3092 E OMXNodeInstance: !!! Observer died. Quickly, do something, ... anything...
    10-30 10:50:34.424 550 550 E OMXNodeInstance: !!! Observer died. Quickly, do something, ... anything...
    10-30 10:50:34.440 970 1395 I WindowManager: WIN DEATH: Window{87030a1 u0 com.myapp.crash/com.unity3d.player.UnityPlayerActivity}
    10-30 10:50:34.441 970 1395 W InputDispatcher: Attempted to unregister already unregistered input channel '87030a1 com.myapp.crash/com.unity3d.player.UnityPlayerActivity (server)'
    10-30 10:50:34.469 532 532 W SurfaceFlinger: couldn't log to binary event log: overflow.
    10-30 10:50:34.476 970 981 I ActivityManager: Start proc 26848:com.oculus.horizon/u0a37 for service com.oculus.horizon/.service.SDKLoggingService
    10-30 10:50:34.481 970 1348 I ActivityManager: Process com.myapp.crash (pid 26706) has died

    EDIT : I tested with your video sample (SampleCube.mp4) and the problem stills there but it was after 11 reload of the scene.

    Thank you
    Best regards
     

    Attached Files:

    Last edited: Oct 30, 2018
    Rangers_Antoine likes this.
  46. AndrewRH

    AndrewRH

    Joined:
    Jan 24, 2012
    Posts:
    2,637
    Thanks for the chat today, nice to meet you! Do email us if you're still having that issue with the Rift eye flickering...that sounds strange and I can't imagine what could be causing it...

    Cheers,
     
  47. AndrewRH

    AndrewRH

    Joined:
    Jan 24, 2012
    Posts:
    2,637
    Hi,

    Thanks for those details. Could you please try a few more things:

    1) Try enabling OES mode (in MediaPlayer > Platform Specific > Android > use fast OES path), and see if that fixes it
    and also
    2) Try switching to the MediaPlayer video API (in MediaPlayer > Platform Specific > Android > Video API), and see if that fixes it
    3) Instead of reloading your whole scene, if you just reload the video in-place, see whether that still crashes it

    I'm very interested to know what both of those do...

    It sounds like it's running out of memory...so there could be a leak.

    The MediaPlayer API is quite a different code base, so if that works then it could indicate a leak in the ExoPlayer implementation. The OES mode uses less memory as it allocates less textures, so that might fix it, or it might just prolong the app a bit more.

    Certainly very interested to try to solve this and appreciate your feedback!

    Thanks,
     
  48. Rangers_Antoine

    Rangers_Antoine

    Joined:
    Sep 12, 2018
    Posts:
    8
    Hi

    I have a 3840x3840 stereoscopic 60 fps video for Oculus Go. When i play the scene in Unity, it work perfectly. But when i build and play in the Oculus, the video isn't smooth at all. I test the framerame of my oculus go when i play the build and its 60 fps.
    I use unity 2017.4.14f1 and AVPro video 1.9.4
    My video encode in H.264
    I try with a 30fps video and it work.
    May i miss something ?

    Thank you
    Best regards
     
    ad12345 and JoRangers like this.
  49. Architree

    Architree

    Joined:
    Oct 29, 2012
    Posts:
    6
    Dear RanderHeads,

    My projects is including more than 3 videos with average 30 second duration and around 100mb each.
    Problem is when the application changes the videos frequently, the application crash due to overload of memory.

    How do I solve this problem??
     
    JoRangers likes this.
  50. coldstar

    coldstar

    Joined:
    Sep 20, 2014
    Posts:
    11
    Can I adjust the volume of video larger than 1?
    I want to make it louder, but there is no way.
     
unityunity