在研究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内核)的更多相关文章

  1. Ubuntu菜鸟入门(十六)—— 安装视频播放器vlc

    sudo add-apt-repository ppa:videolan/master-daily sudo apt-get update sudo apt-get install vlc Ubunt ...

  2. 使用Android的OpenGL编写视频播放器

    Android自身有MediaPlayer播放器,为什么还要使用OpenGL?因为使用OpenGL可以实现更多的效果,比如对视频翻转一定角度,加任意特效,多视频合并播放等,类似“激萌”的APP应该就是 ...

  3. 基于VLC的视频播放器

    原文:基于VLC的视频播放器 最近在研究视频播放的功能,之前是使用VideoView.在网上看了一下,感觉不是很好,支持的格式比较少,现在网络视频的格式各种各样,感觉用VideoView播放起来局限性 ...

  4. 22_Android中的本地音乐播放器和网络音乐播放器的编写,本地视频播放器和网络视频播放器,照相机案例,偷拍案例实现

    1 编写以下案例: 当点击了"播放"之后,在手机上的/mnt/sdcard2/natural.mp3就会播放. 2 编写布局文件activity_main.xml <Line ...

  5. VLC媒体视频播放器 v3.0.2官方版

    https://www.videolan.org/    VLC media player http://www.pc6.com/softview/SoftView_52483.html    VLC ...

  6. Centos7下修复 视频播放器(先 安装VLC视频播放器)

    用最新的CentOS7发现没有视频播放器,于是在http://pkgs.org/上查找,发现了nux dextop仓库上有, 于是到他的官网上http://li.nux.ro/repos.html查了 ...

  7. Atitit.web 视频播放器classid clsid 大总结quicktime,vlc 1. Classid的用处。用来指定播放器 1 2. <object> 标签用于包含对象,比如图像、音

    Atitit.web 视频播放器classid clsid 大总结quicktime,vlc 1. Classid的用处.用来指定播放器 1 2. <object> 标签用于包含对象,比如 ...

  8. 在Ubuntu18.04.2LTS上安装视频播放器smplayer/vlc

    在Ubuntu18.04.2LTS上安装视频播放器smplayer/vlc 一.前言 在Ubuntu上的视频播放器质量很差,没有解码器,非常的不方便,于是我们需要手动去安装适合我们的播放器,比如smp ...

  9. linux安装vlc视频播放器

    文章来自转发 最近,打算在centos7.2上安装一个叫MPlayer的视频播放器,但是折腾好久,得到的结果只是可以播放,但是却没有声音.无奈之下另寻他路.最后选择安装VLC视频播放器. 我的linu ...

随机推荐

  1. (转)【多媒体封装格式详解】--- AAC ADTS格式分析

     出自:http://blog.csdn.net/tx3344/article/details/7414543 http://www.it6655.com/2012/08/aac-adts-html ...

  2. 阿里云Centos6.9安装图形化界面

    yum -y groupinstall "X Window System" "Chinese Support" "Desktop"

  3. 一键切换hosts文件

    1.新建文件host.bat 2.代码 @echo off cd.>C:\Windows\System32\drivers\etc\hosts echo .本地环境 .线上测试环境 ,切换Hos ...

  4. 主调度器schedule

    中断处理完毕后,系统有三种执行流向:                                                                               1)直 ...

  5. Webkit内核探究【2】——Webkit CSS实现

    注:[转载请注明文章来源.保持原样] 出处:http://www.cnblogs.com/jyli/archive/2010/01/31/1660364.html 作者:李嘉昱 CSS在Webkit中 ...

  6. Nginx以服务方式启动并用定时任务每天备份日志

    1.安装Nginx以服务方式启动: a.下载 instsrv.exe.srvany.exe 以管理员方式启动CMD执行以下命令: instsrv Nginx D:\nginx\srvany.exe b ...

  7. pom.xml 配置maven私服

    1.pom.xml 配置maven私服 <repositories>       <repository>        <id>caf_repositories& ...

  8. 利用MsChart控件绘制多曲线图表(转载)

    在.Net4.0框架中,微软已经将Mschart控件集成了进来,以前一直在web下面用过,原来winform下的Mschart控件更加简单更加方便,今天我们用mschart绘制一个多曲线图,话不多说, ...

  9. java.net.NoRouteToHostException:无法指定被请求的地址

    最近在做一个新项目的poc压测的时候发现了如下问题: TPS一直突破不了5000,按照计算理论上应该可以达到8000 tps/s左右的,查看数据库端口情况,吓一跳... netstat -ant | ...

  10. JAVA WEB ------ 文件下载及导出数据到office Execl表格

    文件下载需要五步: 1.设置文件ContentType类型 // 设置文件ContentType类型,这样设置,会自动判断下载文件类型 response.setContentType("mu ...