Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.02.2009, 23:27
ramshteks вне форума Посмотреть профиль Отправить личное сообщение для ramshteks Найти все сообщения от ramshteks
  № 11  
Ответить с цитированием
ramshteks
 
Аватар для ramshteks

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
ну про алхимию было лишь предположение что какую то наиболее ресурсоемкую часть кода написать на си++, но правда ваша.

Добавлено через 8 минут
что касается 10го плеера, так помоему мы должны писать как можно больше именно под десятку с целью того чтобы вынудить пользователей устанавливать его и ускорить интеграцию новой версии. Нам это только плюс.

Старый 27.02.2009, 15:49
Роман Вадимович вне форума Посмотреть профиль Отправить личное сообщение для Роман Вадимович Найти все сообщения от Роман Вадимович
  № 12  
Ответить с цитированием
Роман Вадимович

Регистрация: May 2007
Сообщений: 232
Кстати, меня очень интересует эта тема. Хотелось бы тоже реализовать что-то подобное.

Здесь можно найти байты с которых начинается и заканчивается каждая следующая фотка.
http://ru.wikipedia.org/wiki/JPEG#cite_note-0

На практике применить пока не получилось.
Буду писать, как продвигаются дела.

Добавлено через 10 часов 30 минут
Получилось прочитать mjpeg. Кому интересно расскажу завтра. А то уже не в силах сидеть за компом.

Старый 28.02.2009, 14:00
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 13  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
очень интересно. ждем.
__________________
Отряд Котовскага

Старый 28.02.2009, 14:30
Роман Вадимович вне форума Посмотреть профиль Отправить личное сообщение для Роман Вадимович Найти все сообщения от Роман Вадимович
  № 14  
Ответить с цитированием
Роман Вадимович

Регистрация: May 2007
Сообщений: 232
В общем смысл в следующем. Формат MJPEG представляет собой последовательность JPEG картинок. Как верно указали выше, необходимо просто резать поток на части и обрабатывать их как фотки.
Википедия любезно предоставила материалы по спецификамии формата JPG. Все что нужно - это знать какими байтами начинается фотка и какими заканчивается.
0xFFD8 - Начало изображения.
0xFFD9 - Конец изображения.

Все что осталось - написать прогу. Класс URLStream позволяет качать файл и иметь доступ к содержимому в процессе - это то, что нам нужно.
Создаем экземпляр ByteArray, чтобы класть туда каждое новое изображение. Затем загружаем его в экземпляр Loader.
Вот код который работает, но написан на скорую руку - я думаю можно сделать намного техничнее:

Код AS3:
package {
	import flash.display.*;
	import flash.events.ProgressEvent;
	import flash.net.*;
	import flash.utils.*;
 
	public class Tester extends Sprite
	{
		private var _stream:URLStream = new URLStream();
		private var _loader:Loader = new Loader()
		private var _buffer:ByteArray;
		private var _write:Boolean = false;	
		private var _markerDetection:Boolean = false;	
		private var _request:URLRequest = new URLRequest("http://195.5.16.71/cgi-bin/mjpg/video.cgi?1235814902125");
 
		public function Tester()
		{
			stage.align = StageAlign.TOP_LEFT;
			stage.scaleMode = StageScaleMode.NO_SCALE;
 
			addChild(_loader);
			_stream.load( _request );
			_stream.addEventListener(ProgressEvent.PROGRESS, onProgress);
 
 
		}
		private function onProgress(event:ProgressEvent):void
		{
			var byte:int;
 
			// Если есть скачанные байты - обработать их 
			while(_stream.bytesAvailable > 0)
			{
				byte = _stream.readUnsignedByte();
				if(_write) _buffer.writeByte(byte);
				if(_markerDetection)
				{
					switch(byte)
					{
						case 0xD8:
							_write = true;
							_buffer = new ByteArray();
							_buffer.writeByte(0xFF);
							_buffer.writeByte(0xD8);
						break;
						case 0xD9:
							_write = false;
							_buffer.writeByte(0xD9);
							_loader.loadBytes(_buffer);
						break;
					}
 
				}
				_markerDetection = (byte == 0xFF) ?  true : false;
			} 
		}
	}
}
Кстати хорошая статья, правда только сегодня нашел:
http://www.codeproject.com/KB/audio-...select=2292455


Последний раз редактировалось Роман Вадимович; 28.02.2009 в 14:33.
Старый 16.03.2009, 16:01
Bekass вне форума Посмотреть профиль Отправить личное сообщение для Bekass Найти все сообщения от Bekass
  № 15  
Ответить с цитированием
Bekass

Регистрация: Nov 2005
Сообщений: 73
Использовал Ваш код, Роман Вадимович. Классно работает, вопрос только в том почему мелькает изображение при наведении на область видео мышки, что-то не понятно от чего это.

Старый 16.03.2009, 16:29
Роман Вадимович вне форума Посмотреть профиль Отправить личное сообщение для Роман Вадимович Найти все сообщения от Роман Вадимович
  № 16  
Ответить с цитированием
Роман Вадимович

Регистрация: May 2007
Сообщений: 232
Этот код, как говорил, только тестовая версия. Мелькает по следующей причине.
Загрузка новых картинок производится в тот же контейнер. Смена происходит не мгновенно, поэтому мы замечаем белый экран.
Чтобы этого не было - нужно усложнить программу. Возможнный выход: использовать не один контейнер Loader, а два. Грузить изображения попеременно и каждый раз менять их глубину относительно друг друга.

Старый 16.03.2009, 21:45
Bekass вне форума Посмотреть профиль Отправить личное сообщение для Bekass Найти все сообщения от Bekass
  № 17  
Ответить с цитированием
Bekass

Регистрация: Nov 2005
Сообщений: 73
Ясно, спасибо, испробую

Старый 26.12.2009, 21:49
alexsher1964 вне форума Посмотреть профиль Отправить личное сообщение для alexsher1964 Найти все сообщения от alexsher1964
  № 18  
Ответить с цитированием
alexsher1964

Регистрация: Dec 2009
Сообщений: 7
Доброго времени, Роман Вадимович. Попробовал менять контейнеры-все равно мелькает при наведении мышкой в область экрана. А что там по поводу глубины относительно друг друга?

Добавлено через 13 минут
нет, всё получилось)))

Старый 27.12.2009, 12:33
willis83 вне форума Посмотреть профиль Отправить личное сообщение для willis83 Найти все сообщения от willis83
  № 19  
Ответить с цитированием
willis83
 
Аватар для willis83

Регистрация: Jan 2008
Адрес: Украина, Славутич
Сообщений: 646
Отправить сообщение для willis83 с помощью ICQ
вопросик про "менять глубину". У флэша нет масимальной глубины? т.Е. это число бесконечно?

Старый 27.12.2009, 21:22
$mival вне форума Посмотреть профиль Отправить личное сообщение для $mival Найти все сообщения от $mival
  № 20  
Ответить с цитированием
$mival
 
Аватар для $mival

Регистрация: Oct 2005
Адрес: Russia, Irkutsk
Сообщений: 742
Цитата:
Сообщение от willis83 Посмотреть сообщение
вопросик про "менять глубину". У флэша нет масимальной глубины? т.Е. это число бесконечно?
int:
The range of values represented by the int class is -2,147,483,648 (-2^31) to 2,147,483,647 (2^31-1)
__________________
smival.com

Создать новую тему Ответ Часовой пояс GMT +4, время: 02:40.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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