libvlc外部api的简单整理(转载)

libvlc.h

定义了libvlc的外部api,引用这个头文件就可以把VLC嵌入到我们的程序里面了。

libvlc的对象必须先被初始化之后才能被使用。

libvlc core

  • libvlc_new() 用于初始化一个libvlc的实例,argc表示参数的个数,argv表示参数,返回创建的实例若当发生错误时返回NULL
  • libvlc_release()用于销毁一个libvlc的实例

  libvlc error handling

  • libvlc_errmsg()返回的是在idaoyong线程中产生的最新的libvlc错误,这个错误信息至少在另外一个错误发生之前(至少 再调用一次libvlc)都是有效的,当没有任何错误的时候返回的是NULL
  • libvlc_clearerr()用于清除当前线程的libvlc的错误状态.此操作是可选的,默认情况下,错误状态是会在新的错误发生时被覆 盖.
  • libvlc_vprinterr()用于设置当前线程的libvlc的错误状态和消息.无论何时都返回一个nul字符
  • libvlc_printerr() /源码里的注释和上一个一模一样
  • libvlc_retain()增加libvlc的引用计数,任何新的libvlc实例的引用计数为1
  • libvlc_add_intf():尝试启动libvlc实例的用户接口,p_instance表示要启动的实例,name为接口名,NULL 表示默认,返回0表示成功-1表示发生错误
  • libvlc_set_exits_handler():此函数用于为一个已存在的libvlc事件注册一个回调.此方法在你用 libvlc_add_intf()开启了至少一个接口时非常有用.典型的,这个函数将唤醒你的程序主循环(从其他线程).参数p_instance 表示libvlc实例,cb表示当libvlc要退出时要调用的回调.opaque表示回调的数据指针.警告:此函数不能同libvlc_wait()同 时调用.
  • libvlc_wait():等待到有一个接口引发实例的推出动作.必须先用libvlc_add_intf()开启至少一个接口.
  • libvlc_set_user_agent(): 设置应用程序名,当有协议要求的时候,libvlc将把这个名字作为用户代理串传递给它.参数name应该是一个可读的应用程序名,例如"FooBar player 1.2.3",http参数为HTTP User Agent。例如"FooBar/1.2.3 Python/2.6.0。
  • libvlc_get_Version():返回libvlc的版本号
  • libvlc_get_compiler():返回编译libvlc的编译器的版本。
  • libvlc_get_changeset() :返回libvlc的 changeset?

libvlc asynchronous events

libvlc 发出不同步事件

许多libvlc对象,如libvlc_instance_t libvlc_media_player_t不同步的产生时间,它们中的每一个都提供了libvlc_event_manager_t事件管理器。你可以 通过libvlc_event_attach()来订阅这些事件以及用libvlc_event_detach()来退订事件。

  • libvlc_event_manager_t是属于libvlc对象的事件管理器
  • libvlc_event_type_t:表示libvlc的事件
  • libvlc_callback_t():回调函数通知(call back function notification翻译不准确),参数p_event为触发回调的时间.
  • libvlc_event_attach():注册一个event notification。参数p_event_manager 想要绑定的事件管理器.通常来说它是由vlc_my_object_event_manager()处获得的,此处的my_object是你想要监听的对 象,i_event_type是想要监听的事件,f_callback是当i_event_type发生时要调用的函数。user_data是用户提供的 伴随事件而传递的数据。成功时此函数返回0,发生错误时返回ENOMEM
  • libvlc_event_detach()退订一个event notification
  • libvlc_event_type_name():获得一个事件的类型名

libvlc_log LibVLC logging

libvlc_log系列函数提供了访问libvlc消息日志的方法.这些函数仅用于高级用户或调试之用.

  • libvlc_get_log_verbosity():获得VLC消息的详细级别
  • libvlc_set_log_verbosity():设置VLC消息的详细级别
  • libvlc_log_open():开启VLC消息日志实例(从一个libvlc实例中获得其消息日志实例)
  • libvlc_log_close():关闭VLC消息日志实例
  • libvlc_log_count():返回日志中消息条数
  • libvlc_log_clear():清除日志实例.将把实例中的所有消息删除,为了防止消息阻塞,应该经常清除.
  • libvlc_log_get_iterator():定位并返回一个日志中记录的iterator
  • libvlc_log_iterator_free():释放一个先前定位好的iterator
  • libvlc_log_iterator_next():返回下一条日志消息,当接下来为空的时候返回NULL,否则返回下一个消息对象

libvlc_media.h

libvlc_media_t是一个可播放的媒体的抽象表达.它包含了这个媒体的位置以及各种可选的元数据.

  • libvlc_state_t:此枚举类型的循序必须严格保证和源码一致,同时可参考 mediacontrol_PlayerStatus,input_state_e枚举类型以及VideoLan.LibVLC.State(在 bindings/cil/src/media.cs)
  • libvlc_media_stats_t:Libvlc的媒体统计信息
  • libvlc_media_track_info_t:没有注释,主要是fourcc和docec的其他信息。
  • libvlc_media_new_location():使用一个给定的媒体资源路径来建立一个libvlc_media对象.参数 psz_mrl为要读取的MRL(Media Resource Location).此函数返回新建的对象或NULL.
  • libvlc_media_new_path():从本地文件系统路径新建,其他参照上一条
  • libvlc_media_new_as_node():使用给定的名称创建一个libvlc_media_t并将其作为一个空的节点
  • libvlc_media_add_option():添加一个选项到已有的libvlc_media_t,这个选项将被用于决定 media_player如何读取媒体。这样一来就可以在每个媒体上指定各自的VLC的高级reading/streaming选项。
  • libvlc_media_add_option_flag():减价一个带有可配置标记的选贤到已有的libvlc_media_t.其他同上 一条.
  • libvlc_media_retain():保留一个引用到一个媒体描述对象(libvlc_media_t.使用 libvlc_media_release()来减少一个媒体描述对象的引用计数
  • libvlc_media_release():减少一个libvlc_media_t的引用计数,如果减少到0时,此此函数将释放此对象(销 毁).它将发送一个libvlc_MediaFreed事件到所有的监听者那里。如果一个libvlc_media_t被释放了,它就再也不能使用了。
  • libvlc_media_get_mrl():从一个媒体描述对象处获得它的mrl
  • libvlc_media_duplicate():镜像一份媒体描述对象
  • libvlc_media_get_meta():读取媒体的元数据。如果媒体还没被解析,则返回NULL,这个方法会自动调用 libvlc_media_parse_async(),因此,在调用此方法以后,你可以接收到一个libvlc_MediaMetaChanged事 件。如果你希望使用一个同步的版本,请确保你在调用get_meta()之前调用了libvlc_media_parse();
  • libvlc_media_set_meta():设置媒体的元数据,此方法不会保存数据,还需要调用 libvlc_media_save_meta()来保存.
  • libvlc_media_get_state():获取当前媒体描述对象的状态.可能的状态被定义在livblc_structures.c 中.
  • libvlc_media_subitems():获得一个媒体描述对象的子项目.此方法将增加媒体描述对象的引用计数,使用 libvlc_media_list_release()减少引用计数.
  • libvlc_media_event_manager():获得一个媒体描述对象的事件管理器.
  • libvlc_media_get_duration():获得一个媒体描述对象的持续时间.发生错误时返回-1.
  • libvlc_media_parse():解析一个本地媒体的元数据和轨道信息,此方法是同步的.
  • libvlc_media_parse_async():同上,此方法不同步,你可以监听libvlc_MediaParsedChanged事 件来追踪他,如果已经被解析过了则此事件不会被触发。
  • libvlc_media_is_parsed():获得一个媒体描述对象的分析状态。当分析过了返回true。
  • libvlc_media_set_user_data():设置媒体描述符的用户数据,此数据仅被host程序访 问,VLC.framework将它作为一个指向一个引用了一个libvlc_media_t指针的本地对象的指针来使用
  • libvle_media_get_tracks_info():获得媒体描述符的基本流信息.注意你必须使用 --sout="#description"播放媒体恰好一次,否则将得到一个空的数组。而多次播放则会导致多个重复数据。

VLC API集合:http://www.videolan.org/developers/vlc/doc/doxygen/html/group__libvlc.html#_details

时间: 2024-07-31 19:31:42

libvlc外部api的简单整理(转载)的相关文章

libVLC 外部API的整理

由于作者不习惯该编辑器,只是贴出上本文的截图,详见:https://www.yuque.com/docs/share/50530512-3152-4348-8f2c-5c2d86b0b2f1 原文地址:http://blog.51cto.com/4754569/2327469

Zookeeper的api的简单使用(转载)

转载自: http://www.cnblogs.com/sunddenly/p/4031881.html 1.API 2.API 示例 ZooKeeper中的组成员关系 理解ZooKeeper的一种方法就是将其看作一个具有高可用性的文件系统.但这个文件系统中没有文件和目录,而是统一使用"节点"(node)的概念,称为znode.znode既可以作为保存数据的容器(如同文件),也可以作为保存其他znode的容器(如同目录).所有的znode构成一个层次化的命名空间.一种自然的建立组成员列

关于数字证书理解的简单整理以及12306网站证书简单分析

首先简单理解一下什么是数字证书.这里是一篇英文文档,描述的很形象.形象的描述了什么是公钥,什么是私钥,如果确保数字证书的可靠性等. 下面,我们看一个应用"数字证书"的实例:https协议.这个协议主要用于网页加密. 一般我们电脑的浏览器中都有一些受信任的证书颁发机构列表, 里边存储的都是一些机构的信息.这些机构都是权威的.当然可以通过安装软件的方式,来增加证书颁发机构,比如中国银行的根证书软件,阿里巴巴的根证书软件.默认我们认为这些软件都是从官网下载的,是绝对的没被篡改的,可靠的.简单

腾讯地图API简介、整理

目录 腾讯地图API 1 1.API概览... 1 1.1 WebService API(官网注明是beta版本,可能不稳定,慎用):... 1 1.2 URL API:... 2 1.3 静态图API:... 2 1.3 JavaScript API V2:... 2 1.4 另外还有Android SDK, Android 定位SDK,和IOS SDK,主要用于手机端开发.     2 2. 下面重点讲解JavaScript API V2:... 2 2.1最简单的地图-显示一张以坐标为中心

如何利用AngularJS服务接入外部API

除了轻松对HTML进行扩展的能力之外,AngularJS还提供一套简便途径.帮助我们与外部API实现交互.在今天的教程中,我们将共同探讨如何利用其服务与GitHub的API相对接,进而创建一套简单的库浏览器. 第一步:准备工作 我们就以下面这套基础HTML模板为起点: <!DOCTYPE html> <html> <head> <title>GitHub Search</title> </head> <body> <

MYBATIS 简单整理与回顾

这两天简单整理了一下MyBatis 相关api和jar包这里提供一个下载地址,免得找了 链接:http://pan.baidu.com/s/1jIl1KaE 密码:d2yl A.简单搭建跑项目 2.进行相关xml配置 放在根目录下 3.配置数据库映射文件 这里给个例子文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD

PHP语言基础简单整理

1.开始结束标记<? ... ?> 2.定义变量:$变量名 例: $str="锦清笋";不需要指明数据类型 3.输出语句:(1)echo "hello world!";---echo命令(2)print();输出语句,是函数,有返回值.输出成功返回1,失败返回0.(3) printf();格式化输出字符串.例:printf("%d,%f",12,12.3); (4)sprintf();格式化拼接字符串,不是输出语句,只能将字符串拼接.

哈希综述的简单整理

刚接触哈希,由于之后有其他工作,所以时间比较紧,只是做了一个简单粗糙的整理,可能还有不少错误.自己先放着,以后如果需要用到hash了在回头重新整理. 哈希综述的简单整理.pdf

AX中API的简单调用

FilePath    folder = "E:\\NewFolder1";    FilePath    filePath;    container   fileInfo;    int         fileHandle;    FileName    _FileName;    ; _FileName = folder;    filePath = _FileName; if (substr(_FileName,strlen(_FileName)-1,1) == '\\')