You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于C语言FFmpeg API的MP4重封装问题:首文件正常后续损坏

RTSP摄像头视频分段存储MP4:后续文件无法播放的修复方案

我用C语言实现了一个简单程序,从RTSP摄像头拉取视频并按1分钟分段保存为MP4文件。第一个文件可以正常播放,但第二个及之后的文件虽然包含帧数据,却内容混乱无法播放。检查程序流程后确认各文件的创建逻辑完全一致,尝试过修改指针、释放资源等操作都未解决,目标是让后续文件和首文件表现一致。


修复方案

问题根源在于写入文件尾前未设置输出时长,添加时长设置代码后问题解决。

修复代码片段:

int actual_duration = (int)difftime(time(NULL), start_time);

for (int i = 0; i < output_ctx->nb_streams; i++) {
    output_ctx->streams[i]->duration = actual_duration * AV_TIME_BASE;
}

output_ctx->duration = actual_duration * AV_TIME_BASE;
printf("DURATION = %d\n", output_ctx->duration);

// 设置输出上下文的起始时间
output_ctx->start_time = 0;

av_write_trailer(output_ctx);

程序核心流程

Open RTSP Stream 
A: Create File n context 
   Remux to file n 
   Wait for minute to change 
   Close File n context  
   increment n Goto A

附带Makefile及rtsp_remux.c完整代码。


内容的提问来源于stack exchange,提问作者RichardP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 22:02:05