Свойство скорости AVPlayer не работает?

так что казалось бы, что единственные значения, которые действительно работают, равны 0.0, 0.5, 1.0 и 2.0...

Я попытался установить его на 0,25, так как я хочу, чтобы он играл на 1/4-й скорости естественной скорости, но вместо этого он играл на 1/2 от естественной скорости. может ли кто-нибудь подтвердить это?

Ответ 1

Подтверждено. У меня на самом деле был билет с Apple DTS, открытый для этой проблемы, и была зарегистрирована ошибка. Поддерживаются только 0,50, 0,67, 0,80, 1,0, 1,25, 1,50 и 2,0. Все остальные настройки округлены до ближайшего значения.

Ответ 2

Ограничение скорости воспроизведения, по-видимому, связано с корректировкой высоты тона, которая теперь настраивается в iOS 7 или новее.

// This prevents the play rate from going below 1/2.
playerItem.audioTimePitchAlgorithm = AVAudioTimePitchAlgorithmLowQualityZeroLatency;

Кажется, это значение по умолчанию:

Низкое качество и очень низкий вычислительный алгоритм шага. Подходит для коротких быстрых и перемоточных эффектов, а также для голоса низкого качества. Скорость снижается до {0.5, 0.666667, 0.8, 1.0, 1.25, 1.5, 2.0}.

Другие три настройки алгоритма позволяют изменять скорость воспроизведения до 1/32. Например, AVAudioTimePitchAlgorithmVarispeed отключает корректировку высоты тона.

// Enable play rates down to 1/32.
playerItem.audioTimePitchAlgorithm = AVAudioTimePitchAlgorithmVarispeed;

Ответ 3

Я обнаружил, что меньшие значения действительно поддерживаются, но все дорожки в AVPlayerItem должны поддерживать скорость. Однако Apple не предоставляет свойство на отдельных дорожках, которое указывает, какие ставки поддерживаются, есть только свойство canPlaySlowForward на AVPlayerItem.

Что я нашел, так это то, что AVPlayerItems со звуковой дорожкой не может играть со скоростью медленнее 0,5. Однако, если есть только видеодорожка, скорость может иметь произвольное небольшое значение, например 0,01. Я попытаюсь написать категорию, которая проверяет "на лету", какие значения поддерживаются, и при необходимости отключать неподдерживаемые треки.

br denis

UPDATE

Я написал функцию, которую вы можете вызвать, когда хотите установить скорость для видео ниже 0,5. Он включает/отключает все звуковые дорожки.

- (void)enableAudioTracks:(BOOL)enable inPlayerItem:(AVPlayerItem*)playerItem
{
    for (AVPlayerItemTrack *track in playerItem.tracks)
    {
        if ([track.assetTrack.mediaType isEqual:AVMediaTypeAudio])
        {
            track.enabled = enable;
        }
    }
}

Ответ 4

Я согласен с @otto, привет ответ решил мою проблему.

/*
AVAudioProcessingSettings.h


@abstract       Values for time pitch algorithm

@constant      AVAudioTimePitchAlgorithmLowQualityZeroLatency
            Low quality, very inexpensive. Suitable for brief fast-forward/rewind effects, low quality voice.
            Rate snapped to {0.5, 0.666667, 0.8, 1.0, 1.25, 1.5, 2.0}.

@constant      AVAudioTimePitchAlgorithmTimeDomain
            Modest quality, less expensive. Suitable for voice.
            Variable rate from 1/32 to 32.

@constant      AVAudioTimePitchAlgorithmSpectral
            Highest quality, most computationally expensive. Suitable for music.
            Variable rate from 1/32 to 32.

@constant      AVAudioTimePitchAlgorithmVarispeed
            High quality, no pitch correction. Pitch varies with rate.
            Variable rate from 1/32 to 32.
*/

AVF_EXPORT NSString *const AVAudioTimePitchAlgorithmLowQualityZeroLatency NS_AVAILABLE_IOS(7_0);
AVF_EXPORT NSString *const AVAudioTimePitchAlgorithmTimeDomain NS_AVAILABLE(10_9, 7_0);
AVF_EXPORT NSString *const AVAudioTimePitchAlgorithmSpectral NS_AVAILABLE(10_9, 7_0);
AVF_EXPORT NSString *const AVAudioTimePitchAlgorithmVarispeed NS_AVAILABLE(10_9, 7_0);

Ответ 5

Нет, он отлично работает для меня (xcode 4.2) на ipad 2 ios 5. Я использовал AVPlayerDemo из ресурсов dev и модифицировал свойство rate с помощью слайдера, и он очень плавный, без каких-либо переходов. поведение ниже 0,2 нечетно. возможно, скорость не линейна вблизи экстремальных значений, но определенно гладкая. от 0.2 до 2. Я использую видео, которые я захватил с помощью устройства, что может изменить ситуацию.

Пока,

Жан