Не работает свойство оценки AVPlayer? - PullRequest
13 голосов
/ 09 июля 2011

, поэтому может показаться, что единственные значения, которые действительно работают, это 0,0, 0,5, 1,0 и 2,0 ...

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

Ответы [ 5 ]

23 голосов
/ 10 октября 2014

Ограничение скорости воспроизведения, по-видимому, связано с корректировкой основного тона, которую теперь можно настроить в 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;
19 голосов
/ 30 марта 2012

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

6 голосов
/ 14 января 2014

Я обнаружил, что меньшие значения действительно поддерживаются, но все дорожки в 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;
        }
    }
}
3 голосов
/ 17 ноября 2015

Я согласен с @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);
0 голосов
/ 02 ноября 2011

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

Bye,

Жан

...