Qt封装本地视频播放器(VLC二次开发)

Qt本地视频播放器

1、使用vlc官方sdk封装,并在QLabel上面播放
2、首先到vlc官网下载vlc的sdk环境,下载地址:http://download.videolan.org/pub/videolan/vlc/.
(1)、选择last最近版本:Qt封装本地视频播放器(VLC二次开发)_第1张图片
(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::map m_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)、播放前:

Qt封装本地视频播放器(VLC二次开发)_第2张图片

(1)、播放后:

Qt封装本地视频播放器(VLC二次开发)_第3张图片
想做其他功能就靠你们自己咯

你可能感兴趣的:(Qt编程,qt5,vlc)