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。找了半天还是自己的问题,我用同一个名在别的地方打开了同时打开了一次, 造成冲突了。 其实录像时这个地方就是一个单纯的文件操作,所以不成功就只从文件角度去考虑就行了。 如文件独占,权限不够,路径问题等。都是我们自己的问题。

相关推荐
活捉一个坏小孩13 天前
Nvidia FFmpeg安装说明
ffmpeg
WF_YL13 天前
如何删除 Oracle 过期 key / 数据,删除目的的key
ffmpeg
浩瀚之水_csdn13 天前
avcodec_find_decoder函数详解
ffmpeg
浩瀚之水_csdn16 天前
avcodec_parameters_copy详解
linux·人工智能·ffmpeg
不吃鱼的猫74820 天前
【ffplay 源码解析系列】02-核心数据结构详解
c++·ffmpeg·音视频
不吃鱼的猫74820 天前
【ffplay 源码解析系列】01-开篇-ffplay整体架构与启动流程
c++·架构·ffmpeg·音视频
REDcker22 天前
FFmpeg开发者快速入门
ffmpeg
不吃鱼的猫74822 天前
【从零手写播放器:FFmpeg 音视频开发实战】04-封装格式与多媒体容器
c++·ffmpeg·音视频
REDcker23 天前
FFmpeg完整文档
linux·服务器·c++·ffmpeg·音视频·c·后端开发
硬汉嵌入式23 天前
QEMU & FFmpeg作者Fabrice Bellard推出MicroQuickJS,一款面向嵌入式系统JavaScript引擎,仅需10K RAM
javascript·ffmpeg·microquickjs