一、前言

大部分的格式转换工具比如格式化工厂等,都用到了ffmpeg来处理,ffmpeg编译后生成的ffmpeg.exe、ffplay.exe、ffprobe.exe等可执行文件,其实就封装了众多牛逼的功能,ffprobe查看媒体文件头信息的工具,ffplay用于播放媒体文件的工具,尤其是ffmpeg.exe,强大的媒体文件转换工具,可以转换任何媒体文件,还可以用自己的 AudioFilter 以及 VideoFliter 进行处理和编辑,比如下面的一些功能。

  1. 列出支持的格式:ffmpeg -formats
  2. 剪切一段媒体文件:ffmpeg -i input.mp4 -ss 00:00:50.0 -codec copy -t 20 output.mp4
  3. 提取一个视频文件中的音频文件:ffmpeg -i input.mp4 -vn -acodec copy output.m4a
  4. 视频静音,即只保留视频:ffmpeg -i input.mp4 -an -vcodec copy output.mp4
  5. 从MP4文件中抽取视频流导出为裸的H264数据:ffmpeg -i output.mp4 -an -vcodec copy -bsf:v h264_mp4toannexb output.h264
  6. 使用AAC音频数据和H264视频生成MP4文件:ffmpeg -i test.aac -i test.h264 -acodec copy -bsf:a aac_adtstoasc -vcodec copy -f mp4 output.mp4
  7. 音频格式转换:ffmpeg -i input.wav -acodec libfdk_aac output.aac
  8. 将一个MP4的文件转换为一个GIF动图:ffmpeg -i input.mp4 -vf scale=100:-1 -t 5 -r 10 image.gif

既然这些工具这么牛逼,那是不是可以考虑做一个功能,直接程序调用这些可执行文件做处理呢?当然,QProcess上场了,他可以直接调用可执行程序或者直接执行命令,然后能够拦截输出打印的信息,管道的形式read出来,这样就非常直观了,可以在调用可执行文件执行的时候,将打印信息全部输出。

二、功能特点

  1. 多线程实时播放视频流+本地视频+USB摄像头等。
  2. 支持windows+linux+mac,支持ffmpeg3和ffmpeg4,支持32位和64位。
  3. 多线程显示图像,不卡主界面。
  4. 自动重连网络摄像头。
  5. 可设置边框大小即偏移量和边框颜色。
  6. 可设置是否绘制OSD标签即标签文本或图片和标签位置。
  7. 可设置两种OSD位置和风格。
  8. 可设置是否保存到文件以及文件名。
  9. 可直接拖曳文件到ffmpegwidget控件播放。
  10. 支持h265视频流+rtmp等常见视频流。
  11. 可暂停播放和继续播放。
  12. 支持存储单个视频文件和定时存储视频文件。
  13. 自定义顶部悬浮条,发送单击信号通知,可设置是否启用。
  14. 可设置画面拉伸填充或者等比例填充。
  15. 可设置解码是速度优先、质量优先、均衡处理。
  16. 可对视频进行截图(原始图片)和截屏。
  17. 录像文件存储支持裸流和MP4文件。
  18. 支持qsv、dxva2、d3d11va等硬解码。
  19. 支持opengl绘制视频数据,极低CPU占用。
  20. 支持嵌入式linux,交叉编译即可。

三、效果图

四、相关站点

  1. 国内站点:https://gitee.com/feiyangqingyun/QWidgetDemo
  2. 国际站点:https://github.com/feiyangqingyun/QWidgetDemo
  3. 个人主页:https://blog.csdn.net/feiyangqingyun
  4. 知乎主页:https://www.zhihu.com/people/feiyangqingyun/
  5. 体验地址:https://blog.csdn.net/feiyangqingyun/article/details/97565652

五、核心代码

FFmpegTool

ffmpeg 命令_Qt音视频开发11-ffmpeg常用命令相关推荐

  1. 流媒体服务器开发——SRS 4.0与WebRTC音视频通话丨音视频开发丨嵌入式开发丨FFmpeg丨iOS音视频开发

    SRS 4.0与WebRTC音视频通话 1. 音视频高薪岗位都需要什么技能点 2. WebRTC的技术点分析 3. SRS 4.0如何使用WebRTC 视频讲解如下,点击观看: 流媒体服务器开发--S ...

  2. ffmpeg获取设备支持的分辨率_Qt音视频开发6-ffmpeg解码处理

    一.前言 采用ffmpeg解码,是所有视频监控开发人员必备的技能,绕不过去的一个玩意,甚至可以说是所有音视频开发人员的必备技能.FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开 ...

  3. FFmpeg 工具:音视频开发都用它,快@你兄弟来看丨音视频工具

    (本文基本逻辑:ffmpeg 常用命令介绍 → ffplay 常用命令介绍 → ffprobe 常用命令介绍) 从事音视频开发的程序员几乎都应该知道或使用过 FFmpeg.FFmpeg 是一个开源软件 ...

  4. c++ vlc读取摄像头_Qt音视频开发1-vlc解码播放

    ## 一.前言 最开始接触视频监控这块的时候,用的就是vlc作为解码的内核,主要是因为vlc使用简单方便,直接传入一个句柄即可,简单几行代码就可以实现一个视频流播放,很适合初学者使用,也推荐初学者用q ...

  5. mega2560电脑识别不到端口后_Qt音视频开发41-人脸识别嵌入式

    一.前言 大概几年前搞过一套嵌入式linux上的人脸识别程序,当然人脸识别的核心算法并不是自己开发的,关于人脸识别算法这一块,虽然有众多的开源库可以用,甚至还可以用opencv搞算法训练深度学习之类的 ...

  6. 【音视频开发技术概要】技术背景、学习路线、业界大拿、岗位行业分析

    音视频的知识纷繁复杂,自学非常困难,既需要非常扎实的基础知识,又需要有很多的工程经验:本文就从音视频开发,开源框架,视频,业界大神,书籍推荐,就业方向分析,为广大开发者学习音视频技术提供便利. 首先我 ...

  7. 一文搞懂音视频开发技术点及职业发展方向

    音视频的知识纷繁复杂,自学非常困难,既需要非常扎实的基础知识,又需要有很多的工程经验:本文就从音视频开发,开源框架,视频,业界大神,书籍推荐,就业方向分析,为广大开发者学习音视频技术提供便利. 首先我 ...

  8. 一个强大好用的音视频工具,ffmpeg

    列出设备 /usr/local/bin/ffmpeg -list_devices true -f dshow -i dummy 保存文件 /usr/local/bin/ffmpeg -f dshow ...

  9. java音视频开发技术_FFmpeg音视频核心技术精讲与实战

    百度网盘2 D2 h2 i; n# o0 D# M* C! [: B1 M 第1章 学习指南[课程提供200+问题与答案库]4 a# t% {  h6 ^: E# O [你遇到的坑,别人已经出坑了,课 ...

最新文章

  1. 全国大学生智能汽车竞赛英飞凌AURIXTM培训--应用篇 : 3月30日直播
  2. win7笔记本电脑如何分割和重命名磁盘
  3. OpenCV密集光流算法的实例(附完整代码)
  4. c++ array赋值问题
  5. Service-Oriented Architecture,SOA(转)
  6. 个人博客代码_Jekyll + Github Pages 搭建个人免费博客
  7. 会玩!抖音上线拉春联特效 “拜个抖音年”活动参与人数超65万
  8. python 3.6.3自带的编程调试环境包括了_序章:资料预处理(python3.6 可用fortran unformatted sequencial data读取模块)...
  9. 【渝粤教育】国家开放大学2019年春季 1349学前教育科研方法 参考试题
  10. Linux 常用的命令
  11. win10照片不能下一张的解决办法
  12. arp-scan使用
  13. BufferedReader.readLine() 日文乱码
  14. Strong-Convexity:强凸性
  15. 《Temporal AA , SMAA and MSAA》
  16. 表示学习(Representation Learning)之局部表示(Local Representation)与分布式表示(Distributed Representation)
  17. 由ip地址和子网掩码求网络号、主机号、广播地址(超详细)
  18. 字节跳动以 50 亿元收购 Pico 入局 VR;哪吒汽车与华为达成合作;韩国计划禁止苹果和谷歌向开发者抽取佣金 | EA周报...
  19. 《社交app攻击风险应对策略》
  20. 算法学习过程入门篇(2)-算法初步

热门文章

  1. mysql timestamp 类型_MySQL中“诡异”的TIMESTAMP数据类型
  2. CTF-window和linux下命令执行的知识
  3. java的多态是什么意思_Java中的多态是什么?
  4. 域socket(domain socket)和ipsocket(TCP/IP socket)区别
  5. python bytes()函数
  6. python numba.jit(该装饰器用于将Python函数编译为本机代码、python运算加速器)
  7. tf.name_scope与tf.variable_scope
  8. java根据enum某个属性值获取枚举项
  9. Spring小知识——profile配置
  10. springboot 加载mybatis的流程