ffmpeg 2个图片合并为视频

  1. 打开图片1,打开解码器

  2. 打开图片2,打开解码器

  3. 打开输出文件

  4. 分配音视频文件封装实例
    avformat_alloc_output_context2(&out_fmt_ctx, nullptr, nullptr, dest_name);

    复制代码
    #include <libavformat/avformat.h>
    
    int avformat_alloc_output_context2(AVFormatContext **out_ctx,
                                       const AVOutputFormat *ofmt,
                                       const char *format_name,
                                       const char *filename);
  5. 打开输出流
    avio_open(&out_fmt_ctx->pb, dest_name, AVIO_FLAG_READ_WRITE);

    复制代码
    #include <libavformat/avformat.h>
    
    int avio_open(AVIOContext **s, const char *url, int flags);
  6. 创建编码器
    AVCodec *codec = avcodec_find_encoder(AV_CODEC_ID_H264);
    AVCodecContext *encodec = avcodec_alloc_context3(codec);

  7. 设置编码器参数(像素格式、视频宽高、帧率、时间基、关键帧间隔时间等)
    encodec->pix_fmt = AV_PIX_FMT_YUV420P;
    encodec->width = src_vStream->width();
    encodec->height = src_vStream->height();
    encodec->framerate = (AVRational{25,1});
    encodec->time_base = (AVRational{1,25});
    encodec->gop_size = 12;
    encodec->max_b_frames = 0; // 0 表示不要B帧
    if(out_fmt_ctx->oformat0>flag & AVFMT_GLOBALHEADER){
    // 允许操作系统显示该视频的缩略图
    encodec->flags = AV_CODEC_FLAG_GLOBAL_HEADER;
    }

  8. 打开编码器

  9. 创建新的数据流
    avformat_new_stream(out_fmt_ctx, nullptr);

  10. 把编码器参数实例复制给目标结构体
    avcodec_parameters_from_context(dest_vStream->codecpar, encodec);

  11. 设置视频流索引
    dest_vStream->codecpar->codec_tag = 0;

  12. 写文件头
    avformat_write_header(out_fmt_ctx, nullptr);

  13. 对视频帧重新编码写入文件(2遍)

  14. 写入文件尾

av_write_trailer(out_fmt_ctx);

相关推荐
Android系统攻城狮10 小时前
Linux Gstreamer深度解析之gst_audio_encoder_get_frame_samples_min调用流程与实战(六十)
linux·运维·服务器·音视频·gstreamer音视频·音视频进阶·gstreamer音视频进阶
黑妹天下第一乖10 小时前
第09讲 · 多媒体与音频 SDK:硬件编解码与端侧语音
人工智能·嵌入式硬件·深度学习·机器人·音视频·iot
ken223213 小时前
(aaa) piper TTS 文字转语音 安装、使用;与 calibre 电子书朗读 (****)
音视频
开开心心就好16 小时前
本地文件搜索工具推荐,占用小速度还快
智能手机·ffmpeg·ocr·word·音视频·网络攻击模型·安全架构
阿明副业观察17 小时前
动漫AI视频创作工具在哪找到的?2026年最新动漫AI视频平台与软件指南
人工智能·ai作画·aigc·音视频·ai写作
Eric.4618 小时前
ComfyUI 本地部署 AI 漫剧与 AI 视频流水线:消费级显卡显存优化、角色一致性工程实战
人工智能·自动化·音视频·comfyui·ai漫剧
指针向南18 小时前
视频截图发黑先检查透明区域
图像处理·人工智能·计算机视觉·音视频
我科绝伦(Huanhuan Zhou)18 小时前
oracle坏块导致备份不了
数据库·oracle·ffmpeg
daad77719 小时前
手写一个 LPC 语音 Codec:从一帧真实音频看编码到解码的全过程
人工智能·音视频·语音识别