2016-03-02 7 views
2

Я передаю данные с сервера и передаю их в чистый поток в режиме генерации данных. Я успешно обертываю H264 и PCMU для воспроизведения через NetStream, однако мне нужно уловить этот вывод с видеоизображения, на котором оно включено, и сохранить его на изображении. При использовании сервера RTMP я бы настроил его для отправки команды RtmpSampleAccess, с разрешением true,true для доступа к аудио и видео. При использовании RTMFP я бы сделал то же самое, send() a RtmpSampleAccess true,true от партнера, чтобы разрешить доступ.Есть ли способ написать команду RtmpSampleAccess для NetStream в режиме генерации данных?

Я считаю, что мне нужно отправить тег для объекта данных сценария для представления команды RtmpSampleAccess, однако я не могу найти никакой информации о том, каким должен быть формат этого тега. Я попытался с помощью OSMF FLVTagScriptDataObject с объектами, установленными в следующих комбинациях:

["|RtmpSampleAccess", true, true]; 
["|RtmpSampleAccess", [true, true]]; 

и различные попытки угадать именование параметров объекта (хотя, глядя на документы протокола, я не уверен, что есть один) ,

Может кто-то там поможет мне здесь, будет очень признателен.

+0

Значит, вы можете создавать аудио- и видео теги и добавлять их для воспроизведения видео? Все, что вам нужно, это как рисовать видеоконтейнер? Просто пытаюсь визуализировать, где 'RtmpSampleAccess' вступает в игру с методом' appendBytes'. –

+0

Да, видео это рендеринг для элемента Video, но я хочу скопировать его в BitmapData и не могу, потому что videoSampleAccess является ложным. В других случаях я бы послал это «специальное» сообщение, чтобы разрешить доступ к этому образцу. –

+0

Попробуйте мой ответ. Это один из двух методов, которые я знаю, чтобы рисовать видео «appendBytes» без ошибок. Infact, он отменяет все ошибки безопасности! Дайте мне знать, если это работает, так как это короче и менее ограничено (чем возможный второй вариант). –

ответ

1

Если вы разместили свой Netstream в режиме генерации данных, вы добавите вторую команду Play. Второй - просто «пустой», и по какой-то причине это переопределяет ошибку безопасности.

ns.play(null); 
ns.play(""); //works to avoid all security errors 
ns.appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN); 

Затем сделать лишь настроить кнопку, чтобы запустить функцию draw_VideoFrame при нажатии, или попробовать в режиме реального времени рисовать с чем-то, как показано ниже (с использованием enterFrame):

vid_Obj.addEventListener(Event.ENTER_FRAME, draw_VideoFrame); 

, а затем создать функцию как этот пример.

function draw_VideoFrame (e:Event) : void 
{ 
    vid_BMD.draw(vid_Obj); //draw into a BitMapData variable 
} 
+0

Это сработало для меня, и вы сэр/мадам - ​​мой герой! –

+0

Возможно, стоит добавить другой путь, если у вас есть время, просто для полноты будущих читателей. Еще раз спасибо вам большое. –

+0

Рад, что это сработало. Я добавлю другой метод в более позднее редактирование. Я предпочитаю показанный метод, потому что он устраняет все ошибки безопасности (например: вы можете добавить визуализацию 'computeSprectrum' для звука видео, обычно не допускается даже с ** [вторым методом] (http://gamespoweredby.com/blog/2014/ 11/netstream-playnull-bitmapdata-workaround /) **, поскольку это только рисует пиксели). –

 Смежные вопросы

  • Нет связанных вопросов^_^