草上爬
专注技术,热爱分享
展开
-
基于libVLC的视频播放器之十六:完结
其实功能前面都有了,这里只是加了个“漂亮”的界面。做这个播放器纯属个人爱好,最近工作较忙,来个迟到的完结。功能展示:1.播放、暂停、停止和快进2.快进30秒、后退30秒3.倍速4.音量控制5.播放网络URL6.抓图、录像和参数设置...原创 2021-06-30 20:09:02 · 4447 阅读 · 27 评论 -
基于libVLC的视频播放器之十五:添加播放列表
一.效果二.原理在VLC-Qt中已经封装了播放列表相关的操作,比如说上一个、下一个、顺序播放、循环播放和重复播放。相关的两个类是VlcMediaList和VlcMediaListPlayer,VlcMediaList持有多个VlcMedia媒体项,VlcMediaListPlayer通过setMediaList方法关联VlcMediaList,并在构造时传入VlcMediaPlayer对象,这样VlcMediaListPlayer内部就能通VlcMediaList和VlcMediaPlayer实现播放原创 2021-05-19 16:54:36 · 5191 阅读 · 8 评论 -
基于libVLC的视频播放器之十四:VLC-Qt全屏与退出全屏
一.效果此处效果不好录制,就贴个图吧,点击Esc键退出全屏二.原理在基于libVLC的视频播放器之二:使用VLC-Qt播放RTSP流https://blog.csdn.net/caoshangpa/article/details/53158571中曾提到过,将libVLC嵌入到窗体时,无法通过libVLC的下列三个api实现全屏功能://切换全屏 / 恢复LIBVLC_API void libvlc_toggle_fullscreen( libvlc_media_player_t *p原创 2021-05-10 17:49:52 · 4472 阅读 · 2 评论 -
基于libVLC的视频播放器之十三:VLC-Qt测试抓图和录像功能
一.效果二.代码实现在SamplePlayer的构造函数中添加: connect(ui->startRecord, &QPushButton::clicked, this,[=]{ _player->video()->startRecord("c:/TestVLC","test"); }); connect(ui->stopRecord, &QPushButton::clicked, this,[=]{原创 2021-04-19 19:42:49 · 4541 阅读 · 23 评论 -
基于libVLC的视频播放器之十二:VLC-Qt添加录像接口
在VLC-Qt的VlcMedia类中有几个record方法,如下所示:QString VlcMedia::record(const QString &name, const QString &path, const Vlc::Mux &mux, bool duplicate){ QString option1, opti原创 2021-04-19 19:26:30 · 3967 阅读 · 2 评论 -
基于libVLC的视频播放器之十一:VLC-Qt抽取YUV帧,并用QOpenGLWidget渲染显示
直接传winID的方式就不介绍了,VLC-Qt自带的demo(SimplePlayer)使用的就是这种方式本文在SimplePlayer的基础上修改,这里抽帧后(YUV格式),使用QOpenGLWidget渲染,并在图像上画一个正方形,放置一个半透明按钮一.效果二.原理VLC-Qt中处理视频时需要的几个类:VlcMedia(标识一个可播放的媒体,可以设置配置参数)VlcMediaPlayer(控制播放)VlcVideoStream(视频抽帧)VlcWidgetVideo(显示视频的控原创 2021-04-15 19:20:34 · 4794 阅读 · 41 评论 -
基于libVLC的视频播放器之十:添加倍速功能
一.效果这里支持1x、1.25x、1.5x、1.75x和2x倍速播放视频,gif以1.5x倍速和2x倍速为例添加该功能后,直接使用libVLC告一段落,从下篇博客开始将使用VLC-Qt实现一个漂亮的视频播放器二.代码实现倍速设置菜单的实现m_speedMenu=new QMenu(this);m_1_0XAction=new QAction(this);m_1_0XAction->setText("1x");m_1_25XAction=new QAction(this原创 2021-04-14 11:59:58 · 5079 阅读 · 14 评论 -
基于libVLC的视频播放器之九:添加抓图和录像功能
一.效果抓图和录像的路径或文件名都可以设置。这里为了测试方便,都用的固定值。如果编译出的源码提示:libvlc_media.h:368: error: C2065: “libvlc_media_read_cb”: 未声明的标识符解决方法:将typedef ssize_t (*libvlc_media_read_cb)(void *opaque, unsigned char *buf,size_t len);的返回值由ssize_t改成__int64,注意是两个下划线,改成int也可以。二.原创 2021-04-13 19:21:01 · 4938 阅读 · 2 评论 -
基于libVLC的视频播放器之八:vlc-3.0.9.2添加录像接口
一.为什么要添加录像接口其实通过libvlc_media_add_option设置参数可以实现录像,如下所示:m_media=libvlc_media_new_path(m_vlcInstance, fileName.toUtf8().data());libvlc_media_player_set_hwnd(m_vlcMediaPlayer,hwnd);....................................QString option1, option2, paramete原创 2021-04-13 18:55:00 · 4283 阅读 · 9 评论 -
基于libVLC的视频播放器之七:在ubuntu16.04上交叉编译vlc-3.0.9.2源码
官方编译文档可参考:https://wiki.videolan.org/Win32Compile/之前编译过vlc-3.0.6,参考这篇博客就行:https://blog.csdn.net/zhuquanfu/article/details/83505531但是vlc-3.0.9.2及之后的版本增加了一些第三方依赖库,比如harfbuzz,编译时与vlc-3.0.6有少许差别。具体步骤如下:一.Mingw-w64交叉编译工具链配置不管是编译32位还是64位VLC,都需要配置Mingw-w64工原创 2021-04-09 19:49:57 · 3630 阅读 · 3 评论 -
基于libVLC的视频播放器之六:使用QOpenGLWidget渲染RGB
一.效果左边是QWidget渲染,右边是QOpenGLWidget渲染。二.实现熟悉着色器的话,渲染RGB要比渲染YUV方便得多QHOpenGLVideoWidget.h#ifndef QHOPENGLVIDEOWIDGET_H#define QHOPENGLVIDEOWIDGET_H#include <QOpenGLWidget>#include <QOpenGLShaderProgram>#include <QOpenGLVertexAr原创 2021-02-27 17:54:23 · 4761 阅读 · 5 评论 -
基于libVLC的视频播放器之五:抽帧
直接传winID的方式虽然方便,但是如果要对视频图像做处理,比如说画个正方形,就得抽取视频帧在Qt中处理。这里抽帧后用QWidget渲染,下篇将介绍如何用QOpenGLWidget渲染。一.原理与此功能有关的关键API为libvlc_video_set_callbacks //设置回调,用来抓取解码后的帧libvlc_video_set_format //设置解码帧的格式,举例:libvlc_video_set_format(player, "RV32", width, heigh...原创 2021-02-27 13:32:04 · 5646 阅读 · 3 评论 -
基于libVLC的视频播放器之四:直接使用libVLC
一.效果播放本地文件播放网络url:rtsp://3.84.6.190/vod/mp4:BigBuckBunny_115k.mov二.实现既然有VLC-Qt,为什么还要直接调用libVLC呢,因为直接调用会加深对整个播放流程的理解,方便后面修改VLC-Qt源码。注意事项:1.编译报错:error C2065: “libvlc_media_read_cb”: 未声明的标识符。修改如下:2.libvlc_new(0, nullptr)返回null将plugins原创 2021-02-26 23:25:53 · 4611 阅读 · 3 评论 -
基于libVLC的视频播放器之三:编译和测试VLC-Qt
上篇文章使用VLC-Qt播放RTSP流介绍了如何直接使用VLC-Qt,这里将介绍如何编译VLC-Qt,方便以后修改源码。我的环境:windows 10Qt 5.12.6 VS2017vlc 3.0.9.2CMake 3.13.0一.下载1.vlc下载下载地址:http://download.videolan.org/pub/videolan/vlc/3.0.9.2/win32/解压到:C:\vlc-3.0.9.22.vlc-qt及其examples下载下载地址:https:/原创 2021-02-25 21:54:11 · 3494 阅读 · 1 评论 -
基于libVLC的视频播放器之二:使用VLC-Qt播放RTSP流
此篇是使用VLC浏览器插件播放RTSP流的姊妹篇。一.直接使用libVLClibVLC是VLC media player多媒体框架的核心引擎和接口,开发者使用它能轻松的创建大量具有VLC特性的应用。最简单的基于libVLC的例子:最简单的基于libVLC的视频播放器详细介绍了libVLC的获取及使用方法,里面提到了如何将libVLC嵌入到程序程序中,只需将窗口或者控件的句柄传原创 2016-11-14 15:38:34 · 24428 阅读 · 8 评论 -
基于libVLC的视频播放器之一:使用VLC浏览器插件播放RTSP流
1.首先电脑上要安装VLC。对于老版本的VLC,该浏览器插件经常崩溃,强烈建议安装2.0.0及以上的版本。我安装的版本是vlc-2.2.4-win32,其他未测试。2.然后用VLC测试一下RTSP地址是否可用,测试方法:经测试,下面两个RTSP地址可以正常使用。rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov原创 2016-11-14 10:15:46 · 42275 阅读 · 4 评论