linux下qt实现vlc视频播放器,Qt编写视频播放器(vlc内核)
在研究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内核)相关推荐
- linux下qt的文件打包,【最详细最完整】在Linux 下如何打包免安装的QT程序?
版权声明:嵌入式linux相关的文章是我的学习笔记,基于Exynos 4412开发板,一部分内容是总结,一部分是查资料所得,大家可以自由转载,但请注明出处! https://blog.csdn.net ...
- linux下的网络音乐播放器,Linux_Songbird离开后 Linux下可以替代它的10个音乐播放器推荐,正如我们早先提到的一样, Son - phpStudy...
Songbird离开后 Linux下可以替代它的10个音乐播放器推荐 正如我们早先提到的一样, Songbird 已经离开了Linux羊群而开源的牧草地将变得更加翠绿.但是,Linux将用什么来取代这 ...
- 【QT】linux下alsa库的移植和QT中音视频的处理笔记
一.音频的输入 linux下有一个开源的音频库----alsa库,实现了录音的功能,alsa库包含如下内容: alsa-lib-1.0.22.tar.bz2 ------- alsa的核心支持库 al ...
- Linux 下编译、安装、配置 QT
打算做嵌入式图像处理,计划方案嵌入式Linux+OpenCV+QT,昨天简单入门OpenCV今天看看QT,QT就先弄Linux下面的,回家之前争取把基本的摸通,然后能在板子上跑起来. 软件环境 Lin ...
- Linux下一款可以使用命令行的pdf阅读器
Zathura是linux下一款用命令行控制打pdf阅读器,并且基本打使用方法和vim很相似.对于喜欢键盘操作的用户来说的确是一个不错的选择. ubuntu下的安装命令: sudo apt-get i ...
- [Linux] linux下安装配置 zookeeper/redis/solr/tomcat/IK分词器 详细实例.
今天 不知自己装的centos 出现了什么问题, 一直卡在 启动界面, 找了半天没找见原因(最后时刻还是发现原因, 只因自己手欠一怒之下将centos删除了, 而且选择的是在本地磁盘也删除. ..让我 ...
- Linux下的qt5.7Qftp类,[翻译] Qt QFtp功能无法被Qt 5 Network系列模块替代的说明
Qt4下Qt提供了QFtp类以完成FTP相关的操作,但是Qt5不再提供QFtp类了,取而代之的是QNetworkAccessManager,QNetworkRequest和QNetworkReply等 ...
- linux qt编译命令,linux下使用命令模式去编译Qt程序
1.打开终端输入,qmake -v ,如果提示版本信息正,就可以编译程序了. 2.当前目录切换到程序源代码目录,cd /home/likewei/untitled2 3.生成untitled2.pro ...
- Linux下使用mpg123实现简单的MP3音乐播放器(记录自己的学习路程)
主要功能及实现: 1,播放,暂停及继续,上一曲下一曲和退出 2,实现顺序循环播放等功能 3,可根据不同格式(.mp3)导入歌曲 完整代码: #include <stdio.h> #incl ...
- linux下开发basic程序设计,使用 Visual Basic 编写基于 Unity3D 的计算器
随着 .NET 全平台战略的推进,微软正在让以 C# 为先锋的 .NET 拥有跨平台特性.这个过程中一直有人想知道其它 .NET 语言对跨平台的支持有什么改进,熟悉 C# 但是喜欢用 VB 的我也不例 ...
最新文章
- 2-sat问题,输出方案,几种方法(赵爽的论文染色解法+其完全改进版)浅析 / POJ3683...
- messageSource can't replace {0} by params
- python json.loads()中文问题-python中文编码json中文输出问题
- 快速配置MPLS ×××
- 在 .NET Core 3.0 中实现 JIT 编译的 JSON 序列化,及一些心得与随想
- 关于apache的虚拟主机配置
- 服务器文件绝对路径,服务器文件绝对路径
- Audiority TS-1 Transient Shaper for Mac(TS-1瞬态整形器)
- 华硕win10键盘失灵_华硕键盘失灵一键修复的方法_win10华硕快捷键失灵的解决方法...
- 29、NeRV: Neural Reflectance and Visibility Fields for Relighting and View Synthesis
- nginx 启动报错问题排查,和阿里云盾卸载方法
- Android连接逍遥模拟器
- android4.4 音量控制,android4.4调整音量调节速度
- 在KubeSphere中部署微服务(阡陌)+ DevOps
- seedlab:V** tunneling The Container Version
- 主数据标准化项目阶段划分、实施难点及应对措施经验分享
- HDMI编码器E300
- Windows11 安装IIS的步骤
- 2021年年度总结 虎虎生威 继往开来
- 访问 IIS 元数据库失败