FFmpeg将mp4格式视频转为flv

本文详细介绍了使用FFmpeg将mp4格式视频转换为flv格式的步骤,包括打开输入文件、创建输出文件、设置编解码参数、写入头信息、处理每一帧数据、写入文件尾以及释放资源。转换过程中涉及关键API的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转换视频格式步骤

1、打开输入文件;
2、创建并打开一个空文件存储 flv 格式音视频数据;
3、遍历输入文件的每一路流,每个输入流对应创建一个输出流,并将输入流中的编解码参数直接拷贝到输出流中;
4、写入新的多媒体文件的头;
5、在循环遍历输入文件的每一帧,对每一个packet进行时间基的转换;
6、写入新的多媒体文件;
7、给新的多媒体文件写入文件尾;
8、释放相关资源。
在这里插入图片描述

相关API

文件操作
相关API

源码:

#include <libavutil/timestamp.h>
#include <libavformat/avformat.h>

#include "ConverterVideo.h"

static void log_packet(const AVFormatContext *fmt_ctx, const AVPacket *pkt, const char *tag) {
   
    AVRational *time_base = &fmt_ctx->streams[pkt->stream_index]->time_base;
    printf("%s: pts:%s pts_time:%s dts:%s dts_time:%s duration:%s duration_time:%s stream_index:%d\n",
    tag,
    av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, time_base),
    av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, time_base),
    av_ts2str(pkt->duration), av_ts2timestr(pkt->duration, time_base),
    pkt->stream_index);
}

int converterVideo(const char *in_filename, const char *out_filename) {
   
    AVOutputFormat *outfmt = NULL; //输出格式
    AVFormatContext *infmt_ctx = NULL, *outfmt_ctx = NULL;//输入、输出上下文
    AVPacket pkt;
    
    int ret , i;
    int stream_index = 0;
    int *stream_mapping = NULL;//数组用于存放输出文件流的Index
    int stream_mapping_size = 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值