p2p публикуй и играй - PullRequest
       35

p2p публикуй и играй

0 голосов
/ 02 апреля 2011

Борьба здесь с p2p. Может кто-нибудь уточнить это для меня ... все, что я читаю, не является последовательным, включая документацию Adobe.

Чтобы опубликовать p2p, вам необходимо:

var nc:NetConnection = new NetConnection();
var ns:NetStream = new NetStream(nc, NetStream.DIRECT_CONNECTIONS);
ns.attachCamera(cam);
ns.attachAudio(mic);

groupSpecifier = new GroupSpecifier("fms.mygroup");
groupSpecifier.multicastEnabled = true;
groupSpecifier.postingEnabled = true;
groupSpecifier.serverChannelEnabled = true;

group = new NetGroup(nc,groupSpecifier.groupspecWithAuthorizations());
group.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);

ns.publish("stream");

Это должно опубликовать это, я верю. Это верно?

Тогда есть ПРОСМОТР прямой эфир:

var v2:Video = new Video();
var ns2:NetStream = new NetStream(nc,myPeerID);
ns2.addEventListener(NetStatusEvent.NET_STATUS,onPublish);
ns2.client = this;
ns2.play(userName);
v2.attachNetStream(ns2);
c.addChild(v2);

myPeerID уникален, но я не вижу поток. Итак, вот мои вопросы:

1) Возможно ли, что по какой-то причине я не вижу свой собственный поток?

2) Для просмотра ... возможно, он не видит поток, потому что я ничего не сказал о groupSpecifier. Хотя я прикрепил groupSpecifier к nc, так что не все ли будет готово, потому что я это уже сделал? Я просто думаю, может быть, я не связан с той же группой.

3) Я сделал конфигурацию многопотоковой html-страницы, как было сказано. Затем я поместил manifest.f4m на сервер, как он сказал. Нужно ли ссылаться на что-либо из этого в названии моего потока? Я видел статью, содержащую строку запроса, которую я мог бы использовать в FMLE. Я подумал, что, возможно, мне понадобится использовать это в качестве имени потока?

4) Для просмотра ... в соединении netStream ... у некоторых людей он должен быть peerID в качестве второго аргумента, а у других - groupSpecifier.groupspecWithAuthorizations (). Это был бы правильный peerID, так как мне нужно сказать, что я хочу просмотреть этого человека, и он знает, к какой группе подключаться, потому что я указал это, когда я сделал GroupSpecifier в nc.

5) Означает ли что-нибудь имя потока в publish .... ns.publish ("stream")? Это может быть лошадь или осел? Зачем мне что-то указывать, если он должен знать, к какой группе подключаться, основываясь на groupSpecifier? Это потому, что вы можете подключиться к «группе», а внутри этой группы вы можете подключиться еще лучше к сетевому потоку «осла»?

1 Ответ

1 голос
/ 13 мая 2011

2) вы публикуете с NetStream над NetConnection, а не NetStream над NetGroup, поэтому вам вообще не нужно NetGroup при публикации непосредственно на другой узел, соединяющийся с NetStream(nc, peerId)

Когда вы используете NetStream(nc, NetStream.DIRECT_CONNECTIONS), вы не публикуете более NetGroup, поэтому вам нужно соединиться с NetStream(nc, peerID)

Если вы используете NetStream(nc, gs.groupspecWithAuthorizations()), тогда вы играете с NetStream(nc, gs.groupspecWithAuthorizations())

Вам нужно выбрать публикацию через NetStream @ DIRECT_CONNECTIONS или NetStream @ NetGroup

4a) аргумент peerId предназначен для NetStream @ DIRECT_CONNECTIONS

4b) Аргумент gs.groupspecWithAuthorizations () предназначен для NetStream @ NetGroup

5) да, это так :) вам нужно опубликовать и воспроизвести ту же строку, это идентификация потока: ns.publish("StreamName") и затем ns2.play("StreamName")

...