javacpp-ffmpeg系列:

javacpp-FFmpeg系列之1:视频拉流解码成YUVJ420P,并保存为jpg图片

javacpp-FFmpeg系列之2:通用拉流解码器,支持视频拉流解码并转换为YUV、BGR24或RGB24等图像像素数据

javacpp-FFmpeg系列之3: 图像数据转换(BGR与BufferdImage互转,RGB与BufferdImage互转)

补充:

javacpp-FFmpeg系列补充:FFmpeg解决avformat_find_stream_info检索时间过长问题

前言:

在对实时媒体流进行拉流的时候,会遇到长时间无画面,甚至有时候达到一分钟,实在不能忍。于是开始定位问题所在,一开始怀疑是网络问题,经过其他方式拉流(vlc)测试发现不是网络的问题;那么只能是代码的问题了,定位代码时发现代码一直阻塞在avformat_find_stream_info这里。

关于avformat_find_stream_info函数的补充:

avformat_find_stream_info这个函数的作用不仅会检索视频的一些信息(宽、高、帧率等),而且会持续的读取和解码一些视频帧和音频帧,读取到的帧会放到缓存中。

一、解决办法

(1)rtsp解决办法

rtsp可以通过设置rtsp_transport为tcp的方式来降低检索时长,相对于默认的udp的很多限制,tcp会更可靠

(2)rtsp/rtmp通用解决办法

设置probesize,这个值可以限制最大的读取缓存,比如500*1024就是500k,500k可以保证高清视频也可以读取到一帧视频帧,如果太小就会导致读取不到完整视频帧的问题,所以这个大小需要通过实际情况进行控制。

设置max_analyze_duration,比如设置为5 * AV_TIME_BASE,这个值可以设置avformat_find_stream_info这个函数的持续时长,超过这个时间不结束也会结束,我们设置为5秒

二、其他解决办法

1、跳过avformat_find_stream_info函数

如果已知源流媒体源的信息,可以选择跳过这个函数,直接设置给AVFormatContext设置参数;

2、尝试手动读取视频帧和音频帧进行解析

当然也可以尝试读取一帧视频帧或音频帧,可以读取到一些基本信息

javacpp-FFmpeg系列补充:FFmpeg解决avformat_find_stream_info检索时间过长问题的更多相关文章

  1. SCCM2012 R2实战系列之十二:解决OSD分发时间过长的问题

    对于SCCM 2012 R2的初学者来说,能够成功分发操作系统可能已经是非常兴奋了.但在企业中会遇到客户提出的各种各样苛刻的需求.所以在平时实验过程中多站点客户的角度想问题,尽可能的贴近企业实际生产环 ...

  2. javacpp-FFmpeg系列补充:FFmpeg拉流截图实现在线演示demo(视频截图并返回base64图像,支持jpg/png/gif/bmp等多种格式)

    javacpp-ffmpeg系列: javacpp-FFmpeg系列之1:视频拉流解码成YUVJ420P,并保存为jpg图片 javacpp-FFmpeg系列之2:通用拉流解码器,支持视频拉流解码并转 ...

  3. 解决display none到display block 渲染时间过长的问题,以及bootstrap模态框导致其他框中input不能获得焦点问题的解决

    在做定制页面的时候,遇到这么一个问题,因为弹出框用的是bootstrap的自带的弹出框,控制显示和隐藏也是用自带的属性控制 控制显示,在触发的地方 例如botton上面加上 data-toggle=& ...

  4. FFmpeg源代码简单分析:avformat_find_stream_info()

    ===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...

  5. (转)FFmpeg源代码简单分析:avformat_find_stream_info()

    目录(?)[+] ===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结 ...

  6. FFMPEG系列一:Mac下FFMPEG编译安装配置及使用例子

    系统环境:10.13以前系统版本,没有升级到macOS High Sierra.正常情况是直接输入brew install ffmpeg即可安装ffmpeg,但是该过程还是有一些坑需要填. 一.mac ...

  7. ffmpeg 系列博客

    https://www.ffmpeg.org/download.html#build-macffmpeg 系列博文https://me.csdn.net/blog/leixiaohua1020http ...

  8. FFmpeg再学习 -- FFmpeg解码知识

    继续看雷霄骅的 课程资料 - 基于FFmpeg+SDL的视频播放器的制作 前面用了五个篇幅来讲 FFmpeg,其主要目的是为实现将图片转视频的功能. 总的来说,对于 FFmepg 多少有一些了解了.但 ...

  9. Atitit s2018.6 s6 doc list on com pc.docx Atitit s2018.6 s6 doc list on com pc.docx  Aitit algo fix 算法系列补充.docx Atiitt 兼容性提示的艺术 attilax总结.docx Atitit 应用程序容器化总结 v2 s66.docx Atitit file cms api

    Atitit s2018.6 s6  doc list on com pc.docx Atitit s2018.6 s6  doc list on com pc.docx  Aitit algo fi ...

随机推荐

  1. 开发ActiveX控件调用另一个ActiveX系列0——身份证识别仪驱动的问题

    程序员要从0下表开始,这篇是介绍这个系列的背景的,没有兴趣的人可以直接跳过. 为什么要开发ActiveX控件 由于工作需要,我们开发了一个网站,使用了一款身份证识别仪的网页ActiveX(OCX)插件 ...

  2. _DataStructure_C_Impl:Floyd算法求有向网N的各顶点v和w之间的最短路径

    #include<stdio.h> #include<stdlib.h> #include<string.h> typedef char VertexType[4] ...

  3. 循序渐进学Python 1 安装与入门

    1 安装 2 使用 2.1 运行程序 3 艺搜参考 by 2013年10月16日 安装 Windows安装版,源码,帮助文档: 使用 打开开始菜单中的Python GUI启动Python解释器: 启动 ...

  4. spring boot json 首字母大小写问题解决方案

     spring boot默认使用的json解析框架是jackson,对于.net转java的项目来说太坑了,首字母大写的属性会自动转为小写,然后前端就悲剧了,十几个属性的ViewModel增加几个Js ...

  5. 具体解释TCP协议的服务特点以及连接建立与终止的过程(俗称三次握手四次挥手)

    转载请附本文的链接地址:http://blog.csdn.net/sahadev_/article/details/50780825 ,谢谢. tcp/ip技术经常会在我们面试的时候出现,非常多公司也 ...

  6. mysql 查看触发器,删除触发器

    1. 查看所有触发器 2. 根据触发器名称看下相关触发器信息 3.  查看所有触发器 另一种查询触发器命令:    show triggers; 删除触发器命令: drop trigger trigg ...

  7. @Bean 和@ Component的区别

    @Component auto detects and configures the beans using classpath scanning whereas @Bean explicitly d ...

  8. sql中decode()重要函数使用

    decode()函数简介: 主要作用:将查询结果翻译成其他值(即以其他形式表现出来,以下举例说明): 使用方法: Select decode(columnname,值1,翻译值1,值2,翻译值2,.. ...

  9. opencv常用类总结

    1 Rect_ (const Point_< _Tp > &pt1, const Point_< _Tp > &pt2),Rect的这种两个点的构造函数的两个点 ...

  10. 去ioe

    http://baike.baidu.com/link?url=ntILcQyM_S7rpsbUrVu7vLEKHXNfSlJyWdWQnUo9LYO7JfoOpDEvbKldXobL0_nUEkXn ...