2012-05-23 3 views
2

Я хочу показать видео на устройстве iOS в замедленном режиме.iOS Кадр за кадром воспроизведения видео вперед/назад

Мое мнение содержит видео (~ 2 секунды) и слайдер.

Пользователь может перемещать ползунок и шаг (вперед и назад) через кадр за кадром.

MPMoviePlayerController не имеет возможности шага по кадре за кадром.

Я читал около MVAssetReader, но у меня нет конкретной идеи, как это использовать.

У меня нет фиксированной частоты кадров, поэтому она должна извлекать эту информацию из метаданных видео. Мне действительно нужно показать каждый кадр.

Может ли кто-нибудь дать мне ключ?

ответ

3

AV-плеер Демонстрационный образец код WWDC 2010 Пример кода может быть полезным в вашей задаче

Режущий Эскизы из видео объясняется в WWDC 2010 AV Редактирование с AV Framework Foundation и много других вещей относительно редактирования аудио и видео с выборочные коды

Если у вас есть аккаунт разработчика (платный), то вы можете смотреть видео на ITunes

1

AVFoundation очень мощная структура, но требует немного большего набора и понимания, чем MPMoviePlayerController. Я настоятельно рекомендую Dinesh рекомендовать смотреть видео WWDC, посмотреть пример кода и прочитать документацию. Документация достаточно хороша для понимания концептуального понимания, но в ней отсутствуют некоторые детали, когда речь заходит о конкретных форматах видео. Для этого образец кода и экспериментирование хороши.

Если вы хотите пойти кадр за кадром, я думаю, что AVPlayerItem stepByCount: это путь.

// Setup a PlayerItem and a Player 
NSURL* movieURL = [NSBundle URLForResource:@"movie" withExtension:@"mov" subdirectory:@"" inBundleWithURL:[NSBundle mainBundle].bundleURL]; 
AVURLAsset* movieAsset = [AVURLAsset assetWithURL:movieURL]; 
AVPlayerItem* playerItem = [AVPlayerItem playerItemWithAsset:movieAsset]; 
AVPlayer* player = [AVPlayer playerWithPlayerItem:playerItem]; 

// setup the layer so you can see it 
AVPlayerLayer* playerLayer = [AVPlayerLayer playerLayerWithPlayer:player]; 
playerLayer.frame = self.view.bounds; 
[self.view.layer addSublayer:playerLayer]; 

// Verify our assumptions, in production code you should do something better 
NSAsset(player.currentItem.canStepForward, @"Assume this format can step forward");  
NSAsset(player.currentItem.canStepBackward, @"Assume this format can step backward"); 


[player.currentItem stepByCount:1]; // step forward a frame 

[player.currentItem stepByCount:-1]; // step backward a frame 
+0

Я знаю, что это довольно старое сообщение, но как бы создать новый AVAsset, который включает в себя «шаговые вперед/назад кадры»? Так как пользователь прокручивает между фреймами, он добавляет фреймы как изменчивый avasset или что-то еще? – Ibdakine

 Смежные вопросы

  • Нет связанных вопросов^_^