基于VLC-Qt播放RTSP流
2016-11-14 15:38
1321 查看
此篇是 使用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的简单播放。
官网链接:https://vlc-qt.tano.si/
三.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
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的简单播放。
官网链接:https://vlc-qt.tano.si/
三.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 SDK)的视频播放Demo——Windows平台
- 基于 vlc android截图录制视频等功能
- 基于iOS5.0的MobileVLC(vlc for iOS)编译
- 基于VLC的播放器开发
- 基于vlc的unity3d vr视频播放器开发,简述
- C语言基于GTK+Libvlc实现的简易视频播放器
- 基于VLC SDK的二次开发
- RtspViewer可设置播放地址 基于vlc播放采集rtsp地址视频演示2.0 测试成功
- [转]基于iOS5.0的MobileVLC(vlc for iOS)编译
- 基于VLC的播放器开发
- vlc_for_android(基于git-3.0.0)快速集成并播放电视节目直播
- 基于VLC框架的Android视频播放器Demo
- C#编写的基于VLC的播放器
- 自定义基于 VLC 的视频播放器
- 基于 VLC 的 Android 多媒体解决方案
- 基于vlc的unity3d vr视频播放器开发,360度全景视频
- 基于VLC SDK的二次开发
- 基于移动平台的多媒体框架——用VLC搭建简单的流媒体服务器
- 基于Swt、ffmpeg、jacob、vlc、SApi、h2技术编写简单的旁白生成器
- 基于 vlc android截图录制视频等功能