2016-09-21 48 views
0

我想播放加密hls內容。內容使用本地開發的名爲chunker的工具分塊。加密hls播放不會發生

具有關於內容的信息的目錄被加載到想要播放塊的設備上並被顯示爲內容的播放列表。目錄指向每個內容的清單文件。

在實際場景中,當chunker正在運行並分塊播放內容時,播放不會在點擊播放列表時開始,它甚至不會向解密密鑰的d manifest中的url請求。但是一旦停止,同樣的情況發生。

在iPad上嘗試使用Safari播放內容時也會發生完全類似的行爲。

現在有趣的是,這個問題並沒有發生與ios模擬器或馬科斯和回放是好的,但只有iOS設備它不運行時chunker運行。

也清楚hls內容在iPad,macos和模擬器上播放得很好。任何地方都沒有明確的內容。

我用iOS 8.2 & 9 iPad和我用Avplayer作爲播放器。
有人可以給我任何線索嗎?

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 
    NSLog(@"Trying to play media "); 
    NSURL *mediaUrl = [[NSURL alloc]initWithString:[[self.arrMedialist objectAtIndex:indexPath.row]objectForKey:@"url"]]; 
    // NSURL *mediaUrl = [[NSURL alloc]initWithString:@"http://10.237.166.59/ccad/hls.m3u8"]; 

    AVPlayer *player = [[AVPlayer alloc]initWithURL:mediaUrl]; 
    AVPlayerViewController *controller = [[AVPlayerViewController alloc]init]; 
    controller.player = player; 
    controller.showsPlaybackControls = YES; 
    [self presentViewController:controller animated:YES completion:nil]; 
    NSLog(@"playing media url %@ ", mediaUrl); 

    [player play]; 
} 
+0

你是用'AVAssetResourceLoader'做這個,就像這個答案一樣嗎? http://stackoverflow.com/a/19604111/22147 –

+0

我試過使用AVURLAsset,但沒有運氣。同樣的問題 。 – CodeTry

+0

不AVURLAsset,但AVAssetResourceLoader –

回答

1

終於弄清楚是什麼問題。有趣的一個,但可能會幫助其他人。 對於每個塊,我們的chunker首先爲關鍵uri添加了一個EXT-X-KEY標籤,並且在處理下一個塊之前將會附加塊標籤或名稱,因此在任何時候播放列表都將以EXT-X-KEY標籤結束。與該標籤相對應的實際塊只有在塊被創建後纔會被添加,然後再快速跟隨下一個塊的EXT-X-KEY標籤。它看起來像播放器認爲它在更新中讀取播放列表(因爲最後一個EXT-X-KEY標籤的塊尚未更新)並繼續嘗試。當我們停止chunker時,信號被捕捉並且播放列表被更新爲最後的塊。所以,停止後玩家可以玩。 奇怪的是,只有iOS有這個問題,macos和模擬器似乎已經處理了這種情況。

相關問題