Tag: http live streaming

HTTP实时streamencryption

我正试图了解Apple在其iOS设备以及Safari上支持的HTTP Live Streaming协议如何保护解锁内容的密钥。 我的理解是,.m3u8文件将整个东西放在一起,并引用内容(在MPEG2 TS容器中,AES 128encryption)和TS文件的关键字。 像这个例子一样: #EXTM3U #EXT-X-MEDIA-SEQUENCE:7794 #EXT-X-TARGETDURATION:15 #EXT-X-KEY:METHOD=AES-128,URI="https://priv.example.com/key.php?r=52" #EXTINF:15, http://media.example.com/fileSequence52-1.ts #EXTINF:15, http://media.example.com/fileSequence52-2.ts #EXTINF:15, http://media.example.com/fileSequence52-3.ts #EXT-X-KEY:METHOD=AES-128,URI="https://priv.example.com/key.php?r=53" #EXTINF:15, http://media.example.com/fileSequence53-1.ts 假设基于浏览器的回放, <video>元素在“src”属性中被送入m3u8文件。 在这种情况下,即使通过https传送密钥,我如何确保用户不会在浏览器中inputhttps URL并将密钥保存到他的硬盘中? 我理解这种机制的方式是,使用浏览器的https堆栈播放m3u8源文件时,关键的下载是通过<video>标记完成的 – 浏览器内的合法客户端如何区别于用户,只需在地址栏中input? 这一定是显而易见的,但我只是没有看到它… 祝一切顺利, dansch

在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端?

AVFoundation可以强制播放本地.ts文件吗?

很显然,AVFoundation(和QuickTime X)可以解复用并正确播放.ts容器,因为.ts容器支持HTTPS直播。 设置一个本地web服务来服务.m3u8和相关的.ts文件,我真的很希望能够:说服AVURLAsset和/或URLAssetWithURL接受本地文件.m3u8 URI,就像它是一个HTTP URI,或者更好的是,能够使用AVQueuePlayer来加载和播放一系列.ts文件,而无需跳过直播的AVQueuePlayer 。 我想这样做的原因是,我需要在某种程度上零星地在本地生成电影资产 – 整个资产将不会一次提供,而是随着时间的stream逝而产生。 显然,这适用于AVQueuePlayer但由于各种原因,我的资产片段被打包在.ts容器中。 这听起来像是“本地”直播的完美select。 我怀疑URLAssetWithURL会对传递给它的string进行一些限定,然后设置一些属性来表明它正在查看一个实时stream媒体源,这个媒体stream反过来告诉AVPlayer / AVQueuePlayer期望以.tsformsAVQueuePlayer音轨。 它可能会看到HTTP,并决定这是直播。 所以我的问题是:如何“愚弄”AVFoundation到处理一个本地.m3u8文件完全一样远程? 奖金的问题是:有没有人(如果是这样的话)能够从.ts文件创buildAVAsset ,以便资产返回资产轨道的状态(准备播放)? TIA!

是否有可能使用AVPlayercachingHLS段?

根本问题 在iOS上search时,我们的videocaching很多。 它比我们的networking播放器缓冲了很多,它将已经观看的片段的副本保存在临时存储器中。 期望的解决scheme 在设备的磁盘上本地cachingvideo片段。 caching一个单独的质量,并且总是重放它,我们没事。 拦截器 我们无法在AVFoundation / AVPlayer中find执行caching的方法。 我们试过的 用AVPlayer拦截networking请求的两种方法。 符合AVAssetResourceLoaderDelegate并手动处理媒体加载 不适用于HLS。 您可以通过实现AVAssetResourceLoaderDelegate来加载m3u8文件,这允许您通过身份validation或解密响应,但无法加载.ts文件。 以下是我们尝试的代码: https : //gist.github.com/nathanhillyer/84e46152d7c4c88183b6 实现NSURLProtocol来捕获.ts文件的请求。 AVURLAsset实际上避免被拦截。 networking请求不知何故被捕获。 (不知道为什么)

如何通过分别提供密钥文件来播放m3u8encryption的播放列表?

我有一个m3u8播放列表文件(让我们称之为素数),它指向另一个播放列表文件,该文件又具有带有密钥文件URL的ts URL。 使用MPMoviePlayer我目前可以播放prime m3u8文件。 这些段使用AES-128位encryption进行encryption,密钥文件位于最终的m3u8文件中。 有没有一种方法可以提供最终的m3u8文件,并告诉应用程序使用本地密钥文件来解密video,所以我不必公开发布密钥文件。 这与这个SO问题有些相关

Http Live Streaming for iPhone以及为什么我们使用.m3u8文件

我已经做了所有这一切,我也做了.ts和m3u8文件。 在本地服务器和现场服务器,我可以播放MP4文件 <video width="320" height="240" controls="controls" autoplay="autoplay"> <source src="movie.mp4" type="video/mp4" /> </object> </video> 但我有问题,播放.m3u8文件 <video width="320" height="240" controls="controls" autoplay="autoplay"> <source src="movie.m3u8" type="video/m3u8" /> </object> </video> 我的mediafilesegmenter创build了两个.ts文件和一个.m3u8。 我的m3u8文件是 #EXTM3U #EXT-X-TARGETDURATION:10 #EXT-X-VERSION:4 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-PLAYLIST-TYPE:VOD #EXT-XI-FRAMES-ONLY #EXTINF:1.0117, #EXT-X-BYTERANGE:8084@376 fileSequence0.ts #EXTINF:1.0117, #EXT-X-BYTERANGE:7332@36096 and so on…. 那么在mime.types中是否有任何问题,因为我在mime.types中写了所有的混淆, application/x-mpegURL m3u8 video/MP2T ts AddType appliction/x-mpegURL m3u8 AddType video/MP2T ts #application/x-mpegURL m3u8 #video/MP2T […]

在iOS 4.0中使用AVPlayer进行HTTP实时stream式传输?

是否可以在iOS 4.0上使用AVPlayer的HTTP Live Streaming? 这显然是4.0的loggingfunction。 但是,如果我在运行iOS 4.0.1的3GS上运行Apple的SitchedStreamPlayer示例代码 ,则单击“加载电影”不会播放stream,但会出现错误: 2011-06-21 13:14:49.428 StitchedStreamPlayer [680:307]资产的曲目由于错误而未被加载:无法打开 MPMediaPlayer能够在相同的设备上播放相同的stream 。 但是,我需要AVPlayer的解决scheme。 有谁知道如何让苹果的StichedStreamPlayer代码工作在4.0? 运行时需求说它应该在“iOS 4.0或更高版本”上工作。 谢谢!