Qt本地视频播放器

1、使用vlc官方sdk封装,并在QLabel上面播放

2、首先到vlc官网下载vlc的sdk环境,下载地址:http://download.videolan.org/pub/videolan/vlc/.

(1)、选择last最近版本:

(2)、选择win32版本,根据你自己安装的qt版本来下载:

(3)、最后选win32.7z下载就好了

3、接下来设置好qt使用第三方库的配置,并把插件目录放到项目的debug目录下。

4、接下来把它封装为C++类使用

(1)、player.h

#ifndef PLAYER

#define PLAYER

#if 1

#include #include #include extern "C"

{

#include #include }

class Player

{

public:

Player();

~Player();

public:

/*!

初始化

@return 成功返回true,否则false

*/

bool InitPlayer();

/*!

开始播放

@param path 本地视频文件路径

@param handle 控件的HWND

@return 成功返回0,否则!0

*/

int PlayVideo(const char *path, HWND handle);

/*!

停止播放

@param handle 控件的HWND

*/

void StopVideo(HWND handle);

private:

libvlc_instance_t *m_instace = nullptr;

libvlc_media_player_t *m_pPlayer = nullptr;

/// 这里是因为我有多个QLabel所以用了map,一个QLabel可以忽略

std::mapm_map;

};

#endif

#endif // PLAYER

(2)、player.cpp

#include "player.h"

#include #if 1

Player::Player()

{

}

Player::~Player()

{

}

/// 初始化vlc

bool Player::InitPlayer()

{

m_instace = libvlc_new(0, NULL);

if(NULL == m_instace)

{

return false;

}

return true;

}

/// 开始播放

int Player::PlayVideo(const char *path, HWND handle)

{

EnableWindow(handle,false);

libvlc_media_t *pMedia = libvlc_media_new_path(m_instace, path);

if(NULL == pMedia)

{

return 2;

}

m_pPlayer = libvlc_media_player_new_from_media(pMedia);

if(NULL == m_pPlayer)

{

return 3;

}

libvlc_media_player_set_hwnd(m_pPlayer, handle);

int ret = libvlc_media_player_play(m_pPlayer);

if(0 != ret)

{

libvlc_media_player_stop(m_pPlayer);

libvlc_media_player_release(m_pPlayer);

return 1;

}

/// 一个QLabel对应一个libvlc_media_player_t,就可选择关闭哪个

m_map[handle] = m_pPlayer;

return 0;

}

/// 停止播放

void Player::StopVideo(HWND handle)

{

libvlc_media_player_stop(m_map[handle]);

libvlc_media_player_release(m_map[handle]);

}

#endif

(3)、使用方法,先调用初始化,在调用播放函数就行了(qt控件也有接口可以获得HWND):

PlayVideo("path",(HWND)curLabel->winId());

4、效果图(MP4文件):

(1)、播放前:

(1)、播放后:

想做其他功能就靠你们自己咯

linux下qt实现vlc视频播放器,Qt封装本地视频播放器(VLC二次开发)相关推荐

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

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

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

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

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

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

  4. 【流媒体开发】VLC Media Player - Android 平台源码编译 与 二次开发详解 (提供详细800M下载好的编译源码及eclipse可调试播放器源码下载)

    作者 : 韩曙亮  博客地址 : http://blog.csdn.net/shulianghan/article/details/42707293 转载请注明出处 : http://blog.csd ...

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

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

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

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

  7. 嵌入式linux摄像头视频教程,嵌入式Linux下LCD应用编程: 读取摄像头画面完成本地视频监控画面显示...

    一.开发环境介绍 开发板:友善之臂Tiny4412 LCD型号:S702 .分辨率: 800*480 Linux内核版本:Linux 3.5 摄像头:USB免驱摄像头 文本显示采用矢量字库, Free ...

  8. Linux下GCC生成和使用静态库和动态库详解(二)

    2.1准备好测试代码hello.h.hello.c和main.c: hello.h(见程序1)为该函数库的头文件. hello.c(见程序2)是函数库的源程序,其中包含公用函数hello,该函数将在屏 ...

  9. 将vs+Qt的工程从windows平台移植到linux下_

    ​​​​​​​​​​​​将vs+Qt的工程从windows平台移植到linux下_崔杰城的博客-CSDN博客_windows下的qt工程移植到linux下 windows下Qt的开发人员常用vs+Qt ...

最新文章

  1. 链接被点击的默认行为——带到另一个窗口
  2. Linux (Ubuntu)使用vi和vim方向键变成了ABCD
  3. Java HashMap的死循环问题
  4. BZOJ1566 [NOI2009]管道取珠
  5. 你该知道的深度强化学习相关知识
  6. mysql trim 索引_mysql 强大的trim() 函数
  7. 雷军说马云骗子、柳传志弃投百度、王兴骂滴滴垃圾…14位大佬悔不当初
  8. mysql GROUP BY和HAVING
  9. 宾馆客房管理系统-vue前端开发
  10. TCP局域网服务器简易搭建(eps-01s)
  11. 四.卡尔曼滤波器(EKF)开发实践之四: ROS系统位姿估计包robot_pose_ekf详解
  12. 游戏画质修改器GFX工具箱(GFX tool)_9.9.8特别版
  13. 【全文】狼叔:如何正确的学习Node.js
  14. Qt编写自定义控件:简单的方式绘制渐变进度条
  15. 真丶深入理解 JavaScript 原型和原型链(二):原型和原型链
  16. TinyOS 学习第一周-Ubuntu-10.10下安装TinyOS-2.1.1
  17. 股权激励12个经典问题
  18. 终于把“翻转课堂”、“微课”和“慕课”说明白了
  19. 利用地球同步卫星在一个1Mbps的信道上发送长度为1000位的帧,该信道的传播延时为27Frames of 1000 bits are sent over a 1-Mbps channel using
  20. 图数据库查询语言Cypher、Gremlin和SPARQL

热门文章

  1. android 重新设置lcd分辨率,wm命令使用方法(修改android 分辨率)修改
  2. selenium点击元素位置_Selenium常见元素定位方法和操作
  3. hive查询where join_Hive解析流程-抽象语法树生成
  4. java数组实验心得体会_学习JAVA之数组小结
  5. kext updater使用方法_语言清晰度测量方法的前世今生
  6. C语言丨格式化屏幕输出(二)——日历
  7. C++socket编程(三):3.5 accept读取用户的连接信息
  8. tinymce 工具栏 不显示_VBA自动创建outBar式样的工具栏
  9. java web权限设计_java web简单权限管理设计
  10. javascript HTMLElement