本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云
在VLCKit中,您播放的每个项目都是VLCMedia对象。对于典型的用例,可以使用包含路径的NSURL或NSString创建它。
我们区分两种元数据:描述媒体的技术信息,如编解码器,比特率,视频大小和用户可见/提供的信息,如艺术家,出版商名称,专辑名称。
让我们从技术信息开始,可以使用单个API调用从任何媒体对象中检索技术信息:
@property (NS_NONATOMIC_IOSONLY, readonly, copy) NSArray *tracksInformation;
这为您提供了一个包含与媒体包含音轨一样多的字典的阵列,无论是视频,音频还是子图片(字幕,图文电视)。轨道类型由VLCMediaTracksInformationType键定义。所有曲目将包含有关各自编解码器,比特率和编码细节的信息。根据音轨类型,将设置视频尺寸,音频通道编号或文本编码的键以及语言的可选键。
检索此属性可能会非常昂贵,尤其是如果您的媒体远程存储,因为VLCKit将同步分析源以提供此信息。因此,我们建议您缓存此数据,因为它在VLCMedia对象的生命周期中可能不会更改。
注意:对于编解码器信息,您将收到一个整数,该整数是编解码器名称的原始FOURCC表示。VLCKit 2.2以后的发行版将包含一种便利方法,将其转换为最终用户可读的字符串。
在移动设备上,如果给定设备足够强大以解码给定视频文件,则可能会遇到问题。为此,VLCMedia包含isMediaSizeSuitableForDevice属性,它将提供合理的猜测。请注意,该属性在OS X上始终为真。
那么,关于媒体内容的非技术性信息呢?为了检索它们,VLCKit需要解析源代码。这可以同步和异步完成,具体取决于应用程序的需求。我们通常建议您使用异步方式,以免阻塞任何线程的执行。VLCMedia包含一个可选的委托协议,它允许您在每次进一步的信息变得可用时以及在解析完成时接收通知,从而跟踪元数据处理。
VLCKit可以提供多达17种不同的元数据密钥,并在后续版本中提供更多内容。尽管它允许一个一个地读取它们,但我们建议您使用以下命令获取完整的字典:
@property (nonatomic, readonly, copy) NSDictionary * metaDictionary;
如果您有对媒体源的写入权限,则还可以为各个键设置值并将其保存到磁盘。
最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!
本文原文出处:业余草: » MobileVLCKit和VLCKit处理元数据