Любой способ приостановить сетевой трафик класса NetStream в ActionScript 3? - PullRequest
0 голосов
/ 09 января 2011

Вот мой пример использования:

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

Это все работает нормально, за исключением того, что это действительно медленно, и некоторые сетевые диагностики предполагают, что проблема заключается в том, что все небольшие видео продолжают загружаться, хотя я вызывал pause () для их netstreams.

Перефразировать в коде:

Предположим, у меня есть:

var nc:NetConnection = new NetConnection();
nc.connect (null);   

var ns1:NetStream = new NetStream(nc);        

var vid1:Video = new Video(WIDTH, HEIGHT);
vid1.attachNetStream(ns1);
ns1.play("video1.mp4");
stage.addChild(vid1);

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

ns1.pause();

var ns2:NetStream = new NetStream(nc);
var vid2:Video = new Video(WIDTH, HEIGHT);
vid2.attachNetStream(ns2);
ns2.play("video2.mp4");
stage.addChild(vid2);

... и через некоторое время пользователь отклонил vid2, поэтому я возобновляю воспроизведение vid1

ns1.resume();

Есть ли какой-нибудь способ сказать ns1, чтобы он прекратил чтение его сокета? Если я позвоню ns1.close(), я не смогу возобновить воспроизведение с ns1.resume().

Если мне нужно использовать потоковый протокол, насколько тяжелым будет рукопожатие при загрузке всех небольших видео? Я пытаюсь быстро загрузить много видео с низким битрейтом (50 Кбит / с).

Спасибо!

1 Ответ

5 голосов
/ 09 января 2011

Проблема в том, что фильмы продолжают загружаться, даже если они не воспроизводятся. Вы можете легко увидеть это на YouTube: просто нажмите видео, а затем нажмите «Пауза» - индикатор выполнения продолжает расти.

Я полагаю, что нет другого способа остановить это, кроме как закрыть каждый NetStream, когда он приостановлен. Принимая небольшую задержку и / или переход к следующему смежному ключевому кадру, вы можете продолжить воспроизведение фильма на последней позиции, хотя: видеообъект, которому назначен поток, должен по-прежнему отображать последний кадр до появления нового контента, или video.clear() вызывается, и вы можете сохранить последнюю позицию воспроизведения с помощью ns.time и вернуться к ней после повторного подключения с помощью ns.seek ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...