Facebook Live Video API,我可以通过编程方式分享朋友视频流吗?

Posted

技术标签:

【中文标题】Facebook Live Video API,我可以通过编程方式分享朋友视频流吗?【英文标题】:Facebook Live Video API, can I share a friend video stream programmatically? 【发布时间】:2016-04-13 11:02:02 【问题描述】:

我想以编程方式在我自己的墙上分享 Facebook 视频直播。我想在使用facebook sdk 登录 Facebook 后在我的应用程序中执行此操作,类似于普通的链接共享:

 NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
 [params setObject:link forKey:@"picture"];
 [params setObject:LinkStringa forKey:@"link"];
 [params setObject:ShareTextView.text forKey:@"message"];
 [params setObject:[[FBSDKAccessToken currentAccessToken] tokenString] forKey:@"access_token"];

  FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
                                initWithGraphpath:@"/me/feed"
                                parameters:params
                                HTTPMethod:@"POST"];
  [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                              id result,
                                              NSError *error) 

      // Handle the result
      if (!error) 



      
      else
          NSLog(@"error %@",error.description);
      

  ];

我在 Facebook 文档中找不到有关共享实时视频的提及,只有如何创建和发布实时视频。如何分享直播视频?

【问题讨论】:

您在上面的代码中使用了什么链接,哪些链接不起作用?直播视频基本上只是一个“帖子”,因此您应该能够分享该帖子的链接 【参考方案1】:

你可以使用这个方法:

- (void)enableFacebookLiveStreamingWithCompletionHandler:(void(^)(NSString* facebookStreamURL, NSString* facebookStreamKey, NSError* error))completionHandler;

    dispatch_async(dispatch_get_main_queue(), ^
        if ([[FBSDKAccessToken currentAccessToken] hasGranted:permissionPublishActions])
        
            NSString* liveVideosRequestPath = [NSString stringWithFormat:@"/%@/live_videos",[FBSDKAccessToken currentAccessToken].userID];
            FBSDKGraphRequest* request = [[FBSDKGraphRequest alloc] initWithGraphPath:liveVideosRequestPath parameters:nil HTTPMethod:@"POST"];

            [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) 

                NSLog(@"%@",[FBSDKAccessToken currentAccessToken].permissions);

                if (error)
                
                    if (completionHandler)
                        completionHandler(@"",@"",error);
                
                else
                
                    if (completionHandler)
                        completionHandler(@"rtmp://rtmp-api.facebook.com:80/rtmp/",[[result objectForKey:@"stream_url"] lastPathComponent],nil);
                

            ];
        
    );

对于通过 RTMP 进行流式传输,请使用此开源库:https://github.com/jgh-/VideoCore

有一个代码例如:

self.vcSession = [[VCSimpleSession alloc] initWithVideoSize:CGSizeMake(854, 480) frameRate:30 bitrate:1000000 useInterfaceOrientation:NO];
[self.view addSubview:self.vcSession.previewView];
self.vcSession.previewView.frame = CGRectMake(40, 40, 320, 240);//self.view.bounds;
self.vcSession.delegate = self;
[self.vcSession startRtmpSessionWithURL:@"your rtmp:URL "andStreamKey:@"your stream key"];

【讨论】:

除 VideoCore 以外的任何其他库?【参考方案2】:

斯威夫特 3

你可以查看这个仓库

https://github.com/hansemannn/facebook-live-ios

如何使用

var liveVideo: FBSDKLiveVideo!

override func viewDidLoad() 
    super.viewDidLoad()
  
    // Create the live video service
    liveVideo = FBSDKLiveVideo(
        delegate: self,
        previewSize: self.view.bounds,
        videoSize: CGSize(width: 1280, height: 720)
    )
    
    // Optional: Configure the live-video (see the source for all options)
    liveVideo.privacy = .me // or .friends, .friendsOfFriends, .custom
    liveVideo.audience = "me" // or your user-id, page-id, event-id, group-id, ...
    
    // Optional: Add the preview view of the stream to your container view.
    myView.addSubView(liveVideo.preview)

【讨论】:

【参考方案3】:

找到此链接https://developers.facebook.com/docs/videos/live-video-api,其中指出:

" 流式传输实时视频

创建 live_video 对象后,将在响应中返回 stream_url 和 key。服务器 URL 将是 http://rtmp-api.facebook.com/rtmp/ 并且流密钥将是它之后的所有内容。两者都使用,以便通过您的流媒体软件推送视频帧。”

让我知道结果如何,因为我也在启动具有此功能的应用程序。

【讨论】:

这只是您的流媒体软件需要用来向 Facebook 发送帧的 URL,而不是您应该用来在 Facebook 上共享流媒体的链接

以上是关于Facebook Live Video API,我可以通过编程方式分享朋友视频流吗?的主要内容,如果未能解决你的问题,请参考以下文章

可能使用 facebook SDK 进行直播

使用 Facebook Live API 创建实时视频对象时的隐私设置

我如何直播 Facebook Live 预览流

facebook api获得实时评论

使用 Android 中的 Graph API 在 Facebook 上直播视频

uniapp 刷新video和live-player组件,实现刷新效果