![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ffmpeg组件化再封装
文章平均质量分 76
H&A
这个作者很懒,什么都没留下…
展开
-
ffmpeg组件化再封装(五)
6 将AVFrame保存成图片/* * after done with return AVFrame,user must free it with av_frame_free() **/AVFrame *ConvertVideoFrameTo(AVFrame *piFrame,uint32_t nWidth, uint32_t nHeight,enum AVPixelFormat sPixFmt){ int nRet; if(NULL == piFrame)原创 2021-07-24 21:17:59 · 351 阅读 · 1 评论 -
ffmpeg组件化再封装(四)
现在,ffmpeg的组件化完成了,我们使用它们来处理一些媒体。1 保存视频帧为文件void SaveVideoSimulateToFile(){ OutputFileHandler *piOutput = OutputFileHandler::CreateOutputFileHandler("aaa.mp4"); if(piOutput) { OutputStreamHandler *piOutStream = OutputStreamHa...原创 2021-07-24 21:17:25 · 227 阅读 · 0 评论 -
ffmpeg组件化再封装(三)
上一篇对各个类型的Handler做了简单介绍,事实上,它们也并不复杂,仅是对ffmpeg做了功能划分并做了结构化而已。 下面对一些实现进行一些说明:1 InputFileHandler 在ffmpeg的示例代码中,对输入数据的处理是从上游到下游的,从文件中每读取到一个AVPacket,就做对应的处理。然而,在我们这里的结构中,恰恰想法,是位于数据流下方的handler向上方的handler读取数据,这时就有了问题。 假如输入文件有vi...原创 2021-07-24 21:16:47 · 189 阅读 · 1 评论 -
ffmpeg组件化再封装(二)
现在,我们介绍AVIOHandler.h,它定义了组件的基类,是整个代码实现的基石。 首先,说明一下自己的思路:媒体处理是流式的 处于处理链条上的不同处理器的功能各不相同 处理器读取输入,进行处理,然后输出 有了这些之后,经过仔细思考,定义了如下两个主要类型:AVIOHandler和ReadPoint。 AVIOHandler,表示一个处理器,处理器的类型有多种,其功能各不相同。它从N个输入读取数据,然后将结果“写出”到多个输出中,...原创 2021-07-24 21:16:08 · 225 阅读 · 1 评论 -
ffmpeg组件化再封装(一)
一开始学习ffmpeg的时候,看着各种示例代码中长长的c函数,心里总是莫名地升起几分烦躁,感觉这代码梳理起来实在有点费劲。等到对ffmpeg的API有了一定的了解,也看了不少示例后,又觉得其中重复地代码非常的多,于是有了用C++对ffmpeg进行组件化的想法,后来慢慢动手,一点点添加代码,修改代码,测试,终于磨出来了一个基本的实现。 相信我,这个过程拖得时间太长了,现在总算勉强可以告一段落了。 首先,说明一下这个再封装的目的:简单来说,就是将ffmpe...原创 2021-07-24 21:15:23 · 402 阅读 · 0 评论