Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在iOS上下载实时HLS m3u8流_Ios_Objective C_Ios8_Http Live Streaming - Fatal编程技术网

如何在iOS上下载实时HLS m3u8流

如何在iOS上下载实时HLS m3u8流,ios,objective-c,ios8,http-live-streaming,Ios,Objective C,Ios8,Http Live Streaming,HLS流可以是“实时”或“视频点播”。下载VOD HLS流很容易 但是,我想下载(或录制)5分钟的HLS直播流。这可能吗 如果我这样做,我确信我必须对m3u8文件进行重大更改。。。一个原因是直播流没有“持续时间”,但我下载的流必须作为VOD流,所以它必须有持续时间。我可能不知道还需要其他各种更改。可能ts段的URL也需要更改 任何提示或建议(希望是实际代码!) 谢谢 请注意,这个问题不是关于在脱机模式下播放流-我知道我需要一个HTTP服务器来实现这一点。实时播放列表使用滑动窗口。您需要在目标持续

HLS流可以是“实时”或“视频点播”。下载VOD HLS流很容易

但是,我想下载(或录制)5分钟的HLS直播流。这可能吗

如果我这样做,我确信我必须对m3u8文件进行重大更改。。。一个原因是直播流没有“持续时间”,但我下载的流必须作为VOD流,所以它必须有持续时间。我可能不知道还需要其他各种更改。可能ts段的URL也需要更改

任何提示或建议(希望是实际代码!)

谢谢


请注意,这个问题不是关于在脱机模式下播放流-我知道我需要一个HTTP服务器来实现这一点。

实时播放列表使用滑动窗口。您需要在目标持续时间之后定期重新加载它,并仅下载列表中显示的新片段(稍后将删除它们)

保存每个片段的
#exef
,并使用相同的目标持续时间和从0开始的媒体序列将其写入VOD播放列表

要停止录制时,请在末尾添加
EXT-X-ENDLIST
标记


只要在
m3u8

中使用相同的名称,您如何命名您的段就无关紧要了。您不太清楚要做什么。你能控制服务器吗?还有第三种类型的HLS播放列表-事件类型。它会在片段到达时将其添加到播放列表中,这意味着您可以在任何时候来回搜索,在最后一个片段到达后,它仍然作为VOD可用。@aergistal我无法控制服务器。这些流是“实时”m3u8流,我想在客户端记录它们。客户端指的是iOS应用程序。“录制”指下载m3u8及其所有ts段。你说得对,我可以把它保存为视频点播或活动播放列表。这两种都适合我。但我希望代码能够下载/录制流,并更改播放列表类型和对本地URL的引用。然后我将允许通过本地http服务器进行播放。这很有帮助,但我已经做到了&它可以工作,但并不总是这样。这有点复杂。您需要继续下载段(SEG),但是您可能会发现,由于n/w延迟,某些段的下载时间更长。所以你可能会丢失一些数据包。每个seg的持续时间可能不准确,因此在构建索引m3u8时,需要重新检查所有seg以获得正确的持续时间。最后,对于同一个seg,u可能需要2次尝试d/多次加载(如果失败),并且可能会在这段时间内丢失其他seg(需要多线程)。任何源代码都会非常有用。您需要使用线程和下载队列。这些片段的保留时间是播放列表持续时间的两倍,因此您有足够的时间。你可以检查持续时间,并在录音结束时写入播放列表。是的,我也这么做了。还是坏了。我认为编写这段代码在100%的时间内都能正常工作可能相当复杂,但我仍在努力。似乎这个问题已经被一些人遇到了:源代码最好标记为已回答。@CarlosF它不是这样工作的。在stackoverflow上,询问者必须发布导致问题的相关源代码。添加它将提高您获得特定答案的机会。好吧,我有Ruby中的代码。。。不是iOS和up投票给你的答案。在我的问题中,我已经指出源代码是理想的。我很清楚该做什么的理论方面。实际上,您正在构建一个写入磁盘而不是屏幕的播放器。