如何使用 AVPlayer 解析 m3u 文件

Posted

技术标签:

【中文标题】如何使用 AVPlayer 解析 m3u 文件【英文标题】:How to parse m3u file with AVPlayer 【发布时间】:2015-04-14 13:36:02 【问题描述】:

我想从 m3u 文件头而不是从 id3Tags 中获取跟踪信息。在 AVPlayer 的 timedMetaData 属性中,它只提供了 id3Tag 解析。

如何使用 AVPlayer 从以下 m3u 文件中获取标题、艺术家、网址等

#EXTM3U
#EXT-X-ALLOW-CACHE:NO
#EXT-X-TARGETDURATION:11
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10,title="Dark Horse",artist="Katy Perry / Juicy J",url="song_spot=\"M\" MediaBaseId=\"1971116\" itunesTrackId=\"0\" amgTrackId=\"-1\" amgArtistId=\"0\" TAID=\"35141\" TPID=\"23894643\" cartcutId=\"0729388001\" amgArtworkURL=\"http://assets.iheart.com/images/1080/MI0003667474\" length=\"00:03:32\" unsID=\"-1\""
http://chunks.ihrhls.com/1469/GqsS8fnz2S6-301028-9984.aac
#EXTINF:10,title="Dark Horse",artist="Katy Perry / Juicy J",url="song_spot=\"M\" MediaBaseId=\"1971116\" itunesTrackId=\"0\" amgTrackId=\"-1\" amgArtistId=\"0\" TAID=\"35141\" TPID=\"23894643\" cartcutId=\"0729388001\" amgArtworkURL=\"http://assets.iheart.com/images/1080/MI0003667474\" length=\"00:03:32\" unsID=\"-1\""
http://chunks.ihrhls.com/1469/spXO68wER45-301029-9984.aac
#EXTINF:10,title="Dark Horse",artist="Katy Perry / Juicy J",url="song_spot=\"M\" MediaBaseId=\"1971116\" itunesTrackId=\"0\" amgTrackId=\"-1\" amgArtistId=\"0\" TAID=\"35141\" TPID=\"23894643\" cartcutId=\"0729388001\" amgArtworkURL=\"http://assets.iheart.com/images/1080/MI0003667474\" length=\"00:03:32\" unsID=\"-1\""
http://chunks.ihrhls.com/1469/RSEeNpIOEHk-301029-10031.aac

【问题讨论】:

你找到使用 ios 原生 AVPlayer 从播放列表中获取元数据的方法了吗? 【参考方案1】:

您可以使用AVURLAsset获取曲目信息

AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:[NSURL URLWithString:url] options:nil];
NSArray *keys = @[@"playable", @"tracks", @"duration"];

[asset loadValuesAsynchronouslyForKeys:keys completionHandler:^() 
     for (NSString *thisKey in keys) 
         NSError *error = nil;
         AVKeyValueStatus keyStatus = [asset statusOfValueForKey:thisKey error:&error];
         if (keyStatus == AVKeyValueStatusFailed) 
             //handle error
         
     
 ];

还可以查看此answer 以获取标题、专辑等。

【讨论】:

以上是关于如何使用 AVPlayer 解析 m3u 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在swift中获取视频.m38u文件url支持的分辨率

swift - 如何解析m3u播放列表中的徽标图像

如何在 iOS 本地播放 .ts(传输流)文件

在 AVPlayer 缓冲时设置 UIActivityIndi​​catorView?在目标 c

如何在 iOS 中保存流媒体视频?

AVPlayer 没有从本地文件播放 m3u8