FFMpeg 多路视频裸流截图保存为图片有马赛克以及图片不更新延迟的问题
项目中多路RTSP流输入每路输入又有多路不同分辨率的输出 ,FFMpeg 通过RTSP拉流 经过海思转码之后 通过srs_librtmp 推送RTMP到服务器,动态增加输入输出等等 ,这部分的工作已经做得差不多了。现在项目中有个小的需求截图功能,本身海思自身是有截图的例子的,但是 海思自带的截图需要占据一个vpss 和venc通道。而且这个分辨率是得开启编码通道的时候就指定好的,项目中需求是每路输出的不同分辨率截图 ,因此通过海思自身的截图无法实现。
在网上搜了搜 可以使用FFMpeg实现 网上搜了搜也有类似代码 从网上复制了一份代码 稍微修改了之后,经过测试发现 截图的时候 隔着几秒 解出来的图片的时间OSD看基本上都是同一帧图片 ,可能几分钟之后才是一张不同的图片,而且马赛克严重 肉眼很明显的感觉,之前没怎么接触过FFMpeg,只能在网上搜不同的FFMpeg API,关于这个问题很少。后来不知道搜的什么 。意识到 马赛克的原因可能是解码出来的时候不是I帧 ,所以就按这个思路来解决,实际解决方法就是 只有碰到I帧的时候 才去解码。这样试了下 问题迎刃而解。图片延迟不更新的问题也解决了 。
现在还有 不同路的分辨率的分辨率不一样 ,需要做视频缩放,这个FFMpeg实现应该不难,
但是考虑到缩放保存图片可能会比较耗时,所以决定另开一个线程来做这块内容, 主线程 解码出来之后的AVFrame的数据直接扔给这个线程。这样 不会影响主线程的拉流解码工作。
实际上 FFMpeg截图的话 如果是在VENC编码出来之后再做截图的话就不涉及到缩放功能,
但是目前截图功能是在输入端做的,所以如果在输入端做的话就涉及到缩放的问题。
之所以没有在输出端做,是因为FFMpeg解码的时候 需要传一个根据AVPacket来解码解出来AVFrame,而目前的从队列中取出来的packet是普通的packet 中间不知道怎么把这个普通的packet转换成AVPacket,所以就放在输入端来做了 。有知道的可以给博主留言。。。。
FFMpeg 多路视频裸流截图保存为图片有马赛克以及图片不更新延迟的问题相关推荐
- FFmpeg系列(二)—— 音视频裸流转换:mp3转pcm、h264转YUV
文章目录 1.总流程 2.解析流程 3.解码流程 4.完整代码 1.总流程 创建解析器.解码器.AVPacket和AVFrame 打开文件,将mp3数据读入缓冲区 解析mp3数据(在 main 函数中 ...
- YUV视频裸流文件下载地址
YUV视频裸流文件下载地址:http://trace.eas.asu.edu/yuv/index.html 如果您觉得这篇博文有用,请访问我的个人站:http://www.stubbornhuang. ...
- FFmpeg解码H264裸流并转换成opencv Mat
感谢雷霄骅博士的在中文视频编解码的付出,http://blog.csdn.net/leixiaohua1020 最近要搞一些视频推流的事情,要解析H264裸流并且获取opencv格式的Mat数据给算法 ...
- windows下使用ffmpeg进行视频转换和截图。
author:fanfq(xiaoban) Email:fangqing.fan#gmail.com link:http://fanfq.iteye.com/admin/blogs/655569 ch ...
- FFmpeg从视频中提取音频保存为mp3文件
如何把视频文件中的音频数据提取出来,网络上有不少音频提取工具,但作为技术人员提到音视频处理,肯定会想到FFmpeg.本文介绍了如何基于FFmpeg从视频中提取音频,然后将音频保存为mp3格式的音频文件 ...
- ffmpeg多路视频推流,分别接流(不合并)
真是想不明白,都2022了,网上有关多路推流和接流的文章居然这么少!大部分都是多路视频流合并成一路,真是无语.下面我把探索的过程给出来让大家参考下 首先说明下,我有两个usb摄像头,在项目里肯定是网络 ...
- 基于FFmpeg H264 + G711A 音视频裸流合并 MP4文件 ( G711A 转 AAC)
https://blog.csdn.net/haiyangyunbao813/article/details/101788264
- ffmpeg抓取rtsp流并保存_详细解析RTSP框架和数据包分析(1)
0.引言 本文主要讲解RTSP框架和抓取RTSP数据包,进行详细分析.可以阅读以下几篇文章,能够帮助你更详细理解. 手把手搭建RTSP流媒体服务器 HLS实战之Wireshark抓包分析 HTTP实战 ...
- ffmpeg多路视频拼接
https://blog.csdn.net/hjwang1/article/details/108275966 ref:https://blog.csdn.net/a386115360/article ...
最新文章
- 计算机组装与维修案例分析,计算机组装毕业论文
- Linux学习总结(50)——grep查看打印匹配的下几行或前后几行使用总结
- 4个超神工作表技巧,还不快学起来!
- Android系统进程间通信(IPC)机制Binder中的Client获得Server远程接口过程源代码分析(3)...
- 【目标检测】CNN的训练图像与测试图像不一致的多尺度问题
- 数字化定量分析_数字化驱动下的华夏银行信用卡精细化智能服务
- 采用状态空间法求解八数码问题
- 免费域名邮箱如何申请?怎么给国外发邮件?
- 编译coccinelle-1.0.0-rc24时的错误Error: Unbound module Parmap以及解决方法
- MD5 32位加密
- CF1073D Berland Fair 二分+线段树
- 自定义tab(上面是图片 下面是文字)
- Tensorflow2.0 实现 YOLOv3(二):网络结构(common.py + backbone.py)
- 【SLAM】VINS-MONO解析——回环检测和重定位
- Cookie、Session、Token、JWT 看一篇就够了
- 安氏书店管理软件——您的首选
- 会计学 - 会计账户与复式记账
- 【思考】我奋斗了18年才和你坐在一起喝咖啡
- 杭电acm 4545魔法串(字符串处理)
- 汽车早讯丨庞大集团董事长回应高管降薪;一嗨租车达成新私有化协议
热门文章
- 5min搭建SSM项目
- 微信小程序 首页浮窗设计(含代码效果图)
- 【程序设计】多线程与锁
- Python爬虫实战系列(一)-request爬取网站资源
- 计算机待机快捷键,电脑待机快捷键【解答方式】
- Maple中的部分特殊函数及其定义
- datatype未定义是什么意思_vue里面的methods写了方法,为什么渲染的时候还是报未定义...
- phpexcel.php手册,PhpExcel中文帮助手册|PhpExcel使用方法
- 计算机无法识别显示器,usb显示器为何显示不出来 usb显示器显示不出来解决方法...
- jQuery Validate.js 清除验证