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 Live API 创建实时视频对象时的隐私设置