我的客户问我是否可以下载视频并在下载后进行流式传输,就像袖珍广播一样。他的理由是,这将允许他将他的视频文件存储在诸如 godaddy 之类的网站上,而无需将文件流式传输到通常需要专用服务器的手机。
这甚至可能吗?如果是这样,您知道我可以在任何地方查找袖珍广播是如何做到的吗?目前我的应用程序只是流式传输 mp4。
感谢您的关注,
马特
我的客户问我是否可以下载视频并在下载后进行流式传输,就像袖珍广播一样。他的理由是,这将允许他将他的视频文件存储在诸如 godaddy 之类的网站上,而无需将文件流式传输到通常需要专用服务器的手机。
这甚至可能吗?如果是这样,您知道我可以在任何地方查找袖珍广播是如何做到的吗?目前我的应用程序只是流式传输 mp4。
感谢您的关注,
马特
由于您的目标是 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.