基于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
相关产品推荐
相关产品推荐

