初始化比较慢
bingwenwuhen opened this issue · 4 comments
我这用GrabberTemplate4截图的时候,发现初始化步骤耗时是整个截图周期最长的一段,截图耗时1s多,单是
if(!initGrabber(url,fmt)) { return null; }
就要耗时1s,这个初始化操作能不能移到服务启动的时候进行初始化,然后在服务关闭的时候
进行以下释放操作?
av_free(buffer); freeAndClose();
不能。
initGrabber的工作是根据”当前传入的视频源地址“去建立网络连接/打开文件,解析视频源协议,分析视频格式,查找和初始化视频编解码器以及像素转换的初始化。
这里并不是简单的创建一个对象,然后复用就可以的。因为没办法提前知道当前传入的视频源它的视频源协议/视频源格式/视频源编解码等信息,所以这些步骤都是不可或缺的。
不能。
initGrabber的工作是根据”当前传入的视频源地址“去建立网络连接/打开文件,解析视频源协议,分析视频格式,查找和初始化视频编解码器以及像素转换的初始化。
这里并不是简单的创建一个对象,然后复用就可以的。因为没办法提前知道当前传入的视频源它的视频源协议/视频源格式/视频源编解码等信息,所以这些步骤都是不可或缺的。
那请问如果我想要500ms截一张图该如何实现?
不能。
initGrabber的工作是根据”当前传入的视频源地址“去建立网络连接/打开文件,解析视频源协议,分析视频格式,查找和初始化视频编解码器以及像素转换的初始化。
这里并不是简单的创建一个对象,然后复用就可以的。因为没办法提前知道当前传入的视频源它的视频源协议/视频源格式/视频源编解码等信息,所以这些步骤都是不可或缺的。那请问如果我想要500ms截一张图该如何实现?
我看了下GrabberTemplate4中提供连续截图功能,倒是可以借鉴一下,但是截取出的第二帧图片一直都是灰屏,这个是设置不对还是调用问题?
不能。
initGrabber的工作是根据”当前传入的视频源地址“去建立网络连接/打开文件,解析视频源协议,分析视频格式,查找和初始化视频编解码器以及像素转换的初始化。
这里并不是简单的创建一个对象,然后复用就可以的。因为没办法提前知道当前传入的视频源它的视频源协议/视频源格式/视频源编解码等信息,所以这些步骤都是不可或缺的。那请问如果我想要500ms截一张图该如何实现?
我看了下GrabberTemplate4中提供连续截图功能,倒是可以借鉴一下,但是截取出的第二帧图片一直都是灰屏,这个是设置不对还是调用问题?
我这边没办法复现这个问题,能描述一下具体情况吗?比如视频源信息和调试/报错信息等