Только недавно начал работать с FMS, поэтому не судите строго. Хочу начать с того, после установки FMS сразу же столкнулся с проблемой, которую очень долго не мог решить. Возможно именно решение этой проблемы создает мне сейчас проблемы с записью видео и звука на сервере. А именно, при попытке коннекта флэшки к приложению на сервере, трэйсится ошибка: NetConnection.Connect.Failed, а в логе на сервере появляется:
Цитата:
|
Asynchronous I/O operation failed (Failed to attach to completion port: Параметр задан неверно. 87)
|
Перепробовал все возможные варианты:
rtmp://localhost/my_app
rtmp://127.0.0.1/my_app
rtmp:/127.0.0.1/my_app
rtmp:/my_app
Но все равно ничего не помогло. Уже вроде открыл 1935 порт, отключил брэндмауэр и антивирусное ПО, но все равно ничего не работало. Причем что самое интересное, если подключатся так:

Код:
my_nc.connect("rtmp://localhost:1111","login","pass");
т.е. к админке, то проблем с подключением не возникает. Решение проблемы нашел
тут на форуме FMS (Adobe). Работающим вариантом оказался именно этот:
rtmpt://localhost:1935/myApp
т.е. туннелинг rtmp через http.
Простестил два примера приложений от Macromedia (tutoria_textchat и tutorial_hello), все работает (через указанный выше коннект), остальные пока не пробовал.
Теперь пытаюсь записывать звук через FMS.
Код во флэшке.

Код:
stop();
var my_nc:NetConnection = new NetConnection();
my_nc.connect("rtmpt://localhost:1935/recordApp");
my_nc.onStatus = function(infoObject:Object) {
trace("Connection status.");
trace("Event: " + infoObject.code);
trace("Type: " + infoObject.level);
trace("Message:" + infoObject.description);
};
var my_ns:NetStream = new NetStream(my_nc);
var active_mic:Microphone = Microphone.get();
my_ns.attachSound(active_mic);
my_ns.publish("myAudio","record");
my_ns.onStatus = function(infoObject:Object) {
trace("NetStream.onStatus called: ("+getTimer()+" ms)");
for (var prop in infoObject) {
trace("\t"+prop+":\t"+infoObject[prop]);
}
};
Код в приложении на сервере.

Код:
application.onConnect = function(newClient) {
application.acceptConnection(newClient);
s = Stream.get("myAudio");
if (s) {
s.record();
};
}
В итоге получаю трэйс во флэше:
Цитата:
Connection status.
Event: NetConnection.Connect.Success
Type: status
Message:Connection succeeded.
NetStream.onStatus called: (1257 ms)
clientid: 74115528
description: myAudio is now published.
code: NetStream.Publish.Start
level: status
NetStream.onStatus called: (1257 ms)
clientid: 74115528
description: Stopped recording myAudio.
code: NetStream.Record.Stop
level: status
|
В админке вижу два потока к моему приложению:
Цитата:
Name: myAudio
Type: Live
Client Id: rAAA0hqE
Status: Publishing
Name: DBAA0hqE
Type: NetStream
Properties:
Name: myAudio
Status: Publishing
Client: rAAA0hqE
|
После того, как закрываю флэшку, остается только первый Stream. Но звук не записывается. Почему?
Возможно я что-то делаю не так (т.е. ошибка именно в коде). Помогите разобратся. Но если делаю правильно, то почему не записывается? Может потому что приходится коннектится через туннелинг (RTMPT)?
Всем заранее спасибо за помощь.
P.S. может кто подскажет хороший сайт для FMS, где много исходников...?