MobileVLCKit和VLCKit工作原理和入门教程

NDIS herman 312浏览 0评论

VLCKit是Apple平台上任何音频或视频播放需求的通用库,并且还支持在Mac上进行流媒体和媒体文件对话。它是LGPLv2.1或更高版本授权的开源软件,可以从VideoLAN网站的源代码和二进制形式获得您还可以通过CocoaPods轻松集成  MobileVLCKit

这个框架的基础是Pierre d'Herbemont于2007年奠定的,作为Google Summer of Code 学生项目的一部分,事实上这是我的一种指导。从那以后,它在2008/2009 年开发Lunettes原型,2010/2011 MobileVLC以及2013年VLC for iOS的发展中扮演了重要角色,直到现在。

你什么时候需要VLCKit?坦率地说,当你需要播放不受QuickTime / AVFoundation支持的媒体时,或者你需要更多的灵活性。除了H264 / AAC文件或HLS流以外,还想播放其他内容吗?除了QuickTime对隐藏式字幕的基本支持之外,您还需要字幕吗?您的媒体来源不是您的移动设备,也不是基本的HTTP服务器,但也许是来自某些奇怪的媒体服务器的实时流,甚至是本地网络上广播的原始DVB信号?那么,VLCKit是给你的。

但这是开源软件吗?这对我和最终用户意味着什么?MobileVLC是否因为一些疯狂的许可原因而从2011年移出App Store?

首先,对于你来说开源的手段,你可以访问整个堆栈。没有黑匣子,所有的资源都在你的指尖。不需要反向工程,不需要私人API。

然后再次,这不一定适用于您的软件。LGPLv2.1允许包含在专有应用我们的软件,只要你按照许可证。首先,确保将您对我们的软件所做的任何潜在变更发布出来,确保最终用户知道VLCKit嵌入在您的更大工作中,并且他/她知道获得的权利。他/她有权访问我们的代码以及您对我们工作的补充。有关更多详细信息,请阅读许可证,并咨询您的律师并提出您可能遇到的任何问题。

关于MobileVLC的移除,这个世界稍微有些改变。libvlc和VLCKit不再处于GPLv2之下,但被重新授权给LGPLv2.1。虽然这看起来像是角色扮演,但对于在Mac或iOS App Store上发布内容非常重要。到目前为止,任何一家商店的服务条款仍然与GPLv2不兼容(尽管有重大改变和改进),但在LGPLv2.1下的分发是绝对允许的。

让我们开始技术概述并从图层模型开始:

VLCKit

任何图层只能与上面的图层和下面的图层进行通信。因此,解码器是远离客户端应用程序开发人员的四个抽象层。为什么这是件好事?通过具有相当数量的抽象,您不再需要知道哪个库正在处理解码,渲染或解析。您想知道您是否需要以多线程或单线程方式解码您的某个视频,认为解码可能会通过iPhone 5S及更高版本的硬件加速,但是在思考如何处理旧版本?libvlc会为你做正确的事情。
但是,我们允许灵活性。你知道你想在libavcodec上使用某个选项,因为它很酷(并且出于某种原因,我们决定不使用它)?这对你来说是一条线。

好吧,那么你怎么走?看看这里可以下载SimplePlayback示例代码忽略任何空的iOS应用程序项目中出现的样板代码,该基本应用程序将向您展示如何以8行代码播放视频并允许用户播放或暂停播放:

@interface RandomViewController ()
{
    VLCMediaPlayer *_mediaplayer;
}
@end
@implementation RandomViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    /* setup the media player instance, give it a delegate and
     * something to draw into */
    _mediaplayer = [[VLCMediaPlayer alloc] init];
    /* assign a random UIView or NSView to the player to
     * draw the video */
    _mediaplayer.drawable = self.movieView;
    /* create a media object and give it to the player */
    _mediaplayer.media = [VLCMedia mediaWithURL:
     [NSURL URLWithString:@“http://yourserver.com/folder/file.mkv“]];
}
- (IBAction)playandPause:(id)sender {
    if (_mediaplayer.isPlaying)
        [_mediaplayer pause];
    [_mediaplayer play];
}
@end

再说一次,你有机会在iOS上,并且想要更高级的用户体验。需要寻找滑块和时间显示,或者你想裁剪视频?您的媒体包含多个音频或字幕轨道,用户应该能够切换?代码就在你身边。我们编写了一个自包含的类,并根据BSD 2-clause许可证分发它如果您有兴趣,查看此处提供Dropin-Player项目

这就是本文的第一部分。第二部分将介绍更高级的VLCKit使用案例,并会在很短的时间内完成。

如果您有任何疑问,请不要犹豫使用评论部分或拍摄邮件。

关于iOS的VLC和从该项目获取代码的最后一句话。与VLCKit或提供的示例代码相反,它受到不同许可证和不同义务的保护。它是GPLv2MPLv2的双重许可证最重要的是,除非您的产品使用兼容许可证进行发布,否则绝对不允许使用任何代码。我们拥有良好的DMCA记录,并且我们不断监控Mac和iOS应用商店。

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加QQ1群:135430763(2000人群已满),QQ2群:454796847,QQ3群:187424846。QQ群进群密码:xttblog,想加微信群的朋友,可以微信搜索:xmtxtt,备注:“xttblog”,添加助理微信拉你进群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作可添加助理微信进行沟通!

本文原文出处:业余草: » MobileVLCKit和VLCKit工作原理和入门教程