Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使用mpmovieplayercontroller从dailymotion打开视频_Ios_Video_Mpmovieplayercontroller - Fatal编程技术网

Ios 如何使用mpmovieplayercontroller从dailymotion打开视频

Ios 如何使用mpmovieplayercontroller从dailymotion打开视频,ios,video,mpmovieplayercontroller,Ios,Video,Mpmovieplayercontroller,我想用mpmovieplayercontroller打开dailymotion的视频。我尝试过Dailymotion SDK,但它似乎只是将视频嵌入到uiwebview中。我想知道是否有一个dailymotion解析器可以像hcyoutubeparser或YTvVideoExtractor一样获取视频链接 -(NSDictionary*)getInfoForDailyMotionVideo:(NSString*)videoId { NSString *urlString = [NSString

我想用mpmovieplayercontroller打开dailymotion的视频。我尝试过Dailymotion SDK,但它似乎只是将视频嵌入到uiwebview中。我想知道是否有一个dailymotion解析器可以像hcyoutubeparser或YTvVideoExtractor一样获取视频链接

-(NSDictionary*)getInfoForDailyMotionVideo:(NSString*)videoId
{
NSString *urlString = [NSString stringWithFormat:@"http://www.dailymotion.com/embed/video/%@", videoId];
NSURL *URL = [NSURL URLWithString:urlString];
NSData * data = [[NSData alloc] initWithContentsOfURL:URL];
NSString *html = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSString *str;

NSRange startRange = [html rangeOfString:@"var info = {"];
str = [html substringFromIndex:startRange.location];
NSRange endRange = [str rangeOfString:@"{"];
str = [str substringFromIndex:endRange.location];
endRange = [str rangeOfString:@"},"];
NSString *jsonString = [str substringToIndex:endRange.location+1];


NSDictionary *result = [NSJSONSerialization JSONObjectWithData:[jsonString dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil];
return result;
}
通过xct647的视频ID,将返回一个字典,其中包含与MPMoviePlayerViewController一起工作的以下键:

"stream_h264_hq_url" = "http://www.dailymotion.com/cdn/H264-848x480/video/xct647.mp4?auth=1371275189-0d67b3d0c242a8b439adf4300014d749";
"stream_h264_ld_url" = "http://www.dailymotion.com/cdn/H264-320x240/video/xct647.mp4?auth=1371275189-f581218251d42809bf13ad96ea6aacb8";
"stream_h264_url" = "http://www.dailymotion.com/cdn/H264-512x384/video/xct647.mp4?auth=1371275189-f905cebbbe96c563beca38ab59132a95";
"stream_hls_url" = "http://www.dailymotion.com/cdn/manifest/video/xct647.m3u8?auth=1371275189-dbdb650a58afe8661ec6aa9628de064f";

对h264 url使用MPMovieSourceTypeFile,对“hls”url使用MPMovieSourceTypeStreaming。

最后一个答案是一个很好的起点,但不再有效,由于Javascript/JSON语法更改需要更新:

-(NSDictionary*)getInfoForDailyMotionVideo:(NSString*)videoId{
    NSString *urlString = [NSString stringWithFormat:@"http://www.dailymotion.com/embed/video/%@", videoId];
    NSURL *URL = [NSURL URLWithString:urlString];
    NSData * data = [[NSData alloc] initWithContentsOfURL:URL];
    NSString *html = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    NSString *str;

    NSRange startRange = [html rangeOfString:@"var config = {"];
    str = [html substringFromIndex:startRange.location];
    NSRange endRange = [str rangeOfString:@"{"];
    str = [str substringFromIndex:endRange.location];
    endRange = [str rangeOfString:@"}};"];
    NSString *jsonString = [str substringToIndex:endRange.location+1];
    jsonString = [jsonString stringByAppendingString:@"}"];
    NSError *jsonError;
    NSDictionary *result = [NSJSONSerialization JSONObjectWithData:[jsonString dataUsingEncoding:NSUTF8StringEncoding] options:0 error:&jsonError];
    return result;
}
它现在可以工作并返回AVPlayer等的所有相关值


玩得开心

据我所知,你几乎总是要通过网络浏览,包括嵌入来自Youtube、Vimeo和Daily motion的视频。基本上你能做的不多:(不,对于vimeo和youtube视频,有一些解析器可以获取视频url,你可以用MPMoviePlayer播放视频。你可以展示一些例子吗?我最近一直在寻找这个解决方案,在寻找了数小时后我放弃了。这也是未来的证明吗?