2012-05-23 3 views
2

슬로우 모션으로 iOS 장치에 비디오를 표시하고 싶습니다.iOS 프레임 별 프레임 비디오 재생 앞으로/뒤로

내보기에 동영상 (약 2 초 길이)과 슬라이더가 포함되어 있습니다.

사용자는 슬라이더를 움직여 프레임 단위로 동영상을 한 단계 씩 (앞뒤로) 이동할 수 있습니다.

MPMoviePlayerController은 프레임 단위로 단계 이동하는 기능이 부족합니다.

나는 약 MVAssetReader에 대해 읽었지만 구체적인 사용법은 없습니다.

고정 된 프레임 속도가 없으므로이 정보를 비디오의 메타 데이터에서 가져와야합니다. 정말 모든 프레임을 보여줄 필요가 있습니다.

누군가 내게 단서를 줄 수 있습니까?

WWDC 2010 샘플 코드의

답변

3

AV 플레이어 데모 샘플 코드가 작업 비디오에서 썸네일을 절단

에 도움이 될 수 편집 오디오 및 비디오에 관한 AV 편집 AV 재단 프레임 워크 및 다른 것들의 많은 WWDC 2010에 설명되어 있습니다 샘플 코드

당신이 다음

1

AVFoundation은 매우 강력한 프레임 워크이지만 좀 더 입력하고 MPMoviePlayerController보다 사용하기 위해 이해를 필요로 아이튠즈에서 비디오를 볼 수 있습니다 (유료) 개발자 계정이있는 경우. WWDC 비디오를보고 샘플 코드를보고 설명서를 읽으려면 Dinesh의 권장 사항을 적극 권장합니다. 이 문서는 개념적 이해를 얻기에 매우 유용하지만 실제 비디오 형식의 세부 사항에 대해서는 세부 사항이 부족합니다. 이를 위해 샘플 코드와 실험이 좋습니다.

프레임 단위로 이동하려는 경우 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을 만들 수 있습니까? 그래서 사용자가 프레임 사이를 스크롤하는 동안 프레임을 변경 가능한 아바 셋이나 다른 것과 비슷하게 추가하고 있습니까? – Ibdakine