2012-08-10 4 views
11

AVPlayer에서 비디오를 뒤로 재생하고 싶습니다. 속도 속성을 -1.0으로 변경해 보았습니다. 제대로 작동했지만 원활하지 않았습니다. 동영상을 원활하게 재생할 수있는 방법이 있습니까?iOS에서 비디오를 반대로 재생

+4

비디오가 모든 X 프레임에 키 프레임을 가지고 있기 때문에 비디오 재생이 흥미로운 것은,이고, 키 프레임 사이의 프레임이 단지의 변경 사항을 저장하는 이전 프레임의 이미지 (전체 프레임이 아님). 그래서 비디오를 뒤로 재생하는 것은 프레임의 순서를 변경하는 것이 아닙니다. 프레임이 이전 프레임과 관계가 있기 때문입니다 (다음 프레임과는 관계가 없습니다!). 일반적으로 프레임의 순서는 변경하지 않습니다. 역방향 버전, 대부분의 경우 다시 비디오를 렌더링해야합니다. 이것은 동영상에 문제가있는 일반적인 이유입니다. – holex

+0

매우 흥미로운 질문입니다. – Daniel

+1

감사합니다. 비디오 역방향 재생을위한 솔루션을 제안 해 주시겠습니까? –

답변

6

의견에서 언급했듯이 문제는 키 프레임과 대부분의 코덱이 역방향으로 재생되도록 설계되지 않았기 때문입니다. 편집시 비디오를 실제로 되돌릴 필요가없는 비디오를 다시 인코딩하는 두 가지 옵션이 있습니다.

  1. 모든 프레임을 키 프레임으로 설정하십시오. 키 프레임에 의존하는 H.264와 같은 코덱에서이 작업을 잘 수행했습니다. 기본적으로 모든 프레임이 키 프레임이면 각 프레임은 이전 프레임에 의존하지 않고 디코딩 될 수 있으므로 앞으로 재생하는 것과 사실상 동일합니다.
  2. 키 프레임과 비 키 프레임을 사용하지 않는 코덱을 사용하십시오. 기본적으로 모든 프레임은 항상 키 프레임입니다. PhotoJPEG는 iOS에서 재생되는지 확실하지 않지만 이러한 옵션 중 하나입니다. 나는 그렇게 생각할 것이다. 그것은 Mac에서 잘 작동합니다.

이 옵션 중 하나를 선택하면 일반적인 "키 프레임 x 프레임마다"인코딩 된 비디오에 비해 파일 크기가 커집니다.

0

현재 항목의 끝에 도달 한 다음 비율을 음수 값으로 설정해야합니다. 이런 식으로 뭔가 :

-(void)reversePlay { CMTime durTime = myPlayer.currentItem.asset.duration; if (CMTIME_IS_VALID(durTime)) { [myPlayer seekToTime:durTime toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero]; [myPlayer setRate:-1.0]; } else NSLog(@"Invalid time"); }

소스 : https://stackoverflow.com/a/16104363/701043

관련 문제