帮酷LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:LIVE  SDK  实时流式传输  streaming-video  str  视频  
Live Streaming Video SDK for iOS

  • 源代码名称:900SecondsSDK
  • 源代码网址:http://www.github.com/900Seconds/900SecondsSDK
  • 900SecondsSDK源代码文档
  • 900SecondsSDK源代码下载
  • Git URL:
    git://www.github.com/900Seconds/900SecondsSDK.git
  • Git Clone代码到本地:
    git clone http://www.github.com/900Seconds/900SecondsSDK
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/900Seconds/900SecondsSDK
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
  • 900 SecondsSDK

    用于iOS的实时流媒体视频 SDK

    900Seconds是一个视频流库,它为你的移动应用程序轻松添加geolocated实时流。 它封装了整个视频流相关技术,如处理设备相机,处理过滤器和使用rtc编码视频存储。 它还有一个后台处理应用授权,存储流对象,并可以请求获取可用流。

    SDK处理的一些功能:

    • 用设备摄像机拍摄视频
    • 在飞行中应用视频效果( 模糊。pixelize。视频上的手指绘画等)
    • 压缩视频块并将它的上载到文件存储
    • 获取地理位置周围的可用流
    • 视频流回放

    快速入门指南

    插件安装和依赖项

    900Seconds在它的工作中使用了几个第三方库。 为了在你的项目中使用它,你需要添加那些库。 以下是设置所有必需依赖项的步骤:

    900Seconds SDK需要以下库和框架列表

    • 要求由 GPUImage。 GPUImage已经与SDK链接,但它的依赖关系不是
    • CoreMedia
    • CoreVideo
    • OpenGLES
    • AVFoundation
    • QuartzCore
    • FFMPEG 要求。 只需要 static 库 avcodec.a, avdevice.a, avformat.a, avutil.a
    • libavutil
    • libavdevice
    • libavformat
    • libavcodec
    • libz
    • 区块上传需要
    • AWSCore
    • AWSS3
    • libsqllite3

    如果希望能够在模拟器上运行项目,那么还必须向它的中添加iframe系统库:

    • libiconv.dylib

    只需在"链接框架和库"部分的项目设置中。

    要向项目添加 900Seconds 个 SDK,你需要添加

    <key>NSAppTransportSecurity</key>
    <dict>
     <key>NSExceptionDomains</key>
     <dict>
     <key>livestreamsdk.com</key>
     <dict>
     <key>NSIncludesSubdomains</key>
     <true/>
     <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
     <true/>
     <key>NSTemporaryExceptionMinimumTLSVersion</key>
     <string>TLSv1.1</string>
     </dict>
     </dict>
    </dict>

    要使用SDK类,你需要导入 900Seconds 个 SDK file:

    #import"Nine00SecondsSDK.h"

    或者你可以为要使用的特定类添加标题:

    `#import"NHSBroadcastManager.h"`

    文档

    你可以在 Nine00SecondsSDK/Docs/目录下找到苹果风格的appledoc -generated文档。 它包含了库和类的所有 api,每个api都有。

    基本用法

    包含注释的所有基本库功能概述。

    Autorizing应用程序

    首先,你需要使用 900Seconds 个网页接口来 register 应用程序。 注册将要求你的申请 ID。 为了让库能够流视频,你必须提供一个访问你的文件存储的权限。 目前只支持 AWS S3。 你需要在AWS上进行 register,获取文件存储的凭据,并在注册 900Seconds SDK时使用它们。 返回 900Seconds 将为你提供密钥,你可以用它来授权你的应用程序。

    授权本身非常简单,只需要一个对 NHSBroadcastManager的调用:

    [NHSBroadcastManager registerAppID:@"YOUR_APP_ID"withSecret:@"YOUR_SECRET_KEY"withCompletion:(void ( ^ ) ( NHSApplication *application, NSError *error ))completion];

    这里调用应在启动时进行。 推测上 application:didFinishLaunchingWithOptions: 你的App Delegate的方法,但是实际上是你的选择,只是在开始使用SDK之前。 这里方法的完成是可选的,只是为了检查没有错误。 NHSApplication 对象是一个模型对象,它封装了文件存储凭据和其他应用程序信息。 SDK本身保留这个实例,所以不需要将它存储在你的应用程序的某个地方。

    录制视频

    900Seconds SDK已经有所有相关的AVFoundation相机,并在内部编码逻辑,所以你不需要设置任何东西。 要从摄像机开始预览视频提要,只需将 previewView 从 NHSBroadcastManager 添加到你的视图层次:

    self.broadcastManager = [NHSBroadcastManager sharedManager];
    self.broadcastManager.qualityPreset = NHSStreamingQualityPreset640HighBitrate;
    self.broadcastManager.delegate = self;
    self.previewView = [self.broadcastManager createPreviewViewWithRect:self.view.bounds];
    [self.view addSubview:self.previewView];

    然后打电话给 startPreview:

    [self.broadcastManager startPreview];

    你可以更改照相机以进行录制

    [self.broadcastManager setupCameraInto:...];

    或者设置在流( 广播和预览) 上应用的动态滤镜

    [self.broadcastManager setupCameraFilter:... withParams:...];

    要开始流,只需要另外一个调用:

    [self.broadcastManager startBroadcasting];

    这个调用将在后台创建流对象,并开始写入和上传视频块到文件存储。 同时它将开始观察CoreLocation的位置,作为我们SDK中的每个流都必须有一个位置。 为了保持用户坐标的隐私,只需要 100米的精度。

    另外,你可以实现 NHSBroadcastManagerDelegate 方法来了解一切是否成功,或者什么原因。

    要停止流和预览,只需调用:

    [self.broadcastManager stopBroadcasting];
    [self.broadcastManager stopPreview:NO];

    大多数预览和广播调用都是异步的。 实现相应的NHSBroadcastManagerDelegate 方法来准确了解开始/停止方法完成的时间。

    获取实时流

    通过SDK的应用程序可以从后端提取所有的流,作为 NHSStream 对象的array。 这个模型包含了关于流的信息,作者 ID,启动或者停止,以及它的生命周期等信息,它是模型对象。

    获取流有两个主要选项。 第一种是获取半径围绕某些位置点的流。 要执行这里获取,应调用

    [[NHSBroadcastManager sharedManager] fetchStreamsNearCoordinate:(CLLocationCoordinate2D)coordinate
     withRadius:(CGFloat)radiusInMeters
     sinceDate:(NSDate *)date
     withCompletion:(NHSBroadcastApiCallCompletion)completion];

    Fetch将请求后端列出满足参数的流列表。 当后端响应完成时,将调用。 NHSStream objects objects objects objects objects objects array of objects objects objects objects object object object object object object object object object object object object。 你可以将半径 radius radius date date date ignore忽略那些参数,它将返回这里应用程序所做的所有流。

    第二个提取选项是提取由特定作者生成的最后 30个流。

    [[NHSBroadcastManager sharedManager] fetchStreamsOfAuthorWithID:(NSString *)authorID
     untilDate:(NSDate *)untilDate
     completion:(NHSBroadcastApiCallCompletion)completion];

    默认情况下,任何 NHSStream 对象都将authorID属性设置为在第一个应用程序启动时生成的唯一字符串。 因此每个流都有一个应用程序在它所做的特定设备上的应用程序的标识符。 将这里标识符传递给这里方法将指定要获取的用户流。 如果你通过,那么备份将返回由这个应用程序生成的最后 30个流,而不管。 要获取当前用户所做的流,必须将当前authorID的应用程序传递给这里方法。

    也可以通过调用以下方法删除任何特定的流

    [[NHSBroadcastManager sharedManager] removeStreamWithID:(NSString *)streamID
     completion:(void ( ^ ) ( NSError *error ))completion];
    流播放

    播放任何流,可以使用SDK播放器或者任何其他你想要的播放器。 虽然有一些差异。 900Seconds SDK可以评估每个流的流行程度。 为了使这个事件发生,应用程序必须通知 900Seconds 个后台,有人开始监视流。 当SDK播放器被使用时会被监视到每个特定流被监视,但是如果流被任何它的他玩家监视。

    SDK播放器类是 NHSStreamPlayerController。 它提供了一个内置的UIView插件,带有视频源,可以添加到控制器层次结构的任何视图视图中。 要使用它,你必须使用 NHSStream 初始化它:

    NHSStreamPlayerController *player = [[NHSStreamPlayerController alloc] initWithStream:(NHSStream *)stream];
    [self.view addSubview:player.view];

    播放机控制器是 MPMoviePlayerController的子类,因此你可以使用任何标准的MediaPlayer方法。 若要在流 play/stop/stall 上接收回调,请使用NHSStreamPlayerController委托 NHSStreamPlayerControllerDelegate。

    或者你可以自己播放流。 为了做到这一点,你需要从 NHSBroadcastManager 获取流 URL:

    NSURL *streamingURL = [[NHSBroadcastManager sharedManager] broadcastingURLWithStream:(NHSStream *)stream];

    你可以在 MPMoviePlayer 或者AVPlayer或者任何其他播放器中播放这里网址。 只要记住,它将不会增加流的流行性,因为后端将不会被告知这个回放。

    其他要求

    除了包含列表第三方库your你的应用程序必须在 iOS 8或者高版本上部署。



    文章标签:str  视频  SDK  LIVE  实时流式传输  streaming-video  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语