Qt编写视频播放器(vlc内核)
在研究qt+vlc的过程中,就想直接做个播放器用于独立的项目,vlc还支持硬件加速,不过部分电脑硬件不支持除外。用vlc的内核写播放器就是快,直接调用api就行,逻辑处理和ui展示基本上分分钟的事情,最好加点美化那就更加完美了,市面上很多播放器是vlc内核写的,或者ffmpeg写的。
可执行文件下载:https://pan.baidu.com/s/1KHTsgQUvtzWa3rLB_Tmo7A
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 <QThread> 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
Qt编写视频播放器(vlc内核)的更多相关文章
- Ubuntu菜鸟入门(十六)—— 安装视频播放器vlc
sudo add-apt-repository ppa:videolan/master-daily sudo apt-get update sudo apt-get install vlc Ubunt ...
- 使用Android的OpenGL编写视频播放器
Android自身有MediaPlayer播放器,为什么还要使用OpenGL?因为使用OpenGL可以实现更多的效果,比如对视频翻转一定角度,加任意特效,多视频合并播放等,类似“激萌”的APP应该就是 ...
- 基于VLC的视频播放器
原文:基于VLC的视频播放器 最近在研究视频播放的功能,之前是使用VideoView.在网上看了一下,感觉不是很好,支持的格式比较少,现在网络视频的格式各种各样,感觉用VideoView播放起来局限性 ...
- 22_Android中的本地音乐播放器和网络音乐播放器的编写,本地视频播放器和网络视频播放器,照相机案例,偷拍案例实现
1 编写以下案例: 当点击了"播放"之后,在手机上的/mnt/sdcard2/natural.mp3就会播放. 2 编写布局文件activity_main.xml <Line ...
- VLC媒体视频播放器 v3.0.2官方版
https://www.videolan.org/ VLC media player http://www.pc6.com/softview/SoftView_52483.html VLC ...
- Centos7下修复 视频播放器(先 安装VLC视频播放器)
用最新的CentOS7发现没有视频播放器,于是在http://pkgs.org/上查找,发现了nux dextop仓库上有, 于是到他的官网上http://li.nux.ro/repos.html查了 ...
- Atitit.web 视频播放器classid clsid 大总结quicktime,vlc 1. Classid的用处。用来指定播放器 1 2. <object> 标签用于包含对象,比如图像、音
Atitit.web 视频播放器classid clsid 大总结quicktime,vlc 1. Classid的用处.用来指定播放器 1 2. <object> 标签用于包含对象,比如 ...
- 在Ubuntu18.04.2LTS上安装视频播放器smplayer/vlc
在Ubuntu18.04.2LTS上安装视频播放器smplayer/vlc 一.前言 在Ubuntu上的视频播放器质量很差,没有解码器,非常的不方便,于是我们需要手动去安装适合我们的播放器,比如smp ...
- linux安装vlc视频播放器
文章来自转发 最近,打算在centos7.2上安装一个叫MPlayer的视频播放器,但是折腾好久,得到的结果只是可以播放,但是却没有声音.无奈之下另寻他路.最后选择安装VLC视频播放器. 我的linu ...
随机推荐
- (转)解决Win7/8硬盘占用高方案汇总
写在前面 在Windows7时代,很少人会抱怨硬盘占用率高的问题.但是到了Windows7/8.1时,硬盘占用率成为一个扰人的问题.硬盘占用率经常100%会导致系统卡.慢,而且也很伤硬 ...
- CI框架 -- 核心文件 之 Loader.php(加载器)
顾名思义,装载器就是加载元素的,使用CI时,经常加载的有: 加载类库文件:$this->load->library() 加载视图文件:$this->load->view() ...
- 由“如何取得CPU的温度与型号”学到的知识延伸WQL
[Base]:WMI是一项核心的 Windows 管理技术:用户可以使用 WMI 管理本地和远程计算机.WQL就是 WMI 中的查询语言,翻译成中文好像可以成为 Windows 管理规范查询语言. 1 ...
- 笔记关闭fn功能
使用笔记本在vs开发中调试需要加fn+10进行调试,一点都不方便,使用fn+esc(fnLock)这个功能就可以关闭fn功能
- IE8不支持数组的indexOf方法
在IE8下有个js错误,但是在其它浏览器下(Firefox, Chrome, IE9)下面都很正常.后来调试发现原因是在IE8下,js数组没有indexOf方法. 在使用indexOf方法前,执行一下 ...
- STUN,TURN,ICE
STUN,TURN,ICE WebRTC
- Mysql:This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME 错误解决
From: http://blog.chinaunix.net/uid-22414998-id-2945656.html This version of MySQL doesn’t yet suppo ...
- Oralce SQLPlus 以及shell脚本中spool输出到文件时的格式化输出
http://blog.csdn.net/gyanp/article/details/7903056 1) 格式调整有以下参数 set echo on/off ...
- ubuntu 12.04 上网体验
买了新的电脑,装的系统ubuntu12.04. 但是开始的时候无法使用有线网络,也没有办法连上无线网络.这相当于一个与世界剥离的裸机器,很是郁闷.于是在网上买了一个无线网卡tplink721, 但是 ...
- tomcat设置debug模式
1.设置 编辑catalina.bat,在 rem Guess CATALINA_HOME if not definedset "CURRENT_DIR=%cd%"if not & ...