使用.m3u8和.ts文件与iPhone作为服务器的直播

时间:2014-09-23 11:19:14

标签: ios objective-c ffmpeg http-live-streaming

我正在尝试完成从iPhone相机直播的任务。我做了一些研究,发现我可以使用.m3u8个文件来播放实时视频,其中应包含。ts(Mpeg-2)文件。

现在我在iPhone上的文件是.mp4文件,它不能与.m3u8一起使用,所以我想我必须将.mp4转换为.ts ,但我没有成功。

我发现可以转换ffmpeg lib中提到的视频this article here。我已成功导入ffmpeg库但无法弄清楚我是如何使用它来转换视频的,因为我是第一次使用它。

另一件事apple documentation

  

有许多硬件和软件编码器可以创建   实时传输MPEG-4视频和AAC音频的MPEG-2传输流   时间。

这里有什么意思?有没有其他方法我可以使用.mp4文件进行直播,而无需从iOS转换它们?

如果我不清楚,请告诉我,我可以提供更多信息。感谢任何建议。我想知道我在正确的道路上吗?

修改

我正在为我的问题添加更多信息,所以基本上我要问的是,我们可以使用以下命令将.mp4视频转换为.ts

ffmpeg -i file.mp4 -acodec libfaac -vcodec libx264 -an -map 0 -f segment -segment_time 10 -segment_list test.m3u8 -segment_format mpegts -vbsf h264_mp4toannexb -flags -global_header stream%05d.ts

如何使用ffmpeg库来执行此命令在iOS中执行的操作。

2 个答案:

答案 0 :(得分:0)

您可以查看ffmpeg.c以查看ffmpeg从ffmpeg库中使用的内容。然而,这是一个相当复杂的文件。您可能想要重命名main()并将其编译为对象,然后您可以从代码中调用新的ffmpeg_main()函数。

答案 1 :(得分:0)

Apple设备仅适用于HLS,您需要将媒体文件从mp4转换为ts,并将元数据文件转换为m3u8。您可以使用gstreamer之类的拖缆将mp4转换为HLS格式,或者另一种方法是在飞行中进行转码,这非常慢。