Воспроизведение FLV из ByteArray во Flash Player - PullRequest
6 голосов
/ 12 октября 2009

У меня есть флэш-видеофайл (FLV), хранящийся в объекте ByteArray, и я хотел бы воспроизвести это видео. Есть ли способ добиться этого? Может быть, с использованием алхимии?

Спасибо!

Ответы [ 5 ]

7 голосов
/ 23 июля 2011

Теперь существует лучший способ воспроизведения видео, которое вы сохранили в ByteArray, используя NetStream.appendBytes().

Вот пример его использования: http://www.bytearray.org/?p=1689

0 голосов
/ 17 сентября 2010

Трюк Loader + MovieClip, вероятно, единственный путь, посмотрите это

Для ограничений: 2-минутный предел подходит для rtmfp2p, так как распределение больших байтовых массивов в любом случае нецелесообразно.

Предполагая, что метрики воспроизведения (точка воспроизведения / текущий кадр) доступны, плавные переходы не должны быть проблемой - начните воспроизведение второго SWF с mute / visible = false до синхронизации часов, затем переверните видео и звук -это очень хорошо работает для netstream / play (), но пока не совсем уверенно для обычного swf.

Другая проблема заключается в выяснении того, как именно данные flv импортируются в swf, и как создать правильный swf во время выполнения., в as3.До сих пор mxmlc / swfmill были безуспешны для непосредственного встраивания FLV для меня (это было некоторое время, все могло измениться), только обычная флеш-память AS3 была способна создавать SWF-файл, загружаемый в виде байта с видео.Впрочем, это должно быть возможно.

В соответствующей заметке - один вопрос: стоит ли все это делать, - если бы кто-то создавал успешный сайт с p2p VOD, подобным этому, Adobe могла бы просто подвести черту (взломать что-то вроде SWF-мувиклипа со встроенным видео для загрузки из байт-массива ...).

0 голосов
/ 12 октября 2009

я думаю "почему ByteArray" на самом деле вопрос ... как он туда попал? :)

Есть множество подходов ... один из них был дан Конрадом ... но, как он сказал, он будет медленным ... на самом деле, я думаю, что он будет намного медленнее, чем вы можете себе представить ... так что здесь еще один:

передать ByteArray на сервер и загрузить оттуда flv ... есть несколько вариантов:

  • удаленный сервер: загрузите его на удаленный сервер (вероятно, тот, который распространяет ваш swf) ... все еще остается вопрос, почему вы не распространяете flv оттуда во-первых ...
  • локальный сервер:
    1. установлено: просто установите крошечное локальное приложение, чтобы сделать именно это для вас, то есть вы можете протолкнуть туда байтовый массив и затем извлечь его через подходящий протокол (HTTP, RTMP) ...
    2. встроенный в браузер: такой же, как установленный, но вы можете просто создать Java-апплет для выполнения этой работы ... подписанные Java-апплетам разрешено связывать порты (да, это дополнительный щелчок для пользователь, но он настолько удобен, насколько это возможно) это то, что вам нужно сделать, а остальное действительно так же, как с установленным сервером ...

в обоих сценариях вы можете столкнуться с проблемами политики междоменных доменов (возможно, только при отправке, поскольку я думаю, что вам разрешено загружать видео между доменами), когда вам нужно правильно реагировать на запросы файла политики FlashPlayer (вы можете найти тонны всего этого) ... вы можете обойти ограничение отправки, создав мост LocalConnection, например этот для C # ...

тогда удачи ...;)


edit: ну хорошо, теперь я понимаю ... на самом деле, уже был очень похожий вопрос ... я помню короткое интервью с каким-то парнем из Adobe, совсем скоро после того, как была объявлена ​​функция p2p ... adobe очень стесняется этого ... на самом деле мне потребовались недели, чтобы найти p2p после того, как флеш-плеер 10 был официально выпущен (раньше у меня не было времени беспокоиться) ...

на самом деле, я думаю, что это сделано специально ... в интервью было ясно, что Adobe не пытается оттолкнуть сайты потокового видео ... два наиболее важных, вероятно, - YouTube и Google Video .. . YouTube - одна из главных причин, почему флеш-плеер стал таким популярным, в первую очередь ... и принадлежит Google, как и видео Google ..., позволяющее легко создавать медиа-платформу p2p, сильно разозлит Google. вам не нужно много серверов для этого ... "просто" хорошее программное обеспечение, но это доступно ... и я думаю, Adobe не хочет разозлить Google ... некоторые причины:

  • это поисковая система
  • им нужен гугл, чтобы разрешить индексирование сайтов на основе флеш
  • Google в n раз больше
  • Google действительно пытается получить огромный кусок рынка RIA ... у них есть GWT , хром, V8 , собственный клиент ...

так что, я думаю, у Adobe нет особого интереса к этому ... во многом это похоже на то, когда Google объявил о своей платежной системе (это был GPay или около того?), Которая была прямым конкурентом PayPal. ... eBay - один из самых важных источников дохода Google ... и я больше никогда о нем не слышал ...

многие решения носят политический характер, когда речь идет о крупных компаниях ... и я думаю, что одним из них не является то, чтобы сделать p2p флеш-плеера слишком сильным ...


0 голосов
/ 12 октября 2009

Я не уверен, что это вообще возможно, поскольку я понятия не имею, как Flash кодирует видео, встроенные в SWF, но, возможно, вы могли бы преобразовать этот байтовый массив flv в swf со встроенным flv во временную шкалу и использовать этот байтовый массив для его отображения. с Loader.loadBytes ...

0 голосов
/ 12 октября 2009

Я не буду спрашивать, почему ByteArray? Ответ на ваш вопрос - ДА, но конечный результат будет работать медленнее - медленнее, когда видео больше и кодек сложен. Вы должны прочитать фреймы и поместить их как BitmapData в Bitmap и написать собственный проигрыватель. Лучше всего использовать Алхимию - тогда она работает быстрее, но также медленно :) Вы также можете использовать Haxe.

Звук очень похожим образом. Лучше всего начать с Adobe Labs. В конце - помните, что flv декодируется с использованием аппаратного обеспечения - ваш код будет использовать только процессор. Теперь спросите себя, действительно ли вам нужна эта функция?

...