Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pause & resume video capture for same file with AVFoundation in iOS

I'm trying to figure out how I can implement functionality to repeatedly pause and resume video capture in a single session, but have each new segment (the captured segments after each pause) added to the same video file, with AVFoundation. Currently, every time I press "stop" then "record" again, it just saves a new video file to my iphone's album and starts capturing to a separate/new file. I need to be able to press the "record/stop" button over and over... only capture video & audio when record is active... then when the "done" button is pressed, have a single AV file with all the segments together. And all this needs to happen in the same capture session / preview session.

the only way I can think of to try this is when the "done" button is pressed, taking each individual output file and combining them together into a single file... But im pretty sure the processing time to basically paste a bunch of separate clips together won't be acceptable. Plus, it just seems like this will be a really messy & unnecessary way to go about this, with way too much code.

Is there any simple way to just pause video capture within a single session and simply resume capture to the same file? Or any other ideas?

If it's not too much trouble, sample code would help me out a ton... I'm still learning & teaching myself, so I'm not great with following the lingo & terminology in explanations. Thanks

edit: this is the project I am starting with to learn AVFoundation... so this is the code I am looking to alter to achieve the above functionality: http://developer.apple.com/library/ios/#samplecode/AVCam/Introduction/Intro.html

like image 570
Daniel McCarthy Avatar asked Feb 16 '13 01:02

Daniel McCarthy


People also ask

What does it mean to have pause?

a cessation of activity because of doubt or uncertainty; a momentary hesitation. any comparatively brief stop, delay, wait, etc.: I would like to make a pause in my talk and continue after lunch.

What is Pause give example?

To pause is defined as to stop for a brief period of time. An example of pause is to stop a movie for a couple of minutes. verb. 5.

What type of word is pause?

verb (used without object), paused, paus·ing. to make a brief stop or delay; wait; hesitate: He paused at the edge of the pool for a moment.


1 Answers

Instead of using the movie file output from the capture session, you could use AVCaptureVideoDataOutput and in your delegate, pass the samples to an instance of AVAssetWriterInput. Then you could decouple the previewing from the recording. If your delegate does not forward the buffers to the asset writer, there's no recording for that portion.

When you wanted to start recording a second (and subsequent) session to the same file, you would need to adjust the timestamps so that they are sequential from the point at which you stopped, and you'd need to ensure that you make the same adjustment to both audio and video so they stay in sync. So a little fiddly, but certainly workable.

Edit: there's a sample iPhone app that demonstrates this.

like image 133
Geraint Davies Avatar answered Oct 26 '22 22:10

Geraint Davies