비디오 위에 디스플레이 오버레이를 표시하고이 디스플레이를 포함하여 해당 비디오를 내보내려고합니다. 나는 AVFoundation Framework, AVCompositions, AVAssets 등을 들여다 보았다. 그러나 나는 아직도 이것을 성취 할 아이디어가 없다. AVSynchronizedLayer라는 클래스가있어 동영상과 동기를 부여 할 수 있지만 애니메이션을 적용하지 않으려는 경우 동영상의 모든 프레임에 시간 표시를 오버레이합니다. 어떤 충고? 이 같은iOS AVFoundation - 비디오 및 시간 표시 위에 시간 표시
8
A
답변
5
뭔가
감사합니다 ...
(NB가 : 훨씬 더 큰 프로젝트에서 발췌, 그래서 실수로 불필요한 부분을 포함했을 수 있습니다).시계/애니메이션의 CALayer를 가져와 var myClockLayer (설정 도구로 1/3 정도 사용)로 설정해야합니다.
여기에는 들어오는 비디오에 오디오와 비디오의 두 트랙 만 있다고 가정합니다. 더 많은 정보가 있으면 "asTrackID : 2"에서 트랙 ID를보다 신중하게 설정해야합니다.
AVURLAsset* url = [AVURLAsset URLAssetWithURL:incomingVideo options:nil];
AVMutableComposition *videoComposition = [AVMutableComposition composition];
AVMutableCompositionTrack *compositionVideoTrack = [videoComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
AVAssetTrack *clipVideoTrack = [[url tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];
[compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, [url duration]) ofTrack:clipVideoTrack atTime:kCMTimeZero error:&error];
AVMutableVideoComposition* videoComposition = [[AVMutableVideoComposition videoComposition]retain];
videoComposition.renderSize = CGSizeMake(320, 240);
videoComposition.frameDuration = CMTimeMake(1, 30);
videoComposition.animationTool = [AVVideoCompositionCoreAnimationTool videoCompositionCoreAnimationToolWithAdditionalLayer:myClockLayer asTrackID:2];
AVMutableVideoCompositionInstruction *instruction = [AVMutableVideoCompositionInstruction videoCompositionInstruction];
instruction.timeRange = CMTimeRangeMake(kCMTimeZero, CMTimeMakeWithSeconds(60, 30));
AVMutableVideoCompositionLayerInstruction* layerInstruction = [AVMutableVideoCompositionLayerInstruction videoCompositionLayerInstructionWithAssetTrack:clipVideoTrack];
instruction.layerInstructions = [NSArray arrayWithObject:layerInstruction];
videoComposition.instructions = [NSArray arrayWithObject: instruction];
exporter = [[AVAssetExportSession alloc] initWithAsset:saveComposition presetName:AVAssetExportPresetHighestQuality] ;
exporter.videoComposition = videoComposition;
exporter.outputURL=url3;
exporter.outputFileType=AVFileTypeQuickTimeMovie;
[exporter exportAsynchronouslyWithCompletionHandler:^(void){}];
2
는 당신이 각 프레임을 처리하기 위해 AVCaptureVideoDataOutput를 사용하여이 대답
https://stackoverflow.com/a/4944594/379941을 참조 할 수 있습니다 처리 frame.You을 기록 AVAssetWriter를 사용할 수 있다고 생각합니다.
사용 AVAssetWriterPixelBufferAdaptor의 appendPixelBuffer : withPresentationTime : 방법은
을 수출하고 난 강력하게 프레임을 처리하기 위해 OpenCV의를 사용하는 것이 좋습니다. 좋은 튜토리얼입니다.
OpenCV 라이브러리는 매우 훌륭합니다.
관련 문제
- 1. 시간 문제 표시 xcode
- 2. 조건부 시간 표시
- 3. 시간 표시 형식 문제
- 4. RadDatePicker의 날짜와 시간 표시
- 5. 레일 애플리케이션에 응답 시간 표시
- 6. NSTimer 및 NSDateFormatter를 사용하여 시간 코드 표시
- 7. 블로그와 같은 날짜 및 시간 표시
- 8. 사용자 로캘의 날짜 및 시간 표시
- 9. php 대 txt 표시 - 택배 및 시간
- 10. 설정된 시간 동안 이미지 및 스크립트 표시
- 11. 날짜 비교 및 남은 남은 시간 표시
- 12. 비디오 포맷, AVFoundation 및 UTI
- 13. JQGrid 툴팁, 표시 시간 길이
- 14. 사용자에게 현지 시간 표시? PHP
- 15. 탭 상태 표시 줄 시간
- 16. telerik 차트로 시간 데이터 표시
- 17. Java 표시 Windows UTC 시간
- 18. 일정 시간 동안 레이블 표시
- 19. Sharepoint 2007 : 현재 시간 표시
- 20. Silverlight에서 슬라이더의 엄지 위로 현재 시간 표시
- 21. uilabel 또는 uitextfield에서 노래의 재생 시간 표시
- 22. 비디오 스트리밍 로딩 시간
- 23. SSRS에 시간 태그 표시 매개 변수
- 24. 테이블 태그 안에 시간 형식으로 달력 표시
- 25. OS를 표시 할 시간과 복구 옵션을 표시 할 시간
- 26. AVFoundation - Retiming CMSampleBufferRef 비디오 출력
- 27. 월드 타임 위젯 - 도시의 시간 표시
- 28. 날짜 선택기 형식 wp7로 시간 표시
- 29. 시간 지연 후 패널을 표시 하시겠습니까?
- 30. 페이지를 새로 고침 할 때 시간 표시
동일한 일을하고 싶습니다.이 작업을 수행 했습니까? Adam의 대답에 따라 "myClockLayer"를 어떻게 업데이트 할 수 있는지 알려주세요. – Nikunj
당신은 이것에 관해 무엇이라도 얻었 느냐? –