抓图的话当然可以用QImage来实现,但是得先把yuv图像转成图像再通过QImage保持,比较麻烦。这里直接通过ffmpeg从视频流中抓取图片,也就是在yuv渲染之前抓取。

整个takeSnapshot函数如下所示

void QHSnapshoter::takeSnapshot(AVFrame *frame, std::string filePath)
{AVFrame *avFrame=frame;int width=frame->width;int height=frame->height;AVFormatContext *formatContext=nullptr;avformat_alloc_output_context2(&formatContext, nullptr, nullptr, filePath.c_str());if(!formatContext){std::cout<<"could not alloc output format from file extension!"<<std::endl;}AVCodec *codec = avcodec_find_encoder(AV_CODEC_ID_MJPEG);if(!codec){std::cout<<"failed to find encoder!"<<std::endl;}AVStream *stream = avformat_new_stream(formatContext, codec);if (!stream){std::

基于FFmpeg的视频播放器之十三:抓图相关推荐

  1. 基于FFmpeg的视频播放器之十五:录像

    一.效果 1.录制视频 2.播放录制的视频 二.原理 将上一篇基于FFmpeg的视频播放器之十四:remuxing中的代码直接用于录像是行不通的,会存在下列问题. 1.因为可以从任意时间点开始录制,此 ...

  2. 基于FFmpeg的视频播放器之十一:倍速播放

    倍速播放通常有两种方式:一种是变速变调,另一种是变速不变调 一.变速变调 这种方法的原理就是音频重采样.比如说44100Hz采样率的音频,每秒钟有44100个采样点,如果我们要加速为200%播放,最简 ...

  3. 基于FFmpeg的视频播放器之十二:seek

    seek是播放器的常用操作,也是衡量播放器好坏的重要标志之一. 一.效果 下面是对正在播放的4K视频执行seek操作 二.原理 1.av_seek_frame FFmpeg提供了av_seek_fra ...

  4. 基于FFmpeg的视频播放器之十六:完结

    学习FFmpeg个人认为是不需要买书的,只需利用好下面四种资源 1.优秀的博客,比如雷神的博客:https://blog.csdn.net/leixiaohua1020 2.FFmppeg的exanm ...

  5. 从零开始学习音视频编程技术(七) FFMPEG Qt视频播放器之SDL的使用

    从零开始学习音视频编程技术(七) FFMPEG Qt视频播放器之SDL的使用 原文地址:http://blog.yundiantech.com/?log=blog&id=10 前面介绍了使用F ...

  6. 从零开始学习音视频编程技术(六) FFMPEG Qt视频播放器之显示图像

    从零开始学习音视频编程技术(六) FFMPEG Qt视频播放器之显示图像 原文地址:http://blog.yundiantech.com/?log=blog&id=9 前面讲解了如何用FFM ...

  7. 基于libVLC的视频播放器之二:使用VLC-Qt播放RTSP流

    此篇是 使用VLC浏览器插件播放RTSP流的姊妹篇. 一.直接使用libVLC libVLC是VLC media player多媒体框架的核心引擎和接口,开发者使用它能轻松的创建大量具有VLC特性的应 ...

  8. QT软件开发-基于FFMPEG设计视频播放器-解码音频(三)

    QT软件开发-基于FFMPEG设计视频播放器-CPU软解视频(一) https://xiaolong.blog.csdn.net/article/details/126832537 QT软件开发-基于 ...

  9. QT软件开发-基于FFMPEG设计视频播放器-软解图像(一)

    QT软件开发-基于FFMPEG设计视频播放器-CPU软解视频(一) https://xiaolong.blog.csdn.net/article/details/126832537 QT软件开发-基于 ...

最新文章

  1. Linux下遍历文件夹的实现
  2. React-Native Navigator 过渡动画卡顿的解决方案
  3. GetLBText()和GetWindowText()区别
  4. The mook jong 计数DP
  5. 一起谈.NET技术,.NET缓存机制探讨与比对
  6. Python基础——文件拷贝(从手动实现到shutil的使用)
  7. 乐理基础-十二平均律,三分损益法,五度相生法
  8. 2020最新中高阶Android面试题总结-上(附解题思路)
  9. osgEarth的Rex引擎原理分析(一一四)rex与mp引擎的关系
  10. steps_per_epoch=2000,epochs=100之间的区别
  11. iPhone 录音如何去除背景杂音增强录音品质
  12. 淘宝天猫运营,淘宝客推广,店铺流量提升
  13. 原生js实现无缝滚动
  14. 2022-2027年中国端羟基聚丁二烯行业发展监测及投资战略研究报告
  15. 数学基础task07 多元微分学
  16. 便宜寄快递攻略,3.5R寄全国
  17. GDI+ 绘制砂岩含量图版
  18. 一个Vue页面的内存泄露分析
  19. 基于IPMI的FRU
  20. Java程序员如何撰写简历?

热门文章

  1. ArcGIS案例学习笔记2_1
  2. 【鼠标§鼠标右键菜单清理四招】
  3. 计算机软著在线登记,计算机软件著作权登记收费标准
  4. CleanMyMacX软件怎么样?实际使用效果功能讲解
  5. 【数据说第十二期】如何在留存数据中,找到业务的提升点?
  6. A2-02-24.DML- Inserting Data into A Table Using MySQL INSERT Statement
  7. 怎样做一个好的网管?
  8. Bootstrap学习之表单
  9. Word图片上传控件(WordPaster)更新-2.0.15版本
  10. Ubuntu PPPoE拨号上网