Помогите с NesStream в AC3

Discussion in 'PHP' started by Mixon, 4 Feb 2012.

  1. Mixon

    Mixon Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    394
    Likes Received:
    119
    Reputations:
    12
    Здравствуйте)

    В общем такая проблема, есть RTMFP соединение, в котором открыт NetStream для публикации, код собстна:
    Code:
     Код AS3:
        nc = new NetConnection();
        nc.connect("rtmp://example.com/myApp");
        ns = new NetStream(nc);
        ns.attachAudio(mic);
        ns.attachVideo(cam);
        ns.publish(myStream_name, "live");
    Вот, он высылает в поток потоковое аудио и видео с микрофона и вебки, а мне нужно высылать свои данные (своё видео отдельно залитое, не с камеры).

    Погуглив, нашёл атрибут .attach(NetConnection);
    Но КАК можно запихнуть в него видео? Как открыть NetConnection для отправки видеофайла?
    Я уже и Adobe Media Server подымал, ну так опять-же проблема, чтоб получить С него поток с видеом нужно делать NetStream поток, который сюда явно не вписывается(

    Как работает метод attach? как в него засунуть свой поток? помогите плз(

    Метод .appendBytes(FileReference.data); уже пробовал, ошибка

    Code:
    TypeError: Error #2004: Один из параметров указан неверно.
    	at flash.net::NetStream/appendBytesAction()
    	at Main/connectOutStream()
    	at MethodInfo-17()
    	at Function/http://adobe.com/AS3/2006/builtin::apply()
    	at flash.external::ExternalInterface$/_callIn()
    	at Function/<anonymous>()
    Как я понял - такое делать можно только если .connect(null), по крайней мере что-то подобное в обсуждении писали

    Пробовал создавать отдельный коннект по нуллам и в него лить, в него льётся, но если присоединить его к этому потоку - ничего не происходит(

    похоже все данные в нетстриме, а нетстрим к нетстриму не приклеишь как я понял, и аппендБайтес тоже не прилепить к соединённому потоку, так что делать?(
     
  2. maxfax

    maxfax New Member

    Joined:
    23 Jun 2010
    Messages:
    25
    Likes Received:
    0
    Reputations:
    0

    Вы так не запихнете видео в NetConnection
    Метод NetConnection.attach вообще не для этих целей.
    Метод NetConnection.appendBytes проигрывает байты только на машине юзера при условии что NetConnection.connect(null)


    Есть несколько способов как это можно реализовать.
    1) В обьект NetConnection через метод send частями из FileReference.data передаем байты подписавшимся юзерам тот кто хочет смотреть видео должен отлавливать эти байты создать новый обьект NetConnection.connect(null) и засовывать их в NetConnection.appendBytes.

    Пиши если будут вопросы хорошо ориентируюсь в данной теме.
     
  3. Mixon

    Mixon Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    394
    Likes Received:
    119
    Reputations:
    12
    Дело в том что мне нужно изменить код клиента НЕ изменяя кода сервера.
    Сейчас на клиенте стоит .attachCamera(), мне нужно её заменить на свой файл, а на "сервере" будет проигрываться почти тем-же способом но через .play('key'), никаких data я не смогу всунуть, нужно что-бы через .play('key') было и никак иначе... :(

    п.с. были мысли даже делать эмулятор веб-камеры с микрофоном на дельфи с драфверами, чтоб они создавали будто аудио и видео-потоки а уже на AS3 я коннектил конкретную камеру (сделать мост JS<=>PHP<=>AS3<=>Delphi) но это слишком жёстко уже...
     
    #3 Mixon, 4 Feb 2012
    Last edited: 4 Feb 2012
  4. maxfax

    maxfax New Member

    Joined:
    23 Jun 2010
    Messages:
    25
    Likes Received:
    0
    Reputations:
    0
    К сожалению так как вы хотите вы так не сделаете

    Так сделает, согласен что это жестко.
     
  5. Mixon

    Mixon Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    394
    Likes Received:
    119
    Reputations:
    12
    и совсем-вообще-абсолютно нет решения???
     
  6. maxfax

    maxfax New Member

    Joined:
    23 Jun 2010
    Messages:
    25
    Likes Received:
    0
    Reputations:
    0
    Так как вы хотите нет.