在研究qt+vlc的过程中,就想直接做个播放器用于独立的项目,vlc还支持硬件加速,不过部分电脑硬件不支持除外。用vlc的内核写播放器就是快,直接调用api就行,逻辑处理和ui展示基本上分分钟的事情,最好加点美化那就更加完美了,市面上很多播放器是vlc内核写的,或者ffmpeg写的。

1:多线程实时播放rtsp视频流

2:支持windows+linux+mac

3:多线程显示图像,不卡主界面

4:自动重连网络摄像头

5:可设置边框大小即偏移量和边框颜色

6:可设置是否绘制OSD标签即标签文本或图片和标签位置

7:可设置两种OSD位置和风格

8:可设置是否保存到文件以及文件名

9:可播放本地视频文件,支持设置帧率

10:支持h265视频流+rtmp等常见视频流

11:可暂停播放和继续播放

12:支持回调模式和句柄两种模式

13:自动将当前播放位置和音量大小是否静音以信号发出去

14:提供接口设置播放位置和音量及设置静音

#ifndef VLCTHREAD_H

#define VLCTHREAD_H

#include

class QLabel;

class libvlc_instance_t;

class libvlc_media_t;

class libvlc_media_player_t;

class VlcThread : public QThread

{

Q_OBJECT

public:

enum VlcState {

VlcState_NothingSpecial = 0,

VlcState_Opening = 1,

VlcState_Buffering = 2,

VlcState_Playing = 3,

VlcState_Paused = 4,

VlcState_Stopped = 5,

VlcState_Ended = 6,

VlcState_Error = 7

};

explicit VlcThread(QObject *parent = 0);

~VlcThread();

protected:

void run();

private:

bool stopped;           //停止线程标志位

bool isPlayVideo;       //开始播放标志位

bool isPauseVideo;      //暂停播放标志位

bool isStopVideo;       //停止播放标志位

bool isReadPosition;    //读取当前位置标志位

QLabel *lab;            //显示播放视频标签

QString fileName;       //文件名称

QString suffix;         //文件拓展名

libvlc_instance_t *vlcInst;

libvlc_media_t *vlcMedia;

libvlc_media_player_t *vlcPlayer;

public:

//获取文件名称

QString getFileName()   const;

//获取拓展名

QString getSuffix()     const;

private slots:

//读取文件长度

void readLength();

//获取当前位置

void readPosition();

//开始播放

void playVideo();

//暂停播放

void pauseVideo();

//停止播放

void stopVideo();

signals:

//开始播放信号

void playStart();

//停止播放信号

void playStop();

//暂停播放信号

void playPause();

//当前播放时长

void filePositionReceive(uint position, bool isPlay);

//总时长

void fileLengthReceive(uint length);

//音量大小

void fileVolumeReceive(int volume, bool mute);

public slots:

//设置要播放的载体

void setWidget(QLabel *lab);

//设置文件

void setFileName(const QString &fileName);

//设置vlc参数

void setOption(const QString &args);

//设置缓存时长,单位毫秒

void setDelayTime(int delayTime);

//设置保存录像文件

void save(const QString &videoFilePath);

//设置视频宽高比例

void setWidthHeight(int width, int height);

//设置显示图片

void setImage(QLabel *lab, const QString &fileName, int width, int height);

//播放

void play();

//暂停

void pause();

//停止

void stop();

//停止线程

void stopAll();

//保存快照

void snapshot(const QString &imageFilePath);

//检测是否活着

bool getIsPlaying();

//获取当前状态

VlcState getStatus();

//获取长度

uint getLength();

//获取当前播放位置

uint getPosition();

//设置播放位置

void setPosition(int position);

//获取静音状态

bool getMute();

//设置静音

void setMute(bool mute);

//获取音量

int getVolumn();

//设置音量

void setVolumn(int volumn);

//获取音轨

int getTrack();

//获取音轨数量

int getTrackCount();

//设置音轨

void setTrack(int track);

};

#endif // VLCTHREAD_H

linux下qt实现vlc视频播放器,Qt编写视频播放器(vlc内核)相关推荐

  1. linux下qt的文件打包,【最详细最完整】在Linux 下如何打包免安装的QT程序?

    版权声明:嵌入式linux相关的文章是我的学习笔记,基于Exynos 4412开发板,一部分内容是总结,一部分是查资料所得,大家可以自由转载,但请注明出处! https://blog.csdn.net ...

  2. linux下的网络音乐播放器,Linux_Songbird离开后 Linux下可以替代它的10个音乐播放器推荐,正如我们早先提到的一样, Son - phpStudy...

    Songbird离开后 Linux下可以替代它的10个音乐播放器推荐 正如我们早先提到的一样, Songbird 已经离开了Linux羊群而开源的牧草地将变得更加翠绿.但是,Linux将用什么来取代这 ...

  3. 【QT】linux下alsa库的移植和QT中音视频的处理笔记

    一.音频的输入 linux下有一个开源的音频库----alsa库,实现了录音的功能,alsa库包含如下内容: alsa-lib-1.0.22.tar.bz2 ------- alsa的核心支持库 al ...

  4. Linux 下编译、安装、配置 QT

    打算做嵌入式图像处理,计划方案嵌入式Linux+OpenCV+QT,昨天简单入门OpenCV今天看看QT,QT就先弄Linux下面的,回家之前争取把基本的摸通,然后能在板子上跑起来. 软件环境 Lin ...

  5. Linux下一款可以使用命令行的pdf阅读器

    Zathura是linux下一款用命令行控制打pdf阅读器,并且基本打使用方法和vim很相似.对于喜欢键盘操作的用户来说的确是一个不错的选择. ubuntu下的安装命令: sudo apt-get i ...

  6. [Linux] linux下安装配置 zookeeper/redis/solr/tomcat/IK分词器 详细实例.

    今天 不知自己装的centos 出现了什么问题, 一直卡在 启动界面, 找了半天没找见原因(最后时刻还是发现原因, 只因自己手欠一怒之下将centos删除了, 而且选择的是在本地磁盘也删除. ..让我 ...

  7. Linux下的qt5.7Qftp类,[翻译] Qt QFtp功能无法被Qt 5 Network系列模块替代的说明

    Qt4下Qt提供了QFtp类以完成FTP相关的操作,但是Qt5不再提供QFtp类了,取而代之的是QNetworkAccessManager,QNetworkRequest和QNetworkReply等 ...

  8. linux qt编译命令,linux下使用命令模式去编译Qt程序

    1.打开终端输入,qmake -v ,如果提示版本信息正,就可以编译程序了. 2.当前目录切换到程序源代码目录,cd /home/likewei/untitled2 3.生成untitled2.pro ...

  9. Linux下使用mpg123实现简单的MP3音乐播放器(记录自己的学习路程)

    主要功能及实现: 1,播放,暂停及继续,上一曲下一曲和退出 2,实现顺序循环播放等功能 3,可根据不同格式(.mp3)导入歌曲 完整代码: #include <stdio.h> #incl ...

  10. linux下开发basic程序设计,使用 Visual Basic 编写基于 Unity3D 的计算器

    随着 .NET 全平台战略的推进,微软正在让以 C# 为先锋的 .NET 拥有跨平台特性.这个过程中一直有人想知道其它 .NET 语言对跨平台的支持有什么改进,熟悉 C# 但是喜欢用 VB 的我也不例 ...

最新文章

  1. 2-sat问题,输出方案,几种方法(赵爽的论文染色解法+其完全改进版)浅析 / POJ3683...
  2. messageSource can't replace {0} by params
  3. python json.loads()中文问题-python中文编码json中文输出问题
  4. 快速配置MPLS ×××
  5. 在 .NET Core 3.0 中实现 JIT 编译的 JSON 序列化,及一些心得与随想
  6. 关于apache的虚拟主机配置
  7. 服务器文件绝对路径,服务器文件绝对路径
  8. Audiority TS-1 Transient Shaper for Mac(TS-1瞬态整形器)
  9. 华硕win10键盘失灵_华硕键盘失灵一键修复的方法_win10华硕快捷键失灵的解决方法...
  10. 29、NeRV: Neural Reflectance and Visibility Fields for Relighting and View Synthesis
  11. nginx 启动报错问题排查,和阿里云盾卸载方法
  12. Android连接逍遥模拟器
  13. android4.4 音量控制,android4.4调整音量调节速度
  14. 在KubeSphere中部署微服务(阡陌)+ DevOps
  15. seedlab:V** tunneling The Container Version
  16. 主数据标准化项目阶段划分、实施难点及应对措施经验分享
  17. HDMI编码器E300
  18. Windows11 安装IIS的步骤
  19. 2021年年度总结 虎虎生威 继往开来
  20. 访问 IIS 元数据库失败

热门文章

  1. AdventureWorks安装问题总结 exe安装
  2. 1、【软件测试工具安装教程】
  3. SIM900A—发送、接收中英文短信
  4. Head First 深入浅出系列 电子书
  5. LAMMPS分子动力学模拟技术与应用 第一性原理计算方法及应用
  6. 进销存+php模板,PHP进销存源码 仓库管理系统 WEB进销存 php+mysql 网络版进销存
  7. 苹果cms V10 七色中文 二开苹果cms视频 图片 小说网站源码模板
  8. 怎样裁剪照片大小尺寸?如何在线编辑图片?
  9. mc正版服务器 创世神插件,我的世界创世神插件WorldEdit怎么安装
  10. 图像处理之调整对比度