我已经找到了一些很好的答案,但是在 PHP 中,是否有使用 JavaScript 或 iOS 的方法?
我找到的链接:
- > How to get Vine video url (不确定这是如何实现的)
- > Get .mp4 source and poster image from Vine Id (PHP) - 它是 php,所以这不是我想要的。
例如,当您在视频上打开“检查元素”时,应该会出现此代码(自然具有不同的 id):
如果您输入 url("https://v.cdn.vine.co/r/videos/ ..... .mp4) 并在 .mp4 处停止,视频将在您的浏览器中作为视频播放,如下所示:
https://v.cdn.vine.co/r/videos/283A5A8FE01255752559474962432_365d817ea89.4.3.6417578100978898648.mp4
这就是我想要的;网址(“https://...”)。我可以编辑 URL 的全部内容以仅获取 .mp4 而不是之后的内容,即 .jpg。我能做到的。我似乎无法使用 https://vine.co/v/eUm1bYVvWj6 获取 url 内容按原样链接,不使用 PHP。
任何帮助将不胜感激。
我有可用的 UIWebView 和 MPMoviePlayer,可以在我的 urlRequest 中使用 HTML 字符串,也可以简单地使用 MPMoviePlayer 播放 .mp4 URL。我只想知道如何获得 .mp4。
最佳答案
尝试使用 HTML/JS 通过创建 HTML 字符串并通过 iframe 解析藤蔓来解决此问题后,我无法实现检索 .mp4 链接的预期结果。
我通过以下方式克服了这个问题:
转到 Ray Wenderlich有关解析 HTML 的教程,并按照教程进行任何您需要的操作。您需要的最重要的部分是将 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]; } }
这是我的 vine 播放器代码:
-(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/