Tag: m3u8

如何在IOS应用程序下载m3uvideo?

我正在开发一个IOS应用程序,将一些video下载到本地,以便用户可以离线观看这些video。 但目前,很多video都是m3u和m3u8格式。 据我所知m3u和m3u8只是一个video列表。 所以我的问题是我怎样才能真正的video文件下载到本地和播放他们的m3u和m3u8格式。

在iOS上播放.m3u8文件

我有.m3u8链接,我需要在支持HLS Protocol iOS上播放。 当我将URL直接分配给MPMoviePlayerController并播放时,video不可见,但我可以听到audio。 NSURL *movieURL = [NSURL URLWithString:@"http://qthttp.apple.com.edgesuite.net/1010qwoeiuryfg/sl.m3u8"]; MPMoviePlayerController *mp = [[MPMoviePlayerController alloc] initWithContentURL:movieURL]; [self.view addSubview:self.moviePlayer.view]; if (mp) { // save the movie player object self.moviePlayer = mp; [self.moviePlayer setFullscreen:YES]; // Play the movie! [self.moviePlayer play]; } 我需要做什么额外的东西在iOS端?

Mp4到HLS使用ffmpeg

我试图在iOS应用程序中使用ffmpeg将本地.mp4video转换为HLS。 我已经使用pod集成了ffmpeg包装器,并生成了所有分段的.ts文件和m3u8文件,但某些.ts文件段未在.m3u8播放列表文件中列出,如下所示。 它总是列出最后5个video片段。 #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:2 #EXT-X-MEDIA-SEQUENCE:13 #EXTINF:2, out13.ts #EXTINF:1, out14.ts #EXTINF:2, out15.ts #EXTINF:2, out16.ts #EXTINF:1, out17.ts #EXT-X-ENDLIST 我用下面的代码来生成HLS。 FFmpegWrapper *wrapper = [[FFmpegWrapper alloc] init]; [wrapper convertInputPath:inputFilePath outputPath:outputFilePath options:nil progressBlock:^(NSUInteger bytesRead, uint64_t totalBytesRead, uint64_t totalBytesExpectedToRead) { } completionBlock:^(BOOL success, NSError *error) { success?NSLog(@"Success…."):NSLog(@"Error : %@",error.localizedDescription); }]; 有没有其他方法可以做到这一点?

当AVPlayer播放m3u8stream时,如何捕捉图像?

我使用AVPlayer播放一个m3u8文件,并且我想在这些代码中捕获一个图像: AVAssetImageGenerator *gen = [[AVAssetImageGenerator alloc] initWithAsset:self.player.currentItem.asset]; gen.appliesPreferredTrackTransform = YES; NSError *error = nil; CMTime actualTime; CMTime now = self.player.currentTime; [gen setRequestedTimeToleranceAfter:kCMTimeZero]; [gen setRequestedTimeToleranceBefore:kCMTimeZero]; CGImageRef image = [gen copyCGImageAtTime:now actualTime:&actualTime error:&error]; UIImage *thumb = [[UIImage alloc] initWithCGImage:image]; NSLog(@"%f , %f",CMTimeGetSeconds(now),CMTimeGetSeconds(actualTime)); NSLog(@"%@",error); if (image) { CFRelease(image); } 但它不起作用。 而错误是: Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not […]