美文网首页
通过libvlc库实现一款视频播放器

通过libvlc库实现一款视频播放器

作者: 何亮hook_8285 | 来源:发表于2023-01-05 00:32 被阅读0次

    简介

    libvlc是一款开源媒体播放器库,由 VideoLAN 团队开发。使用libvlc库可快速实现一款播放器,如果要求项目体积比较小,建议使用FFMPEG实现。

    libvlc库下载地址

    #下载不同平台SDK库
    http://download.videolan.org/pub/videolan/vlc/
    #直接下载windowsSDK包
    http://download.videolan.org/pub/videolan/vlc/3.0.8/win64/vlc-3.0.8-win64.7z
    

    需要依赖的库文件

    CMake引入

    cmake_minimum_required(VERSION 3.16)
    project(vlc_demo)
    
    set(CMAKE_CXX_STANDARD 14)
    
    if(MSVC)
        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /utf-8")
    endif()
    
    #定制二进制执行文件的输出路径
    SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/vlc_sdk)
    
    #指定vlc头文件目录
    include_directories(${PROJECT_SOURCE_DIR}/vlc_sdk/include)
    #指定lib文件存放目录
    link_directories(${PROJECT_SOURCE_DIR}/vlc_sdk/lib)
    
    add_executable(vlc_demo main.cpp)
    #引入lib文件
    target_link_libraries(vlc_demo libvlc libvlccore)
    

    C++代码实现

    #include <iostream>
    #include <thread>
    
    //解决vlc库在windows缺少SSIZE_T声明
    #ifdef _WIN32
    #include <basetsd.h>
    typedef SSIZE_T ssize_t;
    #endif
    
    #include <vlc/vlc.h>
    
    //heliang
    int main() {
    
        //1.创建vlc实例
        libvlc_instance_t *vlcNew=libvlc_new(0,NULL);
    
        //2.加载本地视频文件
        libvlc_media_t *media=libvlc_media_new_path(vlcNew,"E:\\1.mp4");
    
        //3.创建一个流媒体播放器
        libvlc_media_player_t *mediaPlayer=libvlc_media_player_new_from_media(media);
    
        //将流媒体播放器绑定到某个窗口句柄上
    //    libvlc_media_player_set_hwnd(mediaPlayer, (void*)libvlc_WId);
    
        //释放引用次数
        libvlc_media_release(media);
    
        //4.开始播放视频
        libvlc_media_player_play(mediaPlayer);
    
    
    
    
        //5.防止播放视频退出
        while (true)
        {
            std::this_thread::sleep_for(std::chrono::seconds(1));
            //获取视频播放的时长
            libvlc_time_t duration=libvlc_media_get_duration(media);
            //转换秒
            duration=duration/1000;
            //时
            int hour= duration / 3600;
            //分
            int minute=(duration % 3600)/60;
            //秒
            int second= duration % 60;
            std::cout << hour << ":" << minute << ":" <<second << std::endl;
    
            libvlc_media_player_get_position(mediaPlayer);
    
        }
    
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:通过libvlc库实现一款视频播放器

          本文链接:https://www.haomeiwen.com/subject/wtudcdtx.html