MediaLibiOS error (buffer doesn't work)

When I want to change buffer in your sample project on https://github.com/slavavdovichenko/MediaLibDemos3x (RTMPStreamPlayer) anything doesn’t change and when I change isRealTime flag your sample use a lot of memory, and than crash. Can you help me with this issue?

Hi, Kirill!

The internal ticket BKNDLSS-12839 was created to investigate your issue.

Guys, any news for this problem?

  1. Why do you think what clientBufferMs property doesn’t work?

  2. You should use isRealTime = YES only with live stream, not with vod.

  1. Because I set clientBufferMs to 1000 and nothing changed

  2. I use isRealTime = YES with live stream

  3. I want to set clientBufferMs because video plays faster than in real (like accelerated rewind)

  1. And what must be changed? clientBufferMs sets the playing stream lag on the server side (“rtmp_buffer” input stream option).

  2. I checked this mode with iPhone 5 and iPad, and I cannot reproduce the crash. I checked the player with profiler and didn’t find any leaks. I used RESOLUTION_VGA on publisher.

  3. You cannot use clientBufferMs for this cause.

Crash when I set isRealTime to NO. How can I fix “video plays faster than in real (like accelerated rewind)” if I can’t change clientBufferMs?

Little bit details for this situation:

  1. At publisher point we streaming with 720p resolution
  2. On player side we need to view video with minimized lag (not bigger than 3 sec if its possible).

So if we setting up isRealTime=yes - video plays good for some time, but because of high resolution - not all video frames come to player in correct time and it start’s to play latecomers frames faster then it should.

In web flash players (like Adope Strobe media playback) for this situation exist next options for live video: you can set buffer size to zero - and player will just drop latecomers frames (so images on screen will jump from time to time). Or - you can set buffer just to 1-2 sec - so lag of video will be a little bigger, but video frames will play smoothly.
For us - second scenario is comfortable and we try to reproduce with IOS libraries, but, as Kirill mentioned earlier, where is no effect in combining isRealTime = YES and clientBufferMs = 1000

If you set isRealTime = YES you switch on the mode without buffering.

So, Vyacheslav, please, help
isRealTime=YES - don’t work well and plays live stream like accelarted comedy show )
isRealtime=No and ClientBuffer=1000 - crashes with live stream at all (as i understand - it can work only with VOD)

We don’t know what to do and, in this situation, have to throw away part of IOS functionality

You could use isRealtime=No on the player and RESOLUTION_VGA or RESOLUTION_CIF on the publisher.

Unfortunatly, this resolution is not acceptable for our clients.

So, i see, that this problem could not be closed with your support. It’s a pity, we planned before to use backendless for many features, not only with video

I added ‘rtmp_live’ option, please try the lib from MediaLibiOS3x github, use with isRealtime= YES

Mike, this is not a question of support, but more of a physical limitation. You’re asking about HD streaming with buffering, which is a very “memory-hungry” operation. The problem occurs not because of some leak, but on memory allocation which is absolutely required to complete a particular step, whether it is encoding, buffering or sending a frame off. We’d be happy to help any way we can, but we should operate within reasonable limits. You mentioned that web browsers do that, however, it is not an apples–to-apples comparison (no pun intended).

Nothing changed with new build

Kirill, please see Vyacheslav’s response here