Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   работа с потоками(NetStream) - получить и записать в flv (http://www.flasher.ru/forum/showthread.php?t=113623)

mozi 03.07.2008 21:40

работа с потоками(NetStream) - получить и записать в flv
 
задача такая: есть поток видео (live) - надо сохранить этот поток в flv-файл.

Пробовал 1 вариант: Получить поток с сервера и отправить его на сервер с параметром "record":
Код:

...
ns = new NetStream(nc);
ns.play("stream_id", -1);
ns.publish("my_recording", "record");

Не получилось. Я так понял совместно использовать play и publish недопустимо.

Не получилось так же совершить какие-либо операции с потоками вида:
Код:

...
ns_1 = new NetStream(nc);
ns_1.play("stream_id", -1);
ns_2 = new NetStream(nc);
ns_2 = ns_1;
ns_2.publish("my_recording", "record");

Если кто знает как их правльно производить - поделитесь.

Не получилось использовать attachVideo(). Есть ли вариант в ns.attachVideo() передавать НЕ камеру, а чтото другое? а то в справке написано что там именно объект камера.


Возможно есть 2 вариант?: Получить поток с сервера и сохранить его на локальном компе. Если кто знает как это сделать - подскажите.

crazyone 04.07.2008 16:47

Код:

...
ns_1 = new NetStream(nc);
ns_1.play("stream_id", -1);
ns_2 = new NetStream(nc);
ns_2 = ns_1; // ЧТО ЭТО????1
ns_2.publish("my_recording", "record");

И да, выразите задачу поподробнее. Что у вас за сервер, куда нужно сохранить файл, и откуда у вас поток видео.

mozi 04.07.2008 18:56

я не написал о сервере - потому что это не важно. любой сервер: FMS, Red5, еще какой-либо который можно достать в бесплатной или триальной версии.
я не написал о том куда надо сохранять - потмоу что это тоже не важно. Хоть куда-нибудь: на сторону сервера, на стоорну клиента.

to crazyone:
для таких догадливых как вы и использована языковая конструкция предваряющая код:
Цитата:

Не получилось ... операции ... ВИДА:
что в целом расшифровывается как "ns1 = ns2 приравнивать нельзя"

crazyone 04.07.2008 19:34

Ну, раз ничего не важно для вас, вы должны догадываться, насколько это важно для меня.

По поводу:
Цитата:

что в целом расшифровывается как "ns1 = ns2 приравнивать нельзя"
Вы что-то путаете.
Выполняя
Код:

ns_2=ns_1;
вы просто создаете еще одну ссылку на один и тот же поток.

mozi 05.07.2008 21:37

to crazyone:
да я ж говорю: "этот код нерабочий, подскажите как правильно". а вы мне объясняете что у меня в нем ошибка :) Вместо того что бы просто предложть вариант решения. Либо вы умный но очень дотошный, либо не в теме и просто хочется поболтать, потому что информационная содержательность двух ваших постов в теме - нулевая.

mozi 08.07.2008 10:11

неужели никто не сталкивался? может господа модераторы подскажут что нить дельное?

etc 08.07.2008 13:08

Цитата:

Сообщение от mozi (Сообщение 750781)
неужели никто не сталкивался? может господа модераторы подскажут что нить дельное?

Господа модераторы очень хотят вам поставить плюс за сотрясание воздуха просьбами ответить.

alexcon314 08.07.2008 16:15

В терминах FMS вам нужно что-то вроде этого
Код:

recConn = new NetConnection();
recConn.connect("rtmp://[from_url]");
recStream = new NetStream(recConn);
//
sendConn = new NetConnection();
sendConn.connect("rtmp://[to_url]");
sendStream = new NetStream(sendConn);
//
sendStream.attachVideo(recStream);
recStream.play("recorded_to_send");
//
sendStream.publish("send_to_recorded", "record");

Однако, sendStream.attachVideo(recStream); вряд ли прокатит. Ибо, как вы правильно заметили, сорс должен быть объектом Camera.
Клиентсайдом, помоему, такие штуки не разруливаются. На комп сохранить поток прям из флэша не выйдет. На сервак правильнее завести напрямую.
Глядите в сторону серверсайд.

mozi 11.07.2008 14:24

to alexcon314
Вы гораздо ближе к правде (да и вообще к наличию информативности в ответе) чем кто бы то ни было в данной теме.
Действительно
Цитата:

sendStream.attachVideo(recStream); вряд ли прокатит
Главное в чем чем правы - это то что копать надо в сторону серверсайд.
А там должно быть чтото похожее на
Код:

application.myRemoteConn = new NetConnection();
application.myRemoteConn.connect("rtmp://RTMP.MY_SOURCE.RU");
// Setup the server stream.
application.myStream = Stream.get("MY_STREAM_ID");
if (application.myStream){
    application.myStream.play("MY_VIDEO", 0, -1, true, application.myRemoteConn);
    application.myStream.record();
}

К этому я пришел на основе изучения хелпа. Ввиду того что с серверное стороной мне работаь неприходилось - претворить это все в жизнь у меня пока не получилось.

alexcon314 11.07.2008 16:17

Опишите подробнее как вы все делаете.
Кто поставляет поток для записи в этот код?
Клиентсайд сам может записать на сервере поток - publish c параметром record. Вернуть записанный поток на клиента можно простой загрузкой файла потока серверным скриптом типа пхп.
Если поток берется с другого сервера ФМС, что видимо ближе к истине, то покажите как сервер-источник публикует поток своим серверсайдом. Как происходит синхронизация операций публикования/записи на серверах?


Часовой пояс GMT +4, время: 05:07.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.