函数

     ● LIBVLC_API libvlc_instance_t *libvlc_new( int argc , const char *const *argv );

          功能:创建libvlc_instance_t对象。

          用法:

libvlc_instance_t *VlcInstance = libvlc_new(0, nullptr);

          参数:
               具体参数查看我写的另一篇文章。

// 一般用法是上面的。// 带参数用法const char * vlc_args[] ={"-I","dummy","--ignore-config","--extraintf=logger","--verbose=2"};libvlc_instance_t  *VlcInstance= libvlc_new(sizeof(vlc_args)/sizeof(vlc_args[0]), vlc_args);


     ● LIBVLC_API void libvlc_release( libvlc_instance_t *p_instance );

          功能:释放libvlc_instance_t对象。


     ● LIBVLC_API libvlc_media_player_t * libvlc_media_player_new( libvlc_instance_t *p_libvlc_instance );

          功能:创建一个媒体播放器对象。


     ● LIBVLC_API void libvlc_media_player_release( libvlc_media_player_t *p_mi );

          功能:使用后释放媒体播放器减少媒体播放器对象的引用计数。如果引用计数为0,则进行释放;如果已释放则不应调用本函数。


     ● LIBVLC_API libvlc_state_t libvlc_media_player_get_state( libvlc_media_player_t *p_mi );

          功能:获取传入参数的媒体状态。

          返回:

// 获取媒体播放器状态。
libvlc_state_t  vlcState = libvlc_media_player_get_state(xxx);typedef enum libvlc_state_t
{libvlc_NothingSpecial=0,          // 默认值。libvlc_Opening,                      // 打开中。libvlc_Buffering,                    // 缓冲状态。可查看libvlc_MediaPlayerBuffering事件。libvlc_Playing,                        // 播放中。libvlc_Paused,                       // 暂停中。libvlc_Stopped,                      // 已停止。libvlc_Ended,                        // 已结束。libvlc_Error                     // 有错误。
} libvlc_state_t;


     ● LIBVLC_API libvlc_event_manager_t * libvlc_media_player_event_manager ( libvlc_media_player_t *p_mi );

          功能:获取媒体播放器从中发送事件的事件管理器。


     ● LIBVLC_API int libvlc_event_attach(
                                             libvlc_event_manager_t
                                             *p_event_manager,
                                             libvlc_event_type_t i_event_type,
                                             libvlc_callback_t f_callback,
                                             void *user_data );

          功能:注册事件通知。

          参数:

// 返回0为成功。
int result = libvlc_event_attach(libvlc_event_manager,                 // 注册事件管理对象libvlc_MediaPlayerPositionChanged,       // 事件类型libvlc_callback,                         // 回调函数this                                 // 回调函数参数2);// 该回调函数务必设置为全局函数或类内静态函数
void libvlc_callback(const struct libvlc_event_t *p_event, void *p_data)
{// 参数1 - p_event:事件类型// 参数2 - p_data :传入数据
}


     ● LIBVLC_API int libvlc_event_detach(
                                             libvlc_event_manager_t
                                             *p_event_manager,
                                             libvlc_event_type_t i_event_type,
                                             libvlc_callback_t f_callback,
                                             void *user_data );

          功能:注销事件通知。具体参数同上。


     ● LIBVLC_API libvlc_media_t * libvlc_media_new_path(libvlc_instance_t *p_instance,const char *path );

          功能:获取媒体播放器从中发送事件的事件管理器。


     ● LIBVLC_DEPRECATED LIBVLC_API void libvlc_media_parse( libvlc_media_t *p_md );

          功能:解析媒体。获取媒体相关信息。


     ● LIBVLC_API void libvlc_media_player_set_media( libvlc_media_player_t *p_mi,libvlc_media_t *p_md );

          功能:设置媒体播放器将使用的媒体。


     ● LIBVLC_API void libvlc_media_player_set_hwnd ( libvlc_media_player_t *p_mi, void *drawable );

          功能:设置媒体播放器应位于的渲染其视频输出。


     ● LIBVLC_API int libvlc_video_get_size( libvlc_media_player_t *p_mi, unsigned num,unsigned *px, unsigned *py );

          功能:获取视频的宽高。返回0则成功。


     ● LIBVLC_DEPRECATED LIBVLC_API float libvlc_media_player_get_fps( libvlc_media_player_t *p_mi );

          功能:获取视频的帧率。返回0则失败,否则为帧率大小。


     ● LIBVLC_API libvlc_time_t libvlc_media_get_duration( libvlc_media_t *p_md );

          功能:获取视频的总长度。返回-1则失败,否则为长度。默认返回为毫秒。


     ● LIBVLC_API libvlc_time_t libvlc_media_player_get_time( libvlc_media_player_t *p_mi );

          功能:获取视频的当前进度,默认返回为毫秒。


     ● LIBVLC_API void libvlc_media_player_set_time( libvlc_media_player_t *p_mi, libvlc_time_t i_time );

          功能:设置视频的当前进度,参数2为毫秒。


     ● LIBVLC_API void libvlc_video_set_format(libvlc_media_player_t *mp, const char *chroma,unsigned width, unsigned height,unsigned pitch );

          功能:设置解码视频的色度和尺寸。本函数仅适用libvlc_video_set_callback函数,本函数与libvlc_video_set_format_callbacks函数互斥。


     ● LIBVLC_API int libvlc_media_player_play ( libvlc_media_player_t *p_mi );

          功能:开始播放。


     ● LIBVLC_API void libvlc_media_player_pause ( libvlc_media_player_t *p_mi );

          功能:暂停播放。


     ● LIBVLC_API void libvlc_media_player_stop ( libvlc_media_player_t *p_mi );

          功能:停止播放。


     ● LIBVLC_API void libvlc_video_set_callbacks( libvlc_media_player_t *mp,libvlc_video_lock_cb lock,libvlc_video_unlock_cb unlock,libvlc_video_display_cb display,void *opaque );

          功能:
                    设置回调方式得到每帧解码视频数据到自定义内存中。
                    使用libvlc_video_set_format() 或libvlc_video_set_format_callbacks() 函数可配置解码格式。

          参数及使用方式:

/******************************** 参数介绍 ********************************/
void libvlc_video_set_callbacks
(libvlc_media_player_t *mp,             // 媒体播放器对象libvlc_video_lock_cb lock,                // 数据加锁回调函数(必须实现)libvlc_video_unlock_cb unlock,         // 数据解锁回调函数(非必须实现,可传nullptr)libvlc_video_display_cb display,        // 数据显示回调函数(非必须实现,可传nullptr)void *opaque                            // 作为参数1,分别传入上面三个回调函数内
);
/********************************   END   ********************************//******************************** 使用介绍 (基于Qt临时写的测试代码,仅供参考) ********************************/
void *Vlc::vlcVideoLockCb(void *opaque, void **planes)
{Vlc *vlc = static_cast<Vlc*>(opaque);if(vlc){*planes = vlc->imageBuffer;}vlc = nullptr;return nullptr;
}void Vlc::vlcVideoDisplayCb(void *opaque, void *)
{Vlc *vlc = static_cast<Vlc*>(opaque);if(vlc){QImage *Image = new QImage(vlc->imageBuffer,static_cast<int>(vlc->imageWidth),static_cast<int>(vlc->imageHeight),QImage::Format_RGB32);if(Image && !Image->isNull()){// ImageFrame为Qt信号将QImage*传出显示。在显示完毕后记得清理QImage*内存。vlc->ImageFrame(Image);};Image = nullptr;}vlc = nullptr;
}class Vlc : QObject
{Q_OBJECTsignals:void ImageFrame(QImage *);protected:short imageWidth = 0,imageHeight = 0;unsigned char *imageBuffer = nullptr;static void *vlcVideoLockCb(void *opaque, void **planes);static void vlcVideoDisplayCb(void *opaque, void *)public:Vlc(){...// 获取视频宽高libvlc_video_get_size(vlcMediaPlay,0,&imageWidth,&imageHeight);// 设置加锁、显示回调,并将类传入。libvlc_video_set_callbacks(vlcMediaPlay,vlcVideoLockCb,nullptr,vlcVideoDisplayCb,this);/* 配置解码格式:1、  设置解码格式为"BGRA",所以在之后进行处理时请使用BGRA方式进行处理。例如,   当后续处理为使用Qt处理时,Qt中QImage的格式为"RGB"的大方向处理;而又比如后续使用为OpenCv时,cv::Mat则使用的格式为"BGR"大方向处理。2、        设置图像的宽高为imageWidth,imageHeight。3、    设置节距,类似设置总宽度。总宽度 = 宽度 * 色值数。该色值数由参数2决定。*/   libvlc_video_set_format(vlcMediaPlay, "BGRA", imageWidth, imageHeight, imageWidth * 4);// 设置读取帧数据内存imageBuffer = new char[imageWidth imageHeight * 4];memset(imageBuffer,0,imageWidth imageHeight * 4);...}
}
/********************************   END   ********************************/


推荐LibVLC课程

     51cto - 基于Qt的LibVLC专业开发技术

     csdn学院 - 基于Qt的LibVLC专业开发技术

关注

笔者 - jxd

微信公众号搜索 “码农总动员” 或 微信扫描下方二维码,了解更多你不知道的XX,O(∩_∩)O

LibVLC —— 常用函数解析相关推荐

  1. python重要的第三方库pandas模块常用函数解析之DataFrame

    pandas模块常用函数解析之DataFrame 关注公众号"轻松学编程"了解更多. 以下命令都是在浏览器中输入. cmd命令窗口输入:jupyter notebook 打开浏览器 ...

  2. 计算机vb常用计算公式,计算机等级考试二级VB常用函数解析

    p=ABS(X):取X的绝对值. p=Log(X):求X的自然对数. Y=Sgn(X):符号函数. 说明: X>0时Y=1;X=0时 Y=0;X<0 时Y=-1. 例: Response. ...

  3. tensorflow常用函数解析

    一.tf.transpose函数的用法 tf.transpose(input, [dimension_1, dimenaion_2,..,dimension_n]):这个函数主要适用于交换输入张量的不 ...

  4. 的向上取整函数_计算机二级Excel常用函数解析

    决定为大家推点干货 让大家学习一下 Excel的函数应用 ABS绝对值 从最简单的开始 第一个是ABS函数 简而言之 就是取绝对值 作用就是 MAX&MIN函数 这两个函数是好哥们 也比较简单 ...

  5. matlab 职坐标,Axure入门与基础常用函数解析整理

    元件函数 序号    函数            说明                        使用方法 1       Widget.Width    获取元件的宽度             ...

  6. Discuz!常用函数解析(续)

    /** * 产生随机码 * @param $length - 要多长 * @param $numberic - 数字还是字符串 * @return 返回字符串 */ function random($ ...

  7. LibVLC —— 常用对象解析

    结构体.类对象        ● typedef struct libvlc_instance_t libvlc_instance_t;           功能:                   ...

  8. cocos2d_x 常用函数解析

    1.menuCloseCallback  用于CCMenuItemImage的图片被用户点击后的处理. 转载于:https://www.cnblogs.com/xiao-wei-wei/archive ...

  9. pd.DataFrame()函数解析(最清晰的解释)

    欢迎关注WX公众号:[程序员管小亮] DataFrame是Python中Pandas库中的一种数据结构,它类似excel,是一种二维表. 文章目录 欢迎关注WX公众号:[程序员管小亮] ==DataF ...

  10. 《深入解析sas:数据处理、分析优化与商业应用》一3.5 SAS常用函数

    本节书摘来自华章出版社<深入解析sas:数据处理.分析优化与商业应用>一书中的第3章,第3.5节,作者 夏坤庄 徐唯 潘红莲 林建伟,更多章节内容可以访问云栖社区"华章计算机&q ...

最新文章

  1. C++中的override关键字
  2. 初始化方法-在类的外部给对象增加属性的隐患
  3. 《MySQL——join语句优化tips》
  4. php管道的概念,让你的php命令行程序处理管道数据
  5. 73. 文件上传(2)
  6. 总结Verilog中always语句的使用
  7. 麟龙指标通达信指标公式源码_麟龙四量图通达信指标公式源码
  8. MQTT协议测试——MQTT X工具使用
  9. 木疙瘩动画效果视频学习
  10. 计步算法 睡眠 心率 学习 PPG传感器(转))
  11. python广义矩估计_用EVIEWS进行估计时提示Near singular matrix解析
  12. 微信服务通知消息找回_抖音回应无法用微信登录疑:不清楚是否是人为因素
  13. 夜雨数竞笔记-中值问题(5)-泰勒中值定理
  14. coldfusion_ColdFusion教程:第一部分
  15. [AV1] AV1 帧内预测
  16. 字典的添加、更新、修改
  17. Day14:网络编程入门
  18. 桌面计算机找不到硬盘,计算机BIOS启动项找不到硬盘,我该怎么办?
  19. 实战篇ConstraintLayout的崛起之路
  20. 计算机语言表示教师节快乐,教师节快乐的祝福语38句

热门文章

  1. 手持普通计算机怎么开根号,数学里怎么开根号?具体方法
  2. 软件使用-如何卸载360安全客户端
  3. 解决因卸载WPS导致Excel表格打开提示“xls文件格式和扩展名不匹配,文件可能已损坏或不安全”
  4. php元换成万元,1000元怎么换算成万元(元怎么换成万元)
  5. 如何设置电脑的固定IP地址
  6. WinCC界面中通过插件打开pdf文件
  7. 【鸡汤】过往不恋,未来不迎,当下不杂
  8. DevOps 10大IT管理工具(翻译)
  9. Word 页眉 页脚 出现一条横线删不掉
  10. 第五届山东理工大学ACM网络编程擂台赛