Tag: hls

video暂停时,AVPlayer Fairplay HLS不会停止audio播放

尽pipe我试图只select与在线Fairplay Streaming相关的部分,而不是持久性/离线播放,但我正在使用Apple的Fairplay Streaming示例代码在https://developer.apple.com/streaming/fps/上使用Fairplay实现。 在下面的代码中,没有Fairplay的video播放/暂停/寻找正常,但是当我播放Fairplay保护的video时,只有video轨道的行为正确。 暂停播放不会停止audio播放,更改音轨不会停止以前的音轨,所以两个播放,也许寻找也不起作用。 除了这个帮助类以外,我还从Apple的FairPlay Streaming Server SDK的客户端示例代码中获得了AssetLoaderDelegate和AssetPlaybackManager ,我已经更新了代码来处理我们的DRM密钥的SPC / CKC供应商。 我是否想要实现代码的一些重要部分来处理FPSstream媒体的audio? 你能指点我正确的方向吗? 非常感谢。 class PlayHelper { static let shared = PlayHelper() fileprivate var playerViewController: PlayerViewController? init() { AssetPlaybackManager.sharedManager.delegate = self } // Play video without DRM func playVideo(from urlString: String, at context: UIViewController) { guard let videoURL = URL(string: urlString) else { Log.error("Video […]

AVAssetResourceLoaderDelegate不被调用

我一直试图得到一些AVAssetResourceLoaderDelegate协议的消息,但它似乎永远不会被调用。 我已经validation了一切正在主线上发生; 从创buildAVURLAsset ,创buildAVPlayerItem ,创build委托,并将委托队列设置为主线程。 我正在尝试使用networking托pipe的MP4内容和未encryption的HLS内容。 我的声明: @property (readwrite, strong) AVPlayer* player; @property (strong) AVPlayerItem* playerItem; @property (strong) id<AVAssetResourceLoaderDelegate> resourceLoaderDelegate; 播放video的代码: AVURLAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil]; … self->_resourceLoaderDelegate = [[MyAssetResourceLoaderDelegate alloc] init]; [asset.resourceLoader setDelegate:self->_resourceLoaderDelegate queue:dispatch_get_main_queue()]; … self->_playerItem = [AVPlayerItem playerItemWithAsset:asset]; … [self setPlayer:[AVPlayer playerWithPlayerItem:self->_playerItem]]; 但是, resourceLoader:shouldWaitForLoadingOfRequestedResource:永远不会被调用(其他任何委托方法都不会)。 为了清楚起见,我使用iOS模拟器以及运行iOS 8的iPhone 5s进行testing(结果看起来完全相同)。 我已经validation了所有的代码正在主线程上执行,正如我在这个问题中读到的,一切都必须在同一个线程上。 有没有人有任何build议,或者也许是一些可用的代码实际被调用的源代码的引用? 更新:我已经确定,这个代码工作正常,当url是一个本地文件,但它仍然无法正常工作时,它是一个远程文件。 是预期的行为还是有办法我可以这样做的远程文件?

如何在iOS中合并2 .ts文件

我有1个主播放列表m3u8文件里面有以下文本。 EXTM-X-MEDIA:TYPE = AUDIO,GROUP-ID =“audio-0”,NAME =“Default”,AUTOSELECT = YES,DEFAULT = YES,URI =“ audio.m3u8 ”#EXT-X-STREAM- INF:PROGRAM-ID = 1,BANDWIDTH = 968000,RESOLUTION = 640×360,CODECS =“avc1.42001e,mp4a.40.2”,AUDIO =“audio-0” video.m3u8 下载audio.m3u8之后,我发现有很多.ts文件的信息与同名的字符包含了不同的字节范围信息#EXT-X-BYTERANGE:272976 @ 0,….,#EXT-X-BYTERANGE:2737273 @ 74747。 我已经从列表中下载了一个名为audio.ts的段文件。 我再次下载video.m3u8其中也包含可能.TS文件信息里面有不同的字节范围值相同的名称 EXT-X-BYTERANGE:1010500 @ 0 video.ts,….,#EXT-X-BYTERANGE:23423 @ 5445 video.ts 我在播放列表中的问题.. 是否需要下载包含URL值的m3u8格式的所有已定义的audio文件和m3u8的video文件。 从媒体播放列表中。有许多.ts文件给出不同的字节范围,我应该为各自的video段文件下载。 audio.ts和video.ts连接的概念是什么? 如果假设我已经下载了这两个文件,那么我将如何合并audio.ts和video.ts文件以在媒体播放器中播放。 我正在iOS中编写代码。 问题1。 如何知道哪个audio文件与哪个video文件相关? (我认为通过types=audio定义为audio文件和在video.m3u8我可以映射的audio标签,我是否正确?)。 问题2。 我将如何合并2个不同的audio.ts和video.ts,所以我可以在iOS的媒体播放列表中适当地播放。

如何用AVPlayerparsingm3u文件

我想从m3u文件头获取跟踪信息,而不是从id3Tags。 在AVPlayer的timedMetaData属性中,仅提供了id3Tagparsing。 我怎样才能用AVPlayer从m3u文件中获得标题,艺术家,url等 #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\" […]

恢复AVPlayerstream播放的最后一个示例

我正尝试使用本地播放器(AVPlayer)在iOS上重现实时stream。 但是,我无法恢复播放。 停止播放并在几秒后恢复播放时,播放将从暂停的那一刻开始,而不是再现实时stream的当前(最后一个)样本。 有没有办法得到最后一个样品,oconfigurationAVPlayer从最后一个样品点击播放button时重现?

iOS应用程序审查 – videostreamMPEG-DASH超过10分钟

我们想在iOS中使用MPEG-DASH来播放stream媒体video。 然而,根据审查笔记 – 审查笔记 – 有说明,该应用程序被禁止使用另一种技术。 比video内容长于10分钟的HTTP实时stream。 有没有人有任何types的话题经验? 因为我发现一个应用程序批准了这项技术。 iOS应用 所以如果我们用MPEG-DASH提交应用程序,我们是否被禁止使用超过10分钟的stream?

使用AES-128encryptioniOS播放离线HLS

我想通过AVFoundation在iOS中集成脱机HLS。 我有一个简单的AES-128encryption的HLS,它不想在离线模式下播放,我试图集成AVAssetResourceLoaderDelegate但不知道如何集成https://developer.apple中的 applicationCertificate & contentKeyFromKeyServerModuleWithSPCData 。 com / streaming / fps / examples。 我有一种感觉,我做错了,它是一个AES-128 encryption样本,甚至不是DRM 。 没有互联网, AVPlayer仍然试图通过GET请求获得encryption key 。 如果有人成功地将encryption的密钥保存在本地,并以某种方式将其与AVURLAsset一起交给AVPlayer ,那AVPlayer AVURLAsset 。 有人设法整合这个?

从AVPlayer获取HLS的PCM数据

这个问题似乎在过去几年中被问及几次,但没有人回答这个问题。 我正在尝试处理来自HLS的PCM数据,我必须使用AVPlayer。 这篇文章点击本地文件https://chritto.wordpress.com/2013/01/07/processing-avplayers-audio-with-mtaudioprocessingtap/ 而这个点击工作与远程文件,但不与.m3u8 hls文件。 http://venodesigns.net/2014/01/08/recording-live-audio-streams-on-ios/ 我可以播放播放列表中的前两个曲目,但它不启动所需的callback获得pcm,当文件是本地或远程(不stream)我仍然可以得到pcm,但它是hls不工作,我需要HLS工作 这是我的代码 //avplayer tap try – (void)viewDidLoad { [super viewDidLoad]; NSURL*testUrl= [NSURL URLWithString:@"http://playlists.ihrhls.com/c5/1469/playlist.m3u8"]; AVPlayerItem *item = [AVPlayerItem playerItemWithURL:testUrl]; self.player = [AVPlayer playerWithPlayerItem:item]; // Watch the status property – when this is good to go, we can access the // underlying AVAssetTrack we need. [item addObserver:self forKeyPath:@"status" options:0 context:nil]; } […]

当AvPlayer切换比特率时检测

在我的应用程序中,我使用AVPlayer用HLS协议读取一些stream(m3u8文件)。 我需要知道在stream会话期间客户端切换比特率的次数 。 假设客户的带宽正在增加。 所以客户端将切换到更高的比特率段。 AVPlayer能检测到这个开关吗? 谢谢。

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); }]; 有没有其他方法可以做到这一点?