KimCrab
KimCrab

Reputation: 2361

How to use AVPlayer's function "setRate" in iOS

This is a API document about setRate function in AVPlayer and I just don't understand the concept of this function.

itemTime and hostClockTime? What are they? When do I need them?

Can you give me a example of using those parameters?

/*!
    @method         setRate:time:atHostTime:
    @abstract       Simultaneously sets the playback rate and the relationship between the current item's current time and host time.
    @discussion     You can use this function to synchronize playback with an external activity.

                    The current item's timebase is adjusted so that its time will be (or was) itemTime when host time is (or was) hostClockTime.
                    In other words: if hostClockTime is in the past, the timebase's time will be interpolated as though the timebase has been running at the requested rate since that time.  If hostClockTime is in the future, the timebase will immediately start running at the requested rate from an earlier time so that it will reach the requested itemTime at the requested hostClockTime.  (Note that the item's time will not jump backwards, but instead will sit at itemTime until the timebase reaches that time.)

                    Note that advanced rate control is not currently supported for HTTP Live Streaming.
    @param itemTime The time to start playback from, specified precisely (i.e., with zero tolerance).
                    Pass kCMTimeInvalid to use the current item's current time.
    @param hostClockTime
                    The host time at which to start playback.
                    If hostClockTime is specified, the player will not ensure that media data is loaded before the timebase starts moving.
                    If hostClockTime is kCMTimeInvalid, the rate and time will be set together, but without external synchronization;
                    a host time in the near future will be used, allowing some time for data media loading.
*/

Upvotes: 1

Views: 1978

Answers (1)

Tim Bull
Tim Bull

Reputation: 2495

As the documentation describes, you use this function to synchronize playback with an external activity.

In this question here AVPlayer not synchronized the user (in their answer) is using the same function to synchronize the playback of three separate videos (making sure they all play back at exactly the same rate and remain in synch).

You can also adjust the rate to speed up or slow down video playback (a "sort of" slow motion for example).

Upvotes: 1

Related Questions