HTTP 直播、FFMPEG 和 FFSERVER 以及 iPhone OS 3
-
11-09-2019 - |
题
在 iPhone OS 3 中,Apple 引入了 HTTP 直播 这应该允许来自互联网的视频直播。我目前正在操作一个网络摄像头,它输入到我的服务器中,然后由 ffmpeg 转换为 flv 流,并使用 ffserver 流回输出。有谁知道如何使用 ffmpeg 和 ffserver 设置 iPhone 可以使用的视频流?我应该能够即时重新编码为任何格式。
解决方案
您将需要建立的ffmpeg副本版本> = e109a29d6ddb02b2dd58c6c385ebec27f2d23b58(GIT)或18793(SVN)。请确保您还指定--enable-libx264标志,当你正在构建。一旦你已经得到了建立和运行,你可以粗略地执行以下操作:
ffmpeg -i <input video> -acodec libmp3lame -ac 1 -vcodec libx264 -s 320x240 \
-level 30 -f mpegts - | \
segmenter - 10 test test.m3u8 http://example.com/path/to/your/files/
即。把输入的文件或流进的ffmpeg和管带MP3音频的H.264视频到苹果的分割。分段器吐出分段的视频文件,并指向分段文件M3U播放列表。你会通过像Apache Web服务器服务于分段文件和播放列表。
显然,您需要调整ffmpeg的和分割的选项基本上让你后的结果。
其他提示
对于那些有兴趣谁我已经捆绑了脚本的开源分割,可以让你使用的ffmpeg要做到这一点,看看我的分割流对iphone 项目。它可以用于输入流做多比特率的段,并且将通过scp,ftp和甚至高达AWS S3中的流片段转移到可配置的目的地。
这是相当一个老话题,但HLS支持,FFmpeg的一个看似新功能可能是有用的人。
一个例子使用将如下所示:
ffmpeg -i <input_file> -c:v libx264 -preset slow -map 0 -an -flags -global_header -f hls -hls_time <segment_length> <m3u8_file>
如果你想这样做现场直播,这将是另外一个例子:
ffmpeg -i <input_stream> -c:v libx264 -preset ultrafast -map 0 -an -flags -global_header -f hls -hls_time <segment_length> -hls_list_size <playlist_entries> -hls_wrap <wrap> <m3u8_file>
在-hls_list_size
参数限制了在该播放列表的文件的数量,并且-hls-wrap
参数限制了总文件数,并且一旦它到达该点(例如将包裹的文件名:test0.ts,test1.ts ... TEST7。 TS,test0.ts,test1.ts ...当涡卷为8)。
有关的更多信息,请参阅的文档。请注意,上述实施例中剥离出音频与所述-an
标志,如下我个人从未需要它。
使用 QuickTime 将电影转换为“iPhone”格式有什么问题吗?您只需执行“文件”>“导出”>“iPhone 格式”...我错过了什么吗?
转换为 iPhone 格式后,我用 mediafilesegmenter 将其切碎(可在 Apple 开发者连接,Http 直播工具):
mediafilesegmenter -t 10 -f folderName/ nameOfInputFile.m4v
(笔记:文件夹名称/文件夹必须存在)
然后将您的 iPhone 指向一个网站
<video src='folderName/prog_index.m3u8' height=45 width=70
controls='on'>Your browser does not support the video tag</video>