FFMPEG录像推流时遇到的问题

FFMPEG录像推流时遇到的问题,记录一下供大参考

  1. ret = avformat_write_header( ofmt_ctx, NULL );

执行写入头后,所有的流的时间基都会被内部重新设置,所以并不你想象的把原来的时间直接入到avPACKET中就可以发送了。必须要把你每个流的PACKET时间转换到对应流的时间。 也就是要用新的时基进行转换一下。

  1. av_interleaved_write_frame(fmt_ctx, &enc_pkt);返回-22

发现是由于时间戳的问题,注意每个流中的时间基是一样的,之后的每个时间戳都是越来越大,出现不正确的时间就会返回-22. 这个我是在录像时发现的。同样推流时也会出现。

  1. avformat_free_context( ofmt_ctx ); 出错

查找了半天发现是由于我在初始化时把里面的一些已经分配好的内存进行了重新分配,导致他在释放时出错, 也就是说在上下文中有好多的内存都是内部自动分配,这样的内存就直接使用就可以。如果你修改了他在释放时会出错

  1. ret = avio_open( &ofmt_ctx->pb, (char*)m_szURL, AVIO_FLAG_WRITE );

当时也是怪了,当录像时总是打不开文件,返回非0,但文件却是创建了,只有1K。找了半天还是自己的问题,我用同一个名在别的地方打开了同时打开了一次, 造成冲突了。 其实录像时这个地方就是一个单纯的文件操作,所以不成功就只从文件角度去考虑就行了。 如文件独占,权限不够,路径问题等。都是我们自己的问题。

相关推荐
byxdaz6 小时前
利用ffmpeg库实现音频Opus编解码
ffmpeg·音视频·opus
byxdaz11 小时前
利用ffmpeg库实现音频AAC编解码
ffmpeg·音视频·aac
byxdaz18 小时前
ffmpeg库视频硬解码使用流程
ffmpeg
Yeauty1 天前
三分钟掌握视频分辨率修改 | 在 Rust 中优雅地使用 FFmpeg
rust·ffmpeg·音视频
zooKevin1 天前
腾讯云宝塔安装ffmpeg
ffmpeg·node.js·腾讯云
小gpt&2 天前
03 介绍ffmpeg 视频解码流程
c++·qt·ffmpeg·音视频
AJi2 天前
Android音视频框架探索(一):多媒体系统服务MediaServer
android·ffmpeg·音视频开发
年轮不改3 天前
Ubuntu 配置 ffmpeg 开发环境
linux·ubuntu·ffmpeg
却道天凉_好个秋3 天前
linux(centos8)下编译ffmpeg
linux·运维·ffmpeg