IOS理论知识音视频iOS 视频图像相关

iOS AVFoundation 视频暂停 多视频合成 流程

2016-08-05  本文已影响2302人  苏永茂

iOS AVFoundation 视频暂停 多视频合成 流程

AVCaptureSession 只有开始和结束 编码的方法 。他并没有暂停的接口 。

所以我们要做暂停就有两种思路 。

两种方法对应的功能点:

音视频中的时间 CMTime

一个c结构体 ,包括:

second=value/timescale

Float64 CMTimeGetSeconds(CMTime time)

创建

计算连个时间段的交集并集

--

(一)时间偏移量(就是暂停的时候)的计算

首先暂停的时候设置标志 discont = YES .

然后我们的操作都是在 CMSampleBufferRef 的编码回调中进行

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection;

}

```

//记录住这次buffer 的时间       

```
//sampleBuffer的起点时间
    CMTime pts = CMSampleBufferGetPresentationTimeStamp(sampleBuffer);
    //sampleBuffer 的持续时间
    CMTime dur = CMSampleBufferGetDuration(sampleBuffer);
    if (dur.value > 0) {
        // 得到这个buffer 的结束时间,记录下来
        pts = CMTimeAdd(pts, dur);
    }
    if (isVideo) {
        _lastVideo = pts;
    }else {
        _lastAudio = pts;
    }

```     

最后就可以存储了。       

(二)多段视频的拼接

上一篇 下一篇

猜你喜欢

热点阅读