1

我的客户问我是否可以下载视频并在下载后进行流式传输,就像袖珍广播一样。他的理由是,这将允许他将他的视频文件存储在诸如 godaddy 之类的网站上,而无需将文件流式传输到通常需要专用服务器的手机。

这甚至可能吗?如果是这样,您知道我可以在任何地方查找袖珍广播是如何做到的吗?目前我的应用程序只是流式传输 mp4。

感谢您的关注,

马特

4

1 回答 1

2

由于您的目标是 iOS,因此 HLS(HTTP Live Streaming)是您的朋友:https ://developer.apple.com/streaming/

请在此处查看我的答案以了解如何使用它:同时下载和播放从多个 URL 拼凑而成的歌曲

通过 Apple(或 FFMPEG)的 mediafilesegmenter 工具运行长电影非常容易,该工具会输出许多小的 .ts 文件(MPEG 2 传输流)。然后您创建一个清单(一个 .m3u8 文件),描述这些文件如何组合在一起(mediafilesegment 也会为您创建!)。然后,您只需将清单文件和 .ts 文件放在托管服务提供商(如 GoDaddy)上,一切就绪。

例如,给定一个名为 test.mp4 的文件,首先使用 ffmpeg 将其转换为 .ts 文件:

ffmpeg -i test.mp4 -acodec copy -vcodec copy -bsf h264_mp4toannexb test.ts

然后用 mediafilesegmenter 把它变成一系列 HLS 段(同样可以使用 ffmpeg 段复用器完成,但 mediafilesegmenter 似乎更健壮):

mediafilesegmenter -t 3 test.ts

结果是一堆 3 秒的剪辑(这就是-t 3意思)和一个名为prog_index.m3u8. 其内容如下:

#EXTM3U
#EXT-X-TARGETDURATION:3
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:2.99520,    
fileSequence0.ts
#EXTINF:2.99520,    
fileSequence1.ts
#EXTINF:2.99520,    
fileSequence2.ts
#EXTINF:2.99520,    
fileSequence3.ts
...
#EXTINF:0.37440,    
fileSequence75.ts
#EXT-X-ENDLIST

Simply putting all of the .ts files and the .m3u8 file on a web server and pointing your AVPlayer or MPMoviePlayerController in iOS at the URL for the .m3u8 will get you an excellent streaming performance.

于 2013-10-07T17:32:37.107 回答