av foundation record
TRANSCRIPT
NHNNEXTEunjooIm
iOSAVFoundation
RecordNHN NEXT
iOS Advanced
NHNNEXTEunjooIm
AVFoundation
이란?
▪ iOS and OS X 애플리케이션에서 시각/청각 미디어를 관리하는 Objective-C interface
▪ 오디오와 비디오를 녹음/녹화하고 편집하며 재생할 수 있음
▪ 단순히 비디오 재생을 원할 경우 AVKit을, 단순한 비디오 녹화를 원할 경우 UIKit 사용
출처: https://developer.apple.com/library/prerelease/content/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/00_Introduction.html#//apple_ref/doc/uid/TP40010188
NHNNEXTEunjooIm
AVFoundation
Stack
출처: https://developer.apple.com/library/prerelease/content/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/00_Introduction.html#//apple_ref/doc/uid/TP40010188
http://www.slideshare.net/invalidname/mastering-media-with-av-foundation
<iOS AVFoundation stack> <OS X AVFoundation stack>
Core Audio/OpenAL
가장 저레벨의 오디오 스트리밍 프레임워크
Media Player 전체 화면 비디오 플레이어
AV Foundation오디오 재생을 위한Objective-C 래퍼
Core Video 동영상에 Quartz 효과
Core Media미디어 샘플과 타이밍을 재현하는 구조를 지닌
C 기반 프레임워크
<iOS Media Framworks>
NHNNEXTEunjooIm
Asset재생 (1)
출처: https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/02_Playback.html#//apple_ref/doc/uid/TP40010188-CH3-SW1
▪ AVPlayer 객체로 직접 Asset을 전달하지 않음
▪ 대신 Asset의 상태를 관리하는 AVPlayerItem 객체 사용
▪ AVPlayerItem은 asset의 track에 맞는 AVPlayerItemTrack을 지님
NHNNEXTEunjooIm
Asset재생 (2)
출처: https://developer.apple.com/library/prerelease/content/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/00_Introduction.html#//apple_ref/doc/uid/TP40010188
▪ AVPlayerLayer 레이어를 사용할 뷰 설정
▪ AVPlayer 객체 생성
▪ asset을 위한 AVPlayerItem 객체를 생성하고상태 관찰을 위해 Key-Value observing 사용
▪ 아이템이 재생 준비 상태가 되면 버튼 활성화
▪ 아이템을 다 재생하면 플레이어의 헤드를 맨 앞으로 설정
<AVAsset Playback simple example>
https://github.com/luvgaram/AVFoundation_Example/tree/master/AVFoundation_Asset_Playback
NHNNEXTEunjooIm
Asset편집
▪ 빠른 속도
▪ 모바일을 위해서 만들어졌기 때문에,데이타를 저장하고 불러오는 것이 빠르고 효율적
▪ AVMutableComposition 클래스를 이용해서 오디오/비디오를 편집할 수 있음
▪ 기존 Asset들을 조합하여 새로운 Asset 생성 가능
출처: https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/03_Editing.html
NHNNEXTEunjooIm
오디오 녹음/비디오 녹화
(1)
▪ 단일 AVCaptureSession 객체를 사용해서 여러 개의 인풋/아웃풋 데이터 플로우를 조합 가능
▪ 카메라나 마이크 등 인풋을 위한 AVCatureDevice 객체 준비
▪ 인풋 포트를 설정할 AVCaptureInput 서브클래스 객체 준비
▪ 아웃풋을 위한 AVCaptureOutput 서브클래스 객체 준비
▪ 인풋으로부터 아웃풋로의 데이터 플로우를 만들 AVCaptureSession 객체 준비
출처: https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/04_MediaCapture.html#//apple_ref/doc/uid/TP40010188-CH5-SW2
NHNNEXTEunjooIm
오디오 녹음/비디오 녹화
(2)
▪ AVCaptureConnection: 인풋과 아웃풋 사이의 커넥션
▪ (주의: Media Capture로 전면 카메라와 후면 카메라를 동시에 캡쳐할 수는 없음)
출처: https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/04_MediaCapture.html#//apple_ref/doc/uid/TP40010188-CH5-SW2
NHNNEXTEunjooIm
오디오 녹음/비디오 녹화
(3)
출처: https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/04_MediaCapture.html#//apple_ref/doc/uid/TP40010188-CH5-SW2
▪ 인풋에서 아웃풋으로의 데이터 플로우를 만드는 AVCaptureSession 객체 생성
▪ 필요한 인풋 타입의 AVCaptureDevice 객체 찾기
▪ 기기를 위한 AVCaptureDeviceInput 객체 생성
▪ 비디오 파일을 만드는 AVCaptureMovieFileOutput 객체 생성
▪ AVCaptureFileOutputRecordingDelegate 객체의델리게이트 구현
▪ 녹화 시작: [AVCaptureMovieFileOutput startRecordingToOutputFileURL:recordingDelegate:]
▪ 녹화 종료: [AVCaptureMovieFileOutput stopRecording]
<AVAsset Playback simple example>
https://github.com/luvgaram/AVFoundation_Example/tree/master/AVCam-iOSUsingAVFoundationtoCaptureImagesandMovies
NHNNEXTEunjooIm
참고자료
https://developer.apple.com/library/prerelease/content/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/00_Introduction.html#//apple_ref/doc/uid/TP40010188-CH1-SW3
AVFoundation Programming Guide
https://developer.apple.com/library/prerelease/content/samplecode/AVCam/Introduction/Intro.html
AVCam-iOS: Using AVFoundation to Capture Images and Movies
NHNNEXTEunjooIm
ThankYou