准备
ffmpeg 4.4
准备一段yuv420p的格式的视频原始数据
这里我们使用命令直接提取
ffmpeg -i .\beautlWorld.mp4 -pixel_format yuv420p -s 1280x720 yuv420p_1280x720.yuv
编码流程
大致可以分为以下几步:
1.初始化编码器并设置参数
2.初始化AVPacket和AVFrame,设置参数
3.读取视频文件,进行编码
4.释放内存,结束
编码
以下是完整代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
extern "C"
{
#include <libavcodec/avcodec.h>
#include <libavutil/time.h>
#include <libavutil/opt.h>
#include <libavutil/imgutils.h>
}
using namespace std;
const char* inFileName = "./yuv420p_1280x720.yuv";
const char* outFileName = "./encode_yuv420p_1280x720.h264";
int encode(AVCodecContext* codecContent, AVPacket* packet, AVFrame* frame, FILE* outFile)
{
//编码
int ret = avcodec_send_frame(codecContent, frame);
if (