VideoRecorder 类详解
头文件部分
1 | // 构造函数 |
源文件部分
采集视频的具体步骤分为9步,涉及以下变量:
1 | AVPacket pkt; // 音频包 |
步骤 1:打开视频设备
1 | open_device(&fmt_ctx) |
步骤 2:打开视频解码器
1 | open_video_decoder(fmt_ctx, &dec_ctx) |
步骤 3:配置视频编码器并打开
1 | open_video_encoder(&H264_Codec_ctx, dec_ctx) |
步骤 4:创建输出流
1 | // 创建输出流 |
步骤 5:配置图像重采样上下文
1 | // 图像格式转换上下文 |
步骤 6:写头文件
1 | // 写头文件 |
步骤 7:配置视频数据存储容器 pFrameYUV
1 | // 初始化帧编号 |
步骤 8:读取数据并写入文件
1 | // 使用 av_read_frame() 读取音频数据,并写入文件 |
步骤 9:释放分配的空间
1 | // 释放缓冲区的数据和相关上下文 |
open_device(&fmt_ctx)的具体实现
1 | int VideoRecorder::open_device(AVFormatContext **fmt_ctx){ |
open_video_decoder(fmt_ctx, &dec_ctx)的具体实现
1 | int VideoRecorder::open_video_decoder(AVFormatContext *fmt_ctx, AVCodecContext **dec_ctx){ |
open_video_encoder(&H264_Codec_ctx, dec_ctx)的具体实现
1 | int VideoRecorder::open_video_encoder(AVCodecContext **H264_Codec_ctx, AVCodecContext *dec_ctx){ |
数据的读取与写入的具体实现
1 | while(flage && av_read_frame(fmt_ctx, &pkt) == 0){ |
说些什么吧!