2013-04-09 36 views
0

在Flash中,我有一个应用程序,其中多人通过NetStreams以不同的比特率和不同的质量设置将实时相机源共享到Flash Media Server/Adob​​e Media Server。是否有可能以不同的质量接收netstream

我需要移动用户以不同的质量设置接收实时提要。

我发现receiveVideoFPS土坯API文档中,但经过多少汗水和更多的眼泪,似乎它不支持W/H.264 ...(转到数字 - http://forums.adobe.com/message/3841837#3841837#3841837

那么,有没有其他这样做的方式,任何人都知道?或者我需要为此做些什么或什么? 任何想法?解决方法?

目前:通过NetStream的>的Flash广告应用程式发布>共享照相机发布到FMS/AMS 目标:Flash应用程序收件人>订阅公布的NetStream在不同的FPS和/或分辨率

回答

0

我看到2种方法可以做到这一点。

第一种方法适用于PC或移动用户一次只能看到任何流的情况。然后您必须获得输入视频分辨率,如果不适合,请通过NetStream“发送”方法发送具有正确视频高度/宽度的信息。发布者必须收到此命令并更改其Camera对象参数。

第二个是比较困难,但它可以在任何情况下使用。你必须对服务器进行流式转码和重新流式处理。所以每个人都会使用PC质量,当移动用户尝试观看流时,他向mediaserver发送一个restream请求,mediaserver接收它并创建一个具有相同名称和一些后缀的新流(例如“stream” - >“ stream_MOBILE“)。必须在此流中推送转码后的视频(您可以使用FFmpeg转码器)。完成后,您的移动设备应该收听“_MOBILE”流。

一个月前我面临类似的问题。顺便说一句,我使用的是Wowza Media Server,而不是FMS。我知道,Wowza有一个本地转码器工具,但没有钱购买它,所以我不得不使用FFmpeg(这是免费的)。在我的情况下,解决方案非常简单:我写了一个小服务器端模块,它正在监听HTTP-GET请求,如:

http:// [adr]:[port]/restream?id = ID & w = XX & h = YY

其中ID是流的名称,而XX/YY是新的视频尺寸。

当收到这样的请求时,一个脚本触发,其中唯一的功能是启动FFmpeg。它以这样的命令开始:

ffmpeg -i rtmp:// [adr]/[appName]/[streamName] -vcodec libx264 -s 352x288 -acodec copy -f flv rtmp:// [adr]/[ appname]/[newStreamName]

此命令使FFmpeg将-i流转码为-f dir,大小为-s和编解码器-vcodec和-acodec。

正如你所看到的,这很容易。 FFmpeg中有很多参数,比如比特率,帧率,图像质量等。

+0

解决方案2将是理想的。我使用的是Flash Media Server,因此您会认为转码可以在飞行中完成 - 我必须对其进行调查。 – 2013-04-10 10:24:34

+0

我也在想也许我可以发布在多比特率或类似的东西。你有什么经验吗? – 2013-04-10 10:25:24

+0

我想我已经找到了一条走向终点的好路子。我应该可以抓取Feed并使用服务器端动作重新发布为另一个流。我可以处理一个onPublish事件。 http://help.adobe.com/en_US/adobemediaserver/devguide/WS5b3ccc516d4fbf351e63e3d11a0773d56e-7ffbDev.2.3.html – 2013-04-10 12:42:42

相关问题