Gam*_*ads 6 objective-c decoder ios avassetreader cmsamplebufferref
场景:
我正在编写一个iOS 应用程序来尝试解码videoFile.mp4. 我使用AVAssetReaderTrackOutput和AVAssetReader来解码视频文件中的帧。这非常有效。videoFile.mp4我基本上使用以下核心逻辑来获取每一帧。
代码:
AVAssetReader * videoFileReader;
AVAssetReaderTrackOutput * assetReaderOutput = [videoFileReader.outputs objectAtIndex:0];
CMSampleBufferRef sampleBuffer = [assetReaderOutput copyNextSampleBuffer];
Run Code Online (Sandbox Code Playgroud)
sampleBuffer这里是每个视频帧的缓冲区。
问题:
sampleBuffer获得每个返回的时间戳copyNextSampleBuffer?PS:请注意,我需要以毫秒
为单位的时间戳。
我终于得到了我的问题的答案。以下2行可以获取从返回的帧时间戳sampleBuffercopyNextSampleBuffer
CMTime frameTime = CMSampleBufferGetOutputPresentationTimeStamp(sampleBuffer);
double frameTimeMillisecs = CMTimeGetSeconds(frameTime) * 1000;
Run Code Online (Sandbox Code Playgroud)
时间戳在 中返回seconds。因此将其乘以1000转换为milliseconds
| 归档时间: |
|
| 查看次数: |
2037 次 |
| 最近记录: |