此篇是 使用VLC浏览器插件播放RTSP流的姊妹篇。

一.直接使用libVLC

libVLC是VLC media player多媒体框架的核心引擎和接口,开发者使用它能轻松的创建大量具有VLC特性的应用。

最简单的基于libVLC的例子:最简单的基于libVLC的视频播放器详细介绍了libVLC的获取及使用方法,里面提到了如何将libVLC嵌入到程序程序中,只需将窗口或者控件的句柄传递给libvlc_media_player_set_hwnd()函数即可,Qt中使用WId QWidget::winId()可以获得句柄。这里有一点需要注意,如果把libVLC嵌入到程序中的话,“全屏”功能就不能使用了。

libVLC虽然给了三个和全屏有关的API,如下:

//切换全屏 / 恢复
LIBVLC_API void libvlc_toggle_fullscreen( libvlc_media_player_t *p_mi );//设置全屏 / 恢复,由b_fullscreen决定
LIBVLC_API void libvlc_set_fullscreen( libvlc_media_player_t *p_mi, int b_fullscreen );//获取是否全屏
LIBVLC_API int libvlc_get_fullscreen( libvlc_media_player_t *p_mi );

但是同时给了以下说明:

* @warning With most window managers, only a top-level windows can be in
* full-screen mode. Hence, this function will not operate properly if
* libvlc_media_player_set_xwindow() was used to embed the video in a
* non-top-level window. In that case, the embedding window must be reparented
* to the root window <b>before</b> fullscreen mode is enabled. You will want
* to reparent it back to its normal parent when disabling fullscreen.

这个问题其实还是有些影响的,于是ntadej大神坐不住了,做了一个libVLC的Qt封装VLC-Qt,支持全屏显示。

二.VLC-Qt简介

VLC-Qt是结合了Qt和libVLC的免费开源库。它包含了媒体播放的核心类以及一些GUI类,这些类加快了媒体播放器的开发。

VLC-Qt 封装了整个libVLC,因此具备libVLC的所有功能。比如说允许创建多个libVLC实例和播放器,单个文件或列表播放,影视频控制,元数据管理。

VLC-Qt包含widgets库和QML库两部分,widgets库中包含了一些简单的、提前准备好的超类(用来被继承的类),包括video widget,seek widget,volume slider和audio and video controllers。QML库提供了基于OpenGL的简单播放。

官网链接:Quickly create a fully functional cross-platform media player - VLC-Qt

三.VLC-Qt的使用

我使用的是Windows 32-bit(MinGW)版本的VLC-Qt库,可以去官网下载。


Qt版本我用的是Qt 5.5.1 MinGW

官网已经给了两个例子https://github.com/vlc-qt/examples,我只是做了搬运工而已。

使用非常简单:

1.创建VLC实例

2.创建VLC播放器,并关联VLC实例

3.将VLC播放器添加到窗口或控件

4.添加播放器控制

_instance = new VlcInstance(VlcCommon::args(), this);
_player = new VlcMediaPlayer(_instance);
_player->setVideoWidget(ui->video);
_equalizerDialog->setMediaPlayer(_player);ui->video->setMediaPlayer(_player);
ui->volume->setMediaPlayer(_player);
ui->volume->setVolume(50);
ui->seek->setMediaPlayer(_player);

下图是播放本地视频:

下图是播放RTSP流:

经测试,下面两个RTSP地址可以正常使用。

rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov

rtsp://218.204.223.237:554/live/1/67A7572844E51A64/f68g2mj7wjua3la7.sdp

原创不易,转载请标明出处:基于libVLC的视频播放器之二:使用VLC-Qt播放RTSP流_草上爬的博客-CSDN博客_qt 播放rtsp

基于libVLC的视频播放器之二:使用VLC-Qt播放RTSP流相关推荐

  1. 基于FFmpeg的视频播放器之十一:倍速播放

    倍速播放通常有两种方式:一种是变速变调,另一种是变速不变调 一.变速变调 这种方法的原理就是音频重采样.比如说44100Hz采样率的音频,每秒钟有44100个采样点,如果我们要加速为200%播放,最简 ...

  2. VUE使用VLC插件播放RTSP流

    本来是使用ffmpeg把RTSP流转换成flv格式在网页播放的,好家伙结果板子空间不够,没办法装下node.js,所以直接播. 弊端:只能在支持ie内核的浏览器里播放,什么搜狗浏览器,360之类有兼容 ...

  3. 基于libVLC的视频播放器之九:添加抓图和录像功能

    一.效果 抓图和录像的路径或文件名都可以设置.这里为了测试方便,都用的固定值. 如果编译出的源码提示: libvlc_media.h:368: error: C2065: "libvlc_m ...

  4. 基于libVLC的视频播放器之十五:添加播放列表

    一.效果 二.原理 在VLC-Qt中已经封装了播放列表相关的操作,比如说上一个.下一个.顺序播放.循环播放和重复播放.相关的两个类是VlcMediaList和VlcMediaListPlayer, V ...

  5. rtsp协议_基于libVLC的视频播放器(支持RTSP协议)

    VLC Media Player是一款优秀的播放器,大多数多媒体开发人员都使用过.VLC是一款开源的.跨平台的.可扩展的.多媒体播放器.流媒体服务器及框架,可播放大多数多媒体文件,以及DVD.音频CD ...

  6. 最简单的基于libVLC的例子:最简单的基于libVLC的视频播放器

    最简单的基于libVLC的例子文章列表: 最简单的基于libVLC的例子:最简单的基于libVLC的视频播放器 最简单的基于libVLC的例子:最简单的基于libVLC的视频播放器(图形界面版) 最简 ...

  7. 基于FFmpeg的视频播放器之十五:录像

    一.效果 1.录制视频 2.播放录制的视频 二.原理 将上一篇基于FFmpeg的视频播放器之十四:remuxing中的代码直接用于录像是行不通的,会存在下列问题. 1.因为可以从任意时间点开始录制,此 ...

  8. 在浏览器中使用VLC插件实现播放RTSP流视频

    在浏览器中使用VLC插件实现播放RTSP流视频 一.安装VLC插件 二.编写测试html文件 三.生成一个测试用RTSP流视频 四.在浏览器中播放RTSP流视频 五.VLC插件知识扩展 1.VLC插件 ...

  9. 8K播放网络全终端播放器H5播放器网页直播/点播播放器EasyPlayer和vlc播放RTSP流地址不兼容问题排查解决

    背景介绍 EasyPlayer实现了对遵循标准流媒体码流协议进行实时播放以及码流录制,在流的播放速度以及画质的解码显示上均做了大量深度的优化.支持Windows(支持多窗口.包含ActiveX,npA ...

最新文章

  1. mysql 5.7临时表空间_深度解析MySQL 5.7之临时表空间
  2. Linux下查看Go语言软件运行情况
  3. Objective-C总Runtime的那点事儿(一)消息机制
  4. 干货!策略路由和路由策略的区别和联系
  5. css 盒模型的属性
  6. 病从口入 这样吃小心癌症找上门
  7. 详解mybatis映射配置文件
  8. MATLAB中排序函数sort()的用法
  9. 【机器学习+NER】手把手教你用机器学习CRF模型构建NER系统(CCL2021)
  10. Excel---饼图美化与ppt图表
  11. C#导入导出MPP文件(PROJECT)
  12. 程序猿爆笑选集(2)
  13. 二篇、使用excel做数据驱动把数据管理起来
  14. C++ 动态开辟空间
  15. 将多个word文件合并为一个的方法
  16. 关于excel中的超长数字显示方法
  17. EPSON RX8010SJ RTC 调试笔记之五, 时钟及日历解析
  18. Python的@装饰器是干什么用的?
  19. 阿里云服务器4核8G配置CPU性能报价表
  20. 戴尔台式计算机没有声音,笔记本电脑上没有声音,并教您如何在戴尔笔记本电脑上没有声音的情况下解决问题...

热门文章

  1. android横向滑动换页,[转载]Android 左右滑动切换页面或Activity的效果实现
  2. Uni-app框架UniPush安卓消息推送模拟配置
  3. Linux 环境搭建(如何获得一个免费云服务器)以及Linux基本指令
  4. parcelable接口实现
  5. 用html如何把页面分割成多个文件,由多个文件拼接而成?
  6. 知乎日报 hello android,知乎日报 - 明白人说新鲜事 - Android 应用 - 【最美应用】...
  7. 【Vue3】如何使用插槽
  8. 高清监控视频存储最佳方案
  9. CH340驱动安装失败
  10. HTML学生个人网站作业设计:动漫网站设计——樱桃小丸子(10页) HTML+CSS+JavaScript 简单DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载