当前位置: 首页 > news >正文

基于vlc的Player的构建编译

前言

目前流行的播放器无疑是 PotPlayer 和 VLC,其中 PotPlayer 是韩国公司 Kakao Corp 开发,其开发者是曾是著名的 KMPlayer 的原始作者之一

PotPlayer 并不是开源的软件, VLC 是开源的,并且提供了全平台版本的下载,官方地址在这里 https://www.videolan.org/

基于 vlc 的 c++ 开发,需要用到的有两部分:sdk 库文件,以及 libvlcpp 头文件

sdk库文件

官方首页的播放器下载,并没有提供单独 sdk 文件,需要下载 7z 压缩的播放器,然后解压提取里面的 sdk 目录

下载页面地址在这里 https://www.videolan.org/vlc/download-windows.html

然后解压 7z 文件,提取里面的 sdk 目录

libvlcpp

libvlcpp 主要提供若干 hpp 头文件,并没有需要集成的库文件,在使用的时候,只需要在项目中把头文件 include 进来就可以了

libvlcpp 的下载地址在这里 https://code.videolan.org/videolan/libvlcpp.git

项目中也有一些 examples 以及 test 代码可供参考

构建播放器

新建一个 Player 项目,使用 CMakeList.txt 进行构建,项目结构如下图

inlude\vlcpp 为前面提到的 libvlcpp 的头文件,include\vlc 和 libs 为 sdk 的部分,main.cpp 为来自 libvlcpp 中的示例代码

CMakeList.txt 部分代码如下

cmake_minimum_required(VERSION 3.20)project(Player VERSION 1.0 LANGUAGES CXX)set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)include_directories(${PROJECT_SOURCE_DIR}/include)file(GLOB_RECURSE SRC_FILES ${PROJECT_SOURCE_DIR}/src/*.cpp)add_executable(${PROJECT_NAME} ${SRC_FILES})if(MSVC AND CMAKE_SIZEOF_VOID_P EQUAL 4)target_link_options(Player PRIVATE "/SAFESEH:NO")
endif()target_link_libraries(Player PRIVATE${PROJECT_SOURCE_DIR}/libs/libvlc.lib${PROJECT_SOURCE_DIR}/libs/libvlccore.lib
)if (MSVC)target_compile_options(${PROJECT_NAME} PRIVATE/W4/permissive-/utf-8)
endif()install(TARGETS ${PROJECT_NAME} DESTINATION bin)
install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/ DESTINATION include)

然后在命令行终端中,执行以下命令

cmake .. -G "Visual Studio 17 2022" -A Win32
cmake --build . --config Release

编译后生成 Player.exe 执行文件,程序运行的时候依赖 libvlc.dll 和 libvlccore.dll,把前面播放器里面的动态库拷贝过来即可

还需要把播放器中的 plugins 目录也拷贝过来,运行的时候也依赖这些,然后 Player.exe bee.mp4 就可以播放视频了

现在已经是一个完整的播放器了,有画面有声音,运行效果如下

http://www.dtcms.com/a/536371.html

相关文章:

  • AR巡检轨道交通、地铁运维场景的应用技术方案|阿法龙XR云平台
  • 使用cursor/vscode开发服务器远程桌面应用(X11转发)
  • 织梦大气绿色大气农业能源化工机械产品企业网站源码模版做动态logo网站
  • 在建项目人员查询网站个人网站可以做论坛吗
  • 第53题 最大子数组和
  • 网站源码超市中国建设银行大沥网站
  • leetcode 242. 有效的字母异位词 python
  • 免费网站建设模板好看的商城网站
  • 0382. 链表随机节点
  • Vue3 路由完全指南:从基础配置到权限控制
  • 宁波seo推广咨询长沙 建站优化
  • 邯郸做网站熊掌号什么自己做网站
  • Spring Boot3零基础教程,监听 Kafka 消息,笔记78
  • 【Swift】LeetCode 41. 缺失的第一个正数
  • cuda编程笔记(34)-- 内存访问控制与缓存提示
  • webserver类续
  • 条款22:使用Pimpl惯用法时,将特种成员函数的定义放到实现文件中
  • 基于python大数据的省级城市政企客户业务分析系统
  • 合肥微网站制作初中做语文综合题的网站
  • dedecms做论坛网站广州网页设计师学校
  • Blender + MCP 全流程详细图文教程
  • 自定义classload实现热加载案例
  • 上海网站建设seo站霸网络网站建设推销拜访客户怎么开头
  • Spring Bean的生命周期 第二次思考
  • HttpServletResponse下载文件
  • vue3的路由详解
  • Spring Boot 生产就绪特性浅析(一)
  • 如何做彩票网站信息手机上打开html的软件
  • 【图像处理基石】图像对比度增强入门:从概念到实战(Python+OpenCV)
  • 网站建设公司六安全国连锁装修公司加盟