목표 : AVCaptureMovieFileOutput
을 사용하여 .mov 파일에 비디오를 녹화하십시오. 동영상이 녹화되는 동안 S3에 업로드하고 싶습니다. 업로드 부분은 멀티 파트 업로드로 가능해야합니다. (맥 OS X의 10.8 응용 프로그램)AVCaptureMovieFileOutput으로 작성하는 동안 NSInputStream으로 .mov 파일 읽기
문제 : 파일이 AVCaptureMovieFileOutput
와 기록 및 크기에서 성장하는 동안 나는 덩어리에서 .mov 파일에서 읽을 어떻게 ? 내가 지금까지 무슨 짓을
:
// session = AVCaptureSession with audio and video inputs
fileOutput = [[AVCaptureSession alloc] init];
[session addOutput:fileOutput]
[session startRunning]
[fileOutput startRecordingToOutputFileURL: fileUrl recordingDelegate:self]
// In async dispatch queue
inputStream = [NSInputStream inputStreamWithFileAtPath:fileUrl]
// schedule in run loop, open and run
이 시점에서 나는 NSStreamEventHasBytesAvailable
에 위임 객체에 stream:handleEvent:
메시지를 받기 시작. 그러나 몇 초가 지나면 메시지가 멈 춥니 다 (250.000-300.000 바이트 (0.2MB)의 전체 바이트 이후) .mov 파일의 크기가 10MB보다 커지더라도이 작업이 수행됩니다.
질문 :
왜
NSInputStream
대표는 스트림 이벤트가 계속하지 않는 이유는 무엇입니까?초기 사용 가능한 데이터는 신뢰할 수 있습니까?
전체적으로 실현 가능한 접근법입니까? 아니면 제가 원하는 것을 성취 할 수있는 또 다른 방법이 있습니까?
고마워요!
입력 해 주셔서 감사합니다. Geraint. 이 기사에서는 파일에 오디오가 들어 있지 않음을 언급합니다. 제 경우에는 파일에 오디오가 녹음되어 있습니다. 그게 불가능 해? 감사합니다 –
녹음하는 동안 파일을 복사하려는 경우, 나는 괜찮다고 생각합니다. 해석 할 필요가 없으며, 작성된 부분 만 복사하십시오. 그러나주의가 필요합니다 : 파일이 닫힐 때 mdat 청크의 크기가 업데이트됩니다. 대부분 파일은 순차적으로 작성되어야합니다. 내 샘플은 인코딩하는 동안 인코딩 된 비디오 데이터를 사용하는 방법을 보여줍니다. 즉, 오디오를 별도로 작성해야합니다 (비디오 인코딩에만 하드웨어를 사용하는 경우). –
그래, 내가 올바르게 당신을 이해한다면, 당신의 코드 샘플은 (비록 흥미 롭다) 그와 관련이 없다? 디스크에 기록 된 .mov 파일의 전체 사본이 필요합니다. 동영상을 다른 기기로 스트리밍하는 데 집중하셨습니까? –