我已经找到了一些很好的答案,但是在PHP中,有没有JavaScript或iOS方法?
我找到的链接:
How to get Vine video url(不确定如何实现)
Get .mp4 source and poster image from Vine Id (PHP)-它是php,所以不是我要追求的。
例如,当您在视频上打开“检查元素”时,应显示以下代码(自然会有不同的ID):
如果您输入url(“ ...... mp4)并停在.mp4,则视频将在您的浏览器中作为视频播放,如下所示:
https://v.cdn.vine.co/r/videos/
这就是我要的; url(“ https:// ....”)。我可以编辑URL的全部内容,以仅获取.mp4,而不获取其后的内容,即.jpg。我能做的。我似乎无法通过原样使用https://v.cdn.vine.co/r/videos/283A5A8FE01255752559474962432_365d817ea89.4.3.6417578100978898648.mp4链接而不使用PHP来获取url内容。
任何帮助将非常感激。
我同时提供UIWebView和MPMoviePlayer,可以在urlRequest中使用HTML字符串,也可以使用MPMoviePlayer播放.mp4 URL。我只是想知道如何获取.mp4。
最佳答案
在尝试通过创建HTML字符串并通过iframe
解析藤使用HTML / JS解决此问题之后,我无法获得检索.mp4链接的预期结果。
我克服了这个问题:
转到有关解析HTML的Ray Wenderlich教程,并按照教程的需要进行操作。您将需要的最重要的部分是将hpple文件安装到您的项目(可通过Ray Wenderlich教程找到)并参考libxml2。
使用以下代码进行解析以获取MP4:
-(void)loadVine: (NSString *) vineLink {
//create the string to store the result
NSString * url = nil;
// Create a URL from the String passed in
NSURL *vineURL = [NSURL URLWithString:vineLink];
NSData *vineHTMLdata = [NSData dataWithContentsOfURL:vineURL];
TFHpple *vineParser = [TFHpple hppleWithHTMLData:vineHTMLdata];
// This is the most important part of your query
// The vine .mp4 path is in the `<meta>` tag as show below
NSString *vineXpathQueryString = @"//meta[@property='twitter:player:stream']";
NSArray *vineNodes = [vineParser searchWithXPathQuery:vineXpathQueryString];
for (TFHppleElement *element in vineNodes) {
//this sets your `NSString * url` to be the result
url = [element objectForKey:@"content"];
//print it out in log to display your .mp4 link
NSLog(@"What is the vine? %@", url);
//now pass it to your player
[self autoPlayVine:url];
}
}
这是我的葡萄藤球员代码:
-(void) autoPlayVine :(NSString *) link{
NSURL * url = [NSURL URLWithString:link];
self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlayBackDidFinish:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:self.moviePlayer];
self.moviePlayer.controlStyle = MPMovieControlStyleDefault;
self.moviePlayer.shouldAutoplay = YES;
// set the frame to be full screen - needed otherwise you may only get the audio as there is no frame size set, but the movieplayer has been added to the view
self.moviePlayer.view.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height);
// below enables either continuous loop or delete for one time play
self.moviePlayer.repeatMode = YES;
[self.view addSubview:self.moviePlayer.view];
[self.moviePlayer setFullscreen:YES animated:YES];
}
根据您的喜好在您的
viewDidLoad
或viewWillAppear
中进行调用:NSString * yourVineLink = @"https://vine.co/v/.......";
[self loadVine:yourVineLink];
通过遵循Ray Wenderlich教程,确保已将正确的文件和导入语句添加到项目中,这一点很重要。如果您这样做了,那么一切都将正常工作(除非Vine决定更改其元标记/.mp4链接的位置)。
注意:您可以在方法名称中使用URL,但是我喜欢NSString,这只是我的风格。
请享用。
关于javascript - 获取Vine .mp4源-iOS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32430455/