2011-12-12 103 views
11

我才意识到,苹果需要的HTTP实时流,才能在iPhone应用程序来查看视频。我没有意识到这一点之前......我现在想明白这涉及,所以我可以决定我是否需要做的工作,并在3G或限制视频播放给用户谁连接到Wi-Fi提供的视频。如何在Unix上实现HTTP Live Streaming服务器?

我读苹果公司提供的overview,现在明白,我的服务器需要分段和索引的媒体文件。我也明白,我没有主机能够以流其内容(我可以指向托管在其他地方,对视频?)。

什么在这一点上并不清楚,我是做什么的我的服务器(Ubuntu的哈迪)来完成实际分段和索引的飞行(上实现再一次,我没有承载我想要的影片服务)。

我发现一个link解释如何安装FFmpeg和X264,但我不知道这是否是最好的解决方案(因为我有一个Ubuntu服务器,我不能使用Apple Live Streaming工具,它是否正确?)。另外,我不明白,在这一点我的服务器都知道,视频需要转换,并开始工作...

任何反馈,可以帮助我理解到底是什么在服务器端做的是能流我的iPhone应用程序在3G的视频将不胜感激! (呵呵,只是这有什么差别,我的应用程序后端在Rails)的

+0

我建议FMLE&red5(超过rtmp)我会稍后回答,如果没有人做 – malletjo

+0

感谢您的回复。我只想澄清一件事,我对已录制的视频感兴趣,而不是现场表演。 – alex

+0

您几乎必须承载内容,才能从服务器中进行流式传输。您认为托管和服务之间的区别是什么?接受的答案与你的问题没有任何关系,所以我不知道你为什么接受它。 – vipw

回答

8

如果你要流从您的网络摄像头直播内容:FMLE(Flash Media Live编码)

如果你想流静态内容(电影):FFmpeg的& xuggle

RED5:

你的媒体服务器可以是RED5(开源和免费的)或FMS或wowza。但我只用红色5,我不知道其他人。你可以找到red5 here

你的服务器可以在任何地方,但你需要打开一些端口(至少1935为rtmp),5080为“管理面板”,你可以在列表中看到9999。 (检查文档)Red5是java中的媒体服务器,因此您需要java jdk> = 1.6。

的Red5 1.0 RC可以发现here。你可以找到一个版本的Windows,OSX或Linux。我使用了tarball版本。解压缩并运行“red5.sh”。您应该可以通过http://localhost:5080/访问管理员,并且您还应该看到正在显示的视频。如果不是这样,那么有些事情是错误的,在这个工作之前你不能再走了。

流与ffmpeg的:

你可以找到xuggle here,你可以找到关于这个here

ffmpeg -i your_file.flv -re -acodec copy -vcodec copy -f flv rtmp://localhost_or_yourred5serverip/live/livestream 

更多信息,请记住,如果你要流它在网络只上的FLV和MP4可以播放Flash播放器(我认为)。一旦流式传输,您应该可以在“管理面板”here中看到它。连接到您的服务器(rtmp:// localhost/live /)并转到视图选项卡并放入“livestream”。您可以使用mplayer rtmp:// localhost/live/livestream来查看您的视频。

流中的flash播放器:

可以使用的Flowplayer(与RTMP插件)或jwplayer。

+0

这里是一个后续问题:http://stackoverflow.com/questions/8497541/installing-faad-library-for-ffmpeg-through-homebrew-on-mac-os-x-lion如果你可以帮忙再次!谢谢。 – alex

+0

这可能会帮助你:http://jungels.net/articles/ffmpeg-howto.html – malletjo

0

流HLS最简单的方法是使用像Wowza或FMIS(两者都不便宜)。 Wowza将采用输入方式(直播或存储的VOD内容,并进行分割)

+0

Wowza有免费试用,值得一试 – onmyway133

12

有几种竞争技术,但今天如果你想要任何文件兼容的苹果设备(iPhone,iPad,等等),然后HLS是要走的路,顺便说一句,它也支持大多数浏览器和Android,所以不是一个糟糕的地方开始,但请注意,尽管名称不适合流式传输实况内容。视频,你真的不需要red5或wowza或fms或类似的东西。HLS基本上是一组短视频片段(例如每个5分钟)以不同的比特率编码,并且你给Flash或HTML5播放器的m3u播放列表在浏览器中,您可以决定segme nt长度或你如何编码。

这是最好的文章中,我已经看到了关于如何选择分辨率,比特率,段大小等:http://www.streamingmedia.com/Articles/Editorial/Featured-Articles/Adaptive-Streaming-in-the-Field-73017.aspx

从那里,你只是举例创建一个目录结构,例如

 
/data/video/video_id/original.mp4 
/data/video/video_id/quality1/chunk1.mp4 
/data/video/video_id/quality1/chunk2.mp4 
/data/video/video_id/quality2/chunk1.mp4 
etc.. 

然后你需要为所有的块和资质的m3u播放,它是最多的球员本身来实现素质和播放下一个文件(其中最现代化的玩家已经有了)之间的切换。

我也强烈建议您查看:https://developer.apple.com/resources/http-streaming/ - Apple提供了一系列免费工具来为HTTP Live Streaming准备视频和播放列表。

+0

谢谢罗马,一个非常好的链接(自适应流媒体 - 由扬厄泽尔)http: //www.streamingmedia.com/Articles/Editorial/Featured-Articles/Adaptive-Streaming-in-the-Field-73017.aspx –

相关问题