linux下qt实现vlc视频播放器,Qt封装本地视频播放器(VLC二次开发)
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二次开发)相关推荐
- linux下qt的文件打包,【最详细最完整】在Linux 下如何打包免安装的QT程序?
版权声明:嵌入式linux相关的文章是我的学习笔记,基于Exynos 4412开发板,一部分内容是总结,一部分是查资料所得,大家可以自由转载,但请注明出处! https://blog.csdn.net ...
- 【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 ...
- 【流媒体开发】VLC Media Player - Android 平台源码编译 与 二次开发详解 (提供详细800M下载好的编译源码及eclipse可调试播放器源码下载)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42707293 转载请注明出处 : http://blog.csd ...
- 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摄像头视频教程,嵌入式Linux下LCD应用编程: 读取摄像头画面完成本地视频监控画面显示...
一.开发环境介绍 开发板:友善之臂Tiny4412 LCD型号:S702 .分辨率: 800*480 Linux内核版本:Linux 3.5 摄像头:USB免驱摄像头 文本显示采用矢量字库, Free ...
- Linux下GCC生成和使用静态库和动态库详解(二)
2.1准备好测试代码hello.h.hello.c和main.c: hello.h(见程序1)为该函数库的头文件. hello.c(见程序2)是函数库的源程序,其中包含公用函数hello,该函数将在屏 ...
- 将vs+Qt的工程从windows平台移植到linux下_
将vs+Qt的工程从windows平台移植到linux下_崔杰城的博客-CSDN博客_windows下的qt工程移植到linux下 windows下Qt的开发人员常用vs+Qt ...
最新文章
- 链接被点击的默认行为——带到另一个窗口
- Linux (Ubuntu)使用vi和vim方向键变成了ABCD
- Java HashMap的死循环问题
- BZOJ1566 [NOI2009]管道取珠
- 你该知道的深度强化学习相关知识
- mysql trim 索引_mysql 强大的trim() 函数
- 雷军说马云骗子、柳传志弃投百度、王兴骂滴滴垃圾…14位大佬悔不当初
- mysql GROUP BY和HAVING
- 宾馆客房管理系统-vue前端开发
- TCP局域网服务器简易搭建(eps-01s)
- 四.卡尔曼滤波器(EKF)开发实践之四: ROS系统位姿估计包robot_pose_ekf详解
- 游戏画质修改器GFX工具箱(GFX tool)_9.9.8特别版
- 【全文】狼叔:如何正确的学习Node.js
- Qt编写自定义控件:简单的方式绘制渐变进度条
- 真丶深入理解 JavaScript 原型和原型链(二):原型和原型链
- TinyOS 学习第一周-Ubuntu-10.10下安装TinyOS-2.1.1
- 股权激励12个经典问题
- 终于把“翻转课堂”、“微课”和“慕课”说明白了
- 利用地球同步卫星在一个1Mbps的信道上发送长度为1000位的帧,该信道的传播延时为27Frames of 1000 bits are sent over a 1-Mbps channel using
- 图数据库查询语言Cypher、Gremlin和SPARQL
热门文章
- android 重新设置lcd分辨率,wm命令使用方法(修改android 分辨率)修改
- selenium点击元素位置_Selenium常见元素定位方法和操作
- hive查询where join_Hive解析流程-抽象语法树生成
- java数组实验心得体会_学习JAVA之数组小结
- kext updater使用方法_语言清晰度测量方法的前世今生
- C语言丨格式化屏幕输出(二)——日历
- C++socket编程(三):3.5 accept读取用户的连接信息
- tinymce 工具栏 不显示_VBA自动创建outBar式样的工具栏
- java web权限设计_java web简单权限管理设计
- javascript HTMLElement