PPT中如何将音乐设置第一页到第三页呢(ppt音乐设置从第三页开始)
1139
2022-05-29
一、功能介绍
libvlc播发器引擎除了能播放本地视频外,也支持播放各种协议的流媒体视频,比如常见的RTMP、RTSP格式视频。
在前面几篇文章里陆陆续续介绍了libvlc的常用的使用方法,这篇文章继续介绍libvlc的知识点: 播放指定协议的视频。
libvlc提供了两种直接打开视频的方法:
/** * Create a media with a certain given media resource location, * for instance a valid URL. * * \note To refer to a local file with this function, * the file://... URI syntax must be used (see IETF RFC3986). * We recommend using libvlc_media_new_path() instead when dealing with * local files. * * \see libvlc_media_release * * \param p_instance the instance * \param psz_mrl the media location * \return the newly created media or NULL on error */ LIBVLC_API libvlc_media_t *libvlc_media_new_location( libvlc_instance_t *p_instance, const char * psz_mrl ); /** * Create a media for a certain file path. * * \see libvlc_media_release * * \param p_instance the instance * \param path local filesystem path * \return the newly created media or NULL on error */ LIBVLC_API libvlc_media_t *libvlc_media_new_path( libvlc_instance_t *p_instance, const char *path );
其中 libvlc_media_new_path 用于打开本地视频文件,可以直接传入本地磁盘路径。
例如:
libvlc_media_new_path(vlc_base,"D:\work\test.mp4");
注意: windows下使用libvlc_media_new_path 函数传入的路径要注意斜杠问题,必须保证传入的是双右斜杠,如果默认选择的路径是左斜杠,可以使用std::replace函数转换一下。
filename="D:/work/test.mp4"; std::replace(filename.begin(), filename.end(), QChar('/'), QChar('\'));
另一个libvlc_media_new_location 函数用于打开协议,这个函数更加强大,可以支持很多协议,本地视频也可以使用该函数打开,更加通用一点,而且使用该函数时,路径斜杠使用常规左斜杠就行(linux风格),不需要进行转换。
下面介绍几个常用的使用示例:
打开本地文件: libvlc_media_new_location (inst, "file:///D:/work/test.mp4"); 打开RTSP流媒体:libvlc_media_new_location (inst, "rtsp://10.0.0.4:554/cam"); 打开RTMP流媒体:libvlc_media_new_location (inst, "rtmp://10.0.0.4:554/cam"); 播放当前桌面屏幕: libvlc_media_new_location (inst, "screen://");
注意: 使用 libvlc_media_new_location 函数打开路径之后不要使用std::replace转换路径。
播放桌面屏幕的效果:
libvlc_media_new_location (inst, "screen://")
播放rtmp流效果
libvlc_media_new_location (inst, "rtmp://media3.scctv.net/live/scctv_800")
二、完整代码示例
#include "widget.h" #include "ui_widget.h" Widget* Widget::pThis = nullptr; Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { pThis=this; ui->setupUi(this); //创建并初始化libvlc实例 vlc_base=libvlc_new(0,nullptr); this->setWindowTitle("libvlc设计的视频播放器"); } Widget::~Widget() { delete ui; } //选择视频 void Widget::on_pushButton_open_clicked() { /*选择文件*/ filename=QFileDialog::getOpenFileName(this,"选择打开的文件","D:/",tr("*.*")); filename="file:///"+filename; /*停止媒体文件*/ if(vlc_mediaPlayer)libvlc_media_player_stop(vlc_mediaPlayer); //QThread::msleep(5000); /*为特定文件路径创建媒体*/ if(vlc_media)libvlc_media_release(vlc_media); // vlc_media=libvlc_media_new_path(vlc_base,filename.toUtf8().data()); vlc_media=libvlc_media_new_location (vlc_base,filename.toUtf8().data()); if(vlc_media==nullptr) { qDebug()<<"libvlc_media_new_path 执行错误."; return; } /*根据给定的媒体对象创建一个播放器对象*/ if(vlc_mediaPlayer)libvlc_media_player_release(vlc_mediaPlayer); vlc_mediaPlayer=libvlc_media_player_new_from_media(vlc_media); //忽略事件处理(这样libvlc就捕获不到鼠标和键盘事件了) if (vlc_mediaPlayer)libvlc_video_set_mouse_input(vlc_mediaPlayer, false); if (vlc_mediaPlayer)libvlc_video_set_key_input(vlc_mediaPlayer, false); //创建事件管理器 eventManager = libvlc_media_player_event_manager(vlc_mediaPlayer); //订阅事件 attachEvents(eventManager); /*设置给予媒体播放器媒体输出的win32/win64窗口句柄*/ libvlc_media_player_set_hwnd(vlc_mediaPlayer, (void *)ui->widget->winId()); /*播放媒体文件*/ if(vlc_mediaPlayer)libvlc_media_player_play(vlc_mediaPlayer); //等待VLC解析文件.否则下面的时间获取不成功 QThread::msleep(500); //获取媒体文件总长度 ms libvlc_time_t length = libvlc_media_player_get_length(vlc_mediaPlayer); qDebug()<<"媒体文件总长度:"<
5G媒体 视频
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。