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);

相关推荐
换个昵称都难21 小时前
webrtc音频调参(WebRTC M153/7985 APM + NetEq 100+ 参数表)
音视频
m0_614523551 天前
剪映数字人视频口播不自然怎么办?从音频断句到口型验收
音视频·视频编辑
Niuguangshuo1 天前
论文解读:Paraformer,非自回归中文 ASR 的并行 Transformer
算法·音视频·语音识别
ai小陈1 天前
LTX2.5音视频生成任务验收实战:批量记录与音画质量检查
人工智能·python·深度学习·ai·音视频·gpu算力
hz567891 天前
音频视频sdk开发实践:从实时通话到视频互动的完整方案
音视频·实时音视频·信息与通信
纽格立科技1 天前
把警报链从纸面接到机房——读德国DAB+自动安全警报实施指南
车载系统·音视频·信息与通信·传媒
hz567891 天前
视频会议私有化部署指南:架构、成本与实施流程详解
安全·音视频·实时音视频·信息与通信
纽格立科技1 天前
9月10日,德国的收音机会自己醒来——DAB+自动安全警报进入常态运行
车载系统·音视频·信息与通信·传媒
AI码农小姐姐2 天前
AI漫剧推文短视频动态镜头实现:FFmpeg zoompan 与 Ken Burns 效果实践
人工智能·音视频·ai工具·ai漫剧
技灵AI2 天前
ChatGPT Images 2.5 深度解读:延迟减半、Sketch 草图与 Flare/Sunburst 双模型 API
人工智能·gpt·aigc·音视频·images2.5