初始化输出格式:
    avformat_alloc_output_context2申请输出上下文
    avformat_new_stream在媒体文件上添加一个新的流
    添加视频流信息
    初始化编码器
    avcodec_find_encoder根基输出格式结构体的编码器id获取编码器
    avcodec_alloc_context3申请编码器上下文
    填充编码器上下文的数据结构(编码器id,码率,分辨率,帧率,像素格式等)
    如果是H264:av_opt_set
    avcodec_open2打开编码器
    avcodec_parameters_from_context从输出格式结构体填充编码器上下文
    初始化视频帧
    av_frame_alloc申请帧数据资源
    av_frame_get_buffer申请buff从帧数据中
    sws_getContext初始化帧转换上下文
    avio_open打开输出文件
    avformat_write_header写视频流的头
    开始循环录屏
    获取一帧数据
    XGetImage截屏
    av_frame_make_writable确保AVFrame是可写的
    填充一个AVFrame帧的的data段XGetPixel,XDestroyImage
    视频帧转换 将RGB24格式转换为需要的格式
    av_frame_make_writable确保AVFrame是可写的
    sws_scale将获取的RGB帧转换为需要的帧格式
    编码
    av_packet_alloc申请一个包的资源
    avcodec_send_frame向编码器发送一个帧
    avcodec_receive_packet接收编码的一个包
    写入一个包
    av_packet_rescale_ts重新调整包的时间戳从编码器到流的时间基值上
    av_interleaved_write_frame写一个编码后的包到媒体文件
    av_packet_unref释放包占用的资源
    停止录屏
    编码一个值为NULL的帧并写入文件中
    av_write_trailer写文件尾
    释放资源
    av_frame_free
    av_packet_free
    avcodec_free_context
    sws_freeContext
    avformat_free_context
    关闭x11
    XCloseDisplay