按照原来视频设置了上下文参数,输出的视频文件大了十倍(yuv-h264),而且不知道怎么把视频时长给带上导致播放时没有显示进度条
AVFrame wanted_frame;
我可以通过以下步骤解决该问题:
针对视频文件大小变大的问题,可以对编码器的参数进行调整,以达到更好的压缩效果。具体来说,在使用FFmpeg的H.264编码器时,可以通过修改比特率、量化参数、码率控制模式等方式来控制输出视频的大小。
对于进度条显示的问题,需要将视频的时长信息写入文件的元数据中。可以通过FFmpeg的AVFormatContext结构体中的duration字段来获取原视频的时长,并将其写入到编码后的文件中。代码示例如下:
// 获取原视频时长
AVFormatContext *input_fmt_ctx = avformat_alloc_context();
avformat_open_input(&input_fmt_ctx, "input.mp4", NULL, NULL);
avformat_find_stream_info(input_fmt_ctx, NULL);
int64_t duration = input_fmt_ctx->duration;
// 设置输出文件的时长信息
AVFormatContext *output_fmt_ctx = avformat_alloc_context();
...
output_fmt_ctx->duration = duration;
...
用writetail那个函数就能显示进度条了,不执行那个函数就没有进度和时长信息