1.在(Linux)ubuntu下通过GTK调用libvlc开发视频播放器
2.增强axmol引擎视频播放之 - Linux(Ubuntu)视频播放支持
在(Linux)ubuntu下通过GTK调用libvlc开发视频播放器
在本项目中,实现了一个基于GTK和libvlc的视频播放器,用户能通过选择视频文件启动播放器观看视频。
VLC是一款跨平台的媒体播放器,支持几乎所有音频和视频格式,最初由法国学生于年开发,avr mmc 开锁源码现已成为广受欢迎的媒体播放器,可在Windows、macOS、Linux等多个操作系统上使用。
libvlc是VLC media player的核心库之一,提供了一组应用程序接口(API),方便开发人员在自定义应用程序中集成VLC的媒体播放功能。libvlc可与C、C++、Python、Java、.NET等语言和框架集成,广泛应用于媒体相关项目。
VLC为独立的媒体播放器,libvlc则是tinyhttpd源码其核心库,易于嵌入其他应用,实现与VLC类似的媒体播放功能。
下载VLC(3.X版本):videolan.org/vlc/
访问libVLC最新4.0官网:nightlies.videolan.org/
GTK是一种开源跨平台图形用户界面(GUI)工具包,主要用于Linux和其他Unix-like操作系统,提供窗口、按钮、标签、文本输入框等控件,以及绘图引擎。GTK支持国际化和主题定制,闲聊源码方便开发者创建符合用户期望和风格的应用界面。
在Ubuntu中安装GTK依赖库,命令如下:
安装GTK3库的开发文件和依赖库。对于GTK2库,需要安装libgtk2.0-dev。此外,可安装GTK扩展包如GStreamer、WebKit等。
编译GTK程序,命令如下,cnodejs源码其中pkg-config管理依赖库,输出头文件路径和链接库路径。
执行步骤如下:
(1)安装libvlc和相关依赖库,可使用apt-get或源码编译。
libvlc-dev包含libvlc的头文件和链接库;libgtk-3-dev包含GTK库的头文件和链接库。安装这两个库,即可在Ubuntu下开发基于GTK和libvlc的视频播放器。
(2)在GTK程序中引入libvlc和GTK库。
(3)创建GTK窗口和控件,使用GtkBuilder加载UI文件,手柄源码动态创建视频_widget控件。
(4)初始化libvlc,创建libvlc_media_player和libvlc_media对象。
(5)在GTK窗口中添加视频控件,并启动GTK主循环。
完整设计代码如下:
1main.c代码
2ui.glade代码
使用glade工具创建UI文件。
增强axmol引擎视频播放之 - Linux(Ubuntu)视频播放支持
本文探讨在著名的Linux发行版Ubuntu支持视频渲染到纹理播放的实现过程,重点介绍如何集成libvlc以增强axmol引擎在Linux平台上的视频播放功能。在完成对Android平台的视频纹理渲染支持后,考虑到axmol引擎支持的平台包括macos、windows、ios/tvos、android、linux,Linux平台的缺失成为待补之项。
深入研究后发现,VLC播放器提供了libvlc,其LGPL-2.1授权允许在不修改源码的情况下以动态库形式免费商用,这成为集成libvlc作为后端的合适方案。
实现MediaEngine接口的核心功能包括播放、暂停等操作,同时注册媒体事件和视频NV帧事件回调。关键代码片段涉及在libvlc的锁回调中锁定内存以用于写入视频数据。通过使用libvlc的回调模式格式设置,需特别注意为NV格式指定第二个平面的pitch和lines。
为了在Ubuntu .+系统上编译运行axmol引擎,建议下载引擎最新源码并根据指南进行编译。若遇到视频解码问题,可安装ubuntu扩展组件以解决,使用命令:sudo apt install ubuntu-restricted-extras。
至此,axmol引擎的ui::MediaPlayer功能实现了全部平台上的视频纹理渲染播放,这得益于MediaEngine框架的重新设计。该框架不仅在axmol引擎内运行良好,还能独立编译,例如作者编写的bgfx视频播放示例:bgfx-axplay。
值得注意的是,libvlc是跨平台的,因此VlcMediaEngine实现仅需简单配置即可在其他平台如Windows上运行。若在Windows上使用,还需设置vlc插件加载地址。