forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=124)
-   -   Lib_videocnv: воспроизведение видео в режиме Canvas! (http://forum.boolean.name/showthread.php?t=6197)

ViNT 01.08.2008 19:26

Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Вложений: 3
Наконец-то удалось сделать библиотеку для воспроизведения видео в Canvas!

v2.0
Испрален баг с функцией get_duration.

v3.0
Теперь библиотека работает через стандартный плеер, т.е. можно грузить видео из ресурса стандартными функциями. Позиция в файле определяется в МИКРОсекундах.

Библиотека содержит следующие функции:

public static void init_display(int fsm)
Инициализация дисплея.
Параметры:
fsm - плоноэкранный режим, 1-включить,-1-выключить.

public static void load_fs(String FileName, String mime)
Загрузка файла.
Параметры:
FileName - имя файла.
mime - принятый в j2me идентификатор типа файла,
для 3gp-'video/3gpp', для MPEG-4 - 'video/mpeg'

Для загрузки из ресурса можно использовать стандартную функцию OpenPlayer.

public static void set_fullscreen(int flag)
Установка режима видео:
если flag=1 - автоматическая подгонка
видео под размер экрана, с сохранением
отношения сторон, иначе - использование размера,
установленного set_size.

public static void set_location(int x, int y)
Установка расположения изображения.

public static void set_size(int w, int h)public static void set_visible(int flag)public static void start()
Установка резмеров изображения.
Параметры:
w-ширина
h-высота

public static void start()
Запуск воспроизведения.

public static void stop()
Остановка воспроизведения.

public static int get_src_width()
Возвращает ширину исходного изображения.

public static int get_src_height()
Возвращает высоту исходного изображения.

public static void set_volume(int vol)
Установка громкости звука.
Параметры:
vol-значение громкрсти(0-100)

public static void set_mute(int flag)
Если flag=1 - выключить звук, если flag=-1-
включить звук.

public static int get_duration()
Возвращает длительность видео в МИКРОсекундах.

public static int get_position()
Возвращает текущую позицию в МИКРОсекундах.

public static int set_position(int pos)
Устанавливает позицию в МИКРОсекундах.
Параметры: int pos - позиция в МИКРОсекундах
Возвращает 1 в случае успеха и -1 в случае ошибки.

public static void close_player()
Закрытие плеера.

Для продолжения работы с Canvas MP нужно вызвать ShowCanvas!

Внимание!
Необходимо добавить файл VCNV.class в проект как ресурс.

Для использования третьей версии нужно также добавить в ресурсы файл P.class из архива P.zip. Если в программе вызываются стандартные функции плеера, класс P добавлять не нужно.

Библиотека требует доступа к ФС.
Поддерживается файловая система JSR75.
Телефон должен поддерживать воспроизведение
видео из java.
Проверено на SE k510i.

Версия 3.0 от 21:20 20.08.09

vitalik1 09.08.2008 00:29

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
А можно сделать библиотеку Lib_videocnv для siemens x65-x75?

ViNT 09.08.2008 02:05

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Цитата:

Сообщение от vitalik1 (Сообщение 84068)
А можно сделать библиотеку Lib_videocnv для siemens x65-x75?

Пока врядли - тестировать не на чем.
Хотя возможно попробую.

m1kc. 14.09.2008 21:23

Lib_videocnv: воспроизведение видео в режиме Canvas!
 
В общем, у меня такая проблема.

Запускаю видео этим кодом:
PHP код:

videocnv.init_display(1);
videocnv.load(mc_path+mc_array[i]); // Загрузка файла
videocnv.set_fullscreen(0); // Установка размера вручную
videocnv.set_location(0GetHeight/2-GetWidth/4*3/2); // По центру экрана, пропорции 4:3
videocnv.set_size(GetWidthGetWidth/4*3); // Растягиваю на весь экран
videocnv.set_visible(1);
videocnv.set_volume(100);
videocnv.start

Потом жду, пока оно не закончится:

PHP код:

Delay(videocnv.get_duration); 

И пытаюсь закрыть плеер вот этим кодом:

PHP код:

videocnv.set_visible(-1);
videocnv.close_player;
videocnv.init_display(-1); 

Все нормально воспроизводится, но после окончания файла вижу черный экран и прога виснет намертво. Думаю, что ошибка в последней части. Что я там неправильно прописал?

Вредитель 15.09.2008 14:21

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Цитата:

public static void init_display(int fsm)
Инициализация дисплея.
Параметры:
fsm - плоноэкранный режим, 1-включить,-1-выключить.
videocnv.init_display(-1); -- это активировать плеер без полноэкранного режима, при повторной активации прога зависает, убери эту строчку.

m1kc. 15.09.2008 14:41

Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Ясно, спасибо! :)

m1kc. 22.09.2008 17:19

Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Не, чета все равно зависает...

ViNT 22.09.2008 22:27

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Сложно сказать, в чем дело - проверить на теле не могу.
Пример работает нормально или тоже зависает?

m1kc. 23.09.2008 20:44

Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Кхм, я чувствую, ты не понял, в чем проблема. Все нормально воспроизводится, но после окончания видео я вижу только черный экран с первым кадром посередине, а по идее прога должна выполняться дальше. Пример нормально работает, но там после нажатия на 0 прога просто завершается, там дальше нет никакого кода, использующего экран.

ViNT 23.09.2008 21:23

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
А ShowCanvas после остановки воспроизведения вызывается?

m1kc. 24.09.2008 13:51

Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Теперь да, но эффект нулевой. Код (после всех изменений):

PHP код:

videocnv.init_display(1);
videocnv.load(mc_path+mc_array[i]);
videocnv.set_fullscreen(0);
videocnv.set_location(0GetHeight/2-GetWidth/4*3/2);
videocnv.set_size(GetWidthGetWidth/4*3);
videocnv.set_visible(1);
videocnv.set_volume(100);
videocnv.start;
Delay(videocnv.get_duration);
videocnv.close_player;
ShowCanvas


Вредитель 24.09.2008 15:38

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Цитата:

public static void stop()
Остановка воспроизведения.
может это?

m1kc. 24.09.2008 15:40

Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Цитата:

Сообщение от Вредитель (Сообщение 86776)
может это?

Пробовал уже. Не айс.

ViNT 24.09.2008 21:42

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Сбой возникает при вызове Delay(get_duration). Похоже, функция дает неправильный результат и мидлет ждет слишком долго. В чем именно дело пока непонятно, возможно ошибка при переводе long в int попробую разобраться, но тут другая проблема - пересел на висту, не могу поставить JBuilder, а при прямой компиляции в WTK матерится, что в классе Canvas нет метода setFullScreenMode, хотя в JB компилил нормально. Может кто подскажет, какие ключи надо использовать?
P.S. Сколько весит NetBeans и где его лучше скачать? И вообще, пойдет ли он на висте?

odd 25.09.2008 06:07

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Пробовал ставить NetBeans на висту - не ставится. Тупо не может почему-то обнаружить jdk, хотя он там есть. Так что в NetBeans лучше работать под XP. Весит мобильная версия метров 70 в запакованном виде. Если всё ещё интересно - качай с www.netbeans.org

ViNT 25.09.2008 16:57

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Вроде же 6.1 есть версия под висту? Или она тоже не фурычет?

odd 26.09.2008 06:13

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
На сайте пишут, что и эта версия должна пахать под Vista. Может если защиту папок отключить, заработает?

m1kc. 10.10.2008 18:04

Lib_videocnv: воспроизведение видео в режиме Canvas!
 
ViNT, ну как там дела? :)

ViNT 10.10.2008 23:30

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Да все руки не доходят :(. В выходные попробую исправить.

ARV 11.10.2008 19:51

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Цитата:

Сообщение от odd (Сообщение 86812)
Пробовал ставить NetBeans на висту - не ставится. Тупо не может почему-то обнаружить jdk, хотя он там есть. Так что в NetBeans лучше работать под XP. Весит мобильная версия метров 70 в запакованном виде. Если всё ещё интересно - качай с www.netbeans.org

можно указать наличие JDK явно для проекта - он и подключит все, что надо...
а NetBeans можно заказать в виде диска - пришлют весь комплект, только WTK туда не входит... мне прислали давно уже :)

m1kc. 22.10.2008 14:12

Lib_videocnv: воспроизведение видео в режиме Canvas!
 
ViNT, а ты какие именно выходные имел в виду?..

Piligrim 22.10.2008 15:14

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
ARV
туда входит всё, и WTK в том числе. Оно ставится в папку mobility8.

odd 24.10.2008 06:41

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Цитата:

Сообщение от pilgrim (Сообщение 89257)
ARV
туда входит всё, и WTK в том числе. Оно ставится в папку mobility8.

Действительно, есть WTK 2.5.2 и там достаточно неплохой эмулятор. NetBeans под Vista я всё таки установил, так что вопрос исчерпан.

Cliffe Snake 25.10.2008 06:46

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Цитата:

Сообщение от m1kc. (Сообщение 86735)
Все нормально воспроизводится, но после окончания видео я вижу только черный экран с первым кадром посередине, а по идее прога должна выполняться дальше.

Функция get_duration возвращает значение в 1000 раз больше чем нужно.
т.е. Duration:=(get_duration/1000);
для продолжения работы после close_player нужно вызвать ShowCanvas;
При проигрывании видео, функции отрисовки не работают(Что неплохо было бы исправить ;) )
Вот пример юзанья: :cool:
PHP код:

program Video;
uses videocnv,jsr75i;
var
 
KP:integer;
 
v:integer;
 
sw,sh,time:integer;
begin
sw
:=getwidthsh:=getheight;
Setcolor(0,0,0);
fillrect(0,0,sw,sh);
setcolor(0,255,0);
repaint;
delay(2000);
/////////////////////
// Открываем плеер //
/////////////////////
 
init_display(1);//Инициализируем дисплей
 
load('fs/media/tagik.3gp');//Загружаем видео
 
set_location((sw-get_src_width)/2,0);
 
videocnv.set_size(swsw/4*3);//У меня ваще не меняется видео, как ни меняй эти параметры
 
set_visible(1);//Отображение дисплея
 
time:=GetRelativeTimeMs//записываем время начала воспроизведения
  
start;//Запуск воспроизведения
  
v:=20;
    
repeat 
     kp
:=getkeypressed;
     if 
kp=ke_star then stop;//Остановка
     
if kp=ke_pound then start;//Запуск
     
if kp=ke_key3 then
     begin
      v
:=v+5;
      
set_volume(v);//Увеличиваем громкость
     
end;
      if 
kp=ke_key1 then
     begin
      v
:=v-5;
      
set_volume(v);//уменьшаем громкость
     
end;
     
delay(100);// если задержку убираю, видео начинает тормозить, а с delay(100); всё супер!
    
until (((GetRelativeTimeMs Time) > (get_duration/1000)); //Ждём пока видео проигрывается
    
stop;//Остановка
    
close_player;//Закрываем плеер и вызываем showcanvas
showcanvas;
setcolor(0,0,255);
fillrect(0,0,sw,sh);
repaint;
delay(10000);
end


ViNT 26.10.2008 00:24

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Цитата:

Сообщение от Cliffe Snake (Сообщение 89409)
Функция get_duration возвращает значение в 1000 раз больше чем нужно.
т.е. Duration:=(get_duration/1000);

Да так и есть, хотя непонятно почему. Все нет времени исправить.
Цитата:

Сообщение от Cliffe Snake (Сообщение 89409)
При проигрывании видео, функции отрисовки не работают(Что неплохо было бы исправить ;) )

Тут уже свои сложности. При проигрывании видео используется своя Canvas (со стандартной плеер работать не хочет), надо все функции с нуля писать. Появится время - займусь этим.

Piligrim 26.10.2008 09:33

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Цитата:

Да так и есть, хотя непонятно почему. Все нет времени исправить.
Returns: The duration in microseconds or TIME_UNKNOWN.

ViNT 26.10.2008 11:26

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Исправил баг с get_duration.
Также добавил установку позиции и возможность указания mime-типа при загрузке файла (теперь должно работать не только с 3gp, хотя на mpeg не проверял, нет возможности).

Трава 05.08.2009 18:57

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Да ну, прикольная либа :) Можно небольшой плеер накалякать.

Трава 05.08.2009 19:22

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
И ещё - NetBeans на висту ставиться абсолютно спокойно! У меня во всяком случае виста хом бэсик и нетбинс работает нормально также как WTK, JRE и прочая хрень явовская

cherepets 19.08.2009 18:00

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Видео ток из фс читаются. А чтоб из ресурсов было, можно сделать как-нить?

ViNT 19.08.2009 23:52

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Цитата:

Сообщение от cherepets (Сообщение 115261)
Видео ток из фс читаются. А чтоб из ресурсов было, можно сделать как-нить?

Переделаю на стандартный плеер, можно будет стандартной функцией грузить.

cherepets 20.08.2009 21:10

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
О, было бы очень полезно)))

cherepets 20.08.2009 21:31

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Сейчас либа позволяет воспроизводить видео сохраненное в телефоне. В этом нет смысла (показ человеку видео, которе он и так видел), а вот если будет воспроизведение из ресурсов, то будет гораздо интереснее)))

ViNT 20.08.2009 22:37

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Обновил, но протестить не смог, т.к. у меня моторола, а она видео из java не воспроизводит.

cherepets 21.08.2009 18:41

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Отлично, а када выложишь?

ViNT 22.08.2009 01:12

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Цитата:

Сообщение от cherepets (Сообщение 115666)
Отлично, а када выложишь?

Так в первом посте лежит :)

cherepets 22.08.2009 12:46

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Не пашет. Ошибка в строке
Цитата:

uses videocnv3;
Цитата:

newproject1.mpsrc:2 error, unexpected token '<EOF>'
В проект класс добавил, все остальное тоже правильно делал.

ViNT 23.08.2009 12:25

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Цитата:

Сообщение от cherepets (Сообщение 115747)
Не пашет. Ошибка в строке

В проект класс добавил, все остальное тоже правильно делал.

Судя по тексту ошибки, дело точно не либе.
Тут, скорее всего, где-то нарушена структура (иногда MP не в состоянии правильно определить несоответствие begin'ов и end'ов, особенно, это касается последнего end'а).

Попробуй стереть несколько первых строк и набрать заново, возможно, там есть какой-то недопустимый символ.

cherepets 23.08.2009 13:22

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Все перепроверил, перепробовал. Не выходит((
Ошибка та же. EOF в проге нет вообще.

ViNT 23.08.2009 13:24

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Цитата:

Сообщение от cherepets (Сообщение 115863)
Все перепроверил, перепробовал. Не выходит((
Ошибка та же. EOF в проге нет вообще.

EOF, это конец файла.
Что-то не так со структурой.
Выложи исходник, попробую разобраться.

cherepets 23.08.2009 14:12

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
На свой исходник я забил и потер его, пример хотяб запустить пытался. Тот же бред...

Skythrone 24.08.2009 22:35

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
А возможно ли воспроизводить видео из строки (или из потока)? Например, предварительно загрузив эту строку с сервера. Было бы весьма интересно.

ViNT 25.08.2009 03:09

Цитата:

Сообщение от cherepets (Сообщение 115869)
На свой исходник я забил и потер его, пример хотяб запустить пытался. Тот же бред...

Тоже на EOF ругается?
Проект у меня компилился нормально, только работу не проверял, телефона подходящего под рукой не было, проверю на SE.

Вообще как-то странно все это, может MP глючит?

Цитата:

Сообщение от Skythrone (Сообщение 116073)
А возможно ли воспроизводить видео из строки (или из потока)? Например, предварительно загрузив эту строку с сервера. Было бы весьма интересно.

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

cherepets 25.08.2009 13:31

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Цитата:

Проект у меня компилился нормально
Странно, а у меня пример не компилится.

Цитата:

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

Цитата:

Вообще как-то странно все это, может MP глючит?
У меня 2.01 английский незареганый.
С ним могут проблемы быть?

ViNT 25.08.2009 16:38

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Цитата:

Сообщение от cherepets (Сообщение 116178)
Странно, а у меня пример не компилится.

Проверил еще раз, все нормально.

Цитата:

Сообщение от cherepets (Сообщение 116178)
А на эмуляторах видео должно воспроизводиться?

Не пробовал. Завтра проверю на SE.

Цитата:

Сообщение от cherepets (Сообщение 116178)
У меня 2.01 английский незареганый.
С ним могут проблемы быть?

Могут. Используй английскую 2.02, для некоммерческих проектов регать необязательно.

cherepets 25.08.2009 17:22

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Поставил 2.02 английскую.
Таже фигня((

+дело по ходу не в либе.
До этого везде как-то обходился средствами мп, так что это первая попытка подключить либу была. Опытным путем выяснил: када я использую функции из любых либ вылазят ошибки и все накрывается.
В том числе не пашет ни один пример(((

Бред какой-то(( Может фигня в том что у меня вин 7ка?

ViNT 25.08.2009 17:31

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Цитата:

Сообщение от cherepets (Сообщение 116218)
Поставил 2.02 английскую.
Таже фигня((

+дело по ходу не в либе.
До этого везде как-то обходился средствами мп, так что это первая попытка подключить либу была. Опытным путем выяснил: када я использую функции из любых либ вылазят ошибки и все накрывается.
В том числе не пашет ни один пример(((

Бред какой-то(( Может фигня в том что у меня вин 7ка?

Может и из-за семерки, у меня на висте тоже проблемы были, хотя не до такой степени.
Попробуй ставить MP совместимость с разными версиями windows, может поможет.

Какие именно ошибки выдает, тоже про EOF?

cherepets 25.08.2009 18:23

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Нет, ошибки разные. Например, при компиляции примера библиотеки font32 паскаль намертво зависает.

Совместимость потыкал. Эффекта 0.

Mach94 05.10.2009 23:27

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Vint, у мя videocnv работает нормально, а вот videocnv3 вобще не пашет, даже запроса на чтение данных нет... Вобщем такая просьба, не мог бы ты сделать поворот экрана? А то с rc не получается т.к. там repaint вызывать нужно...

ViNT 05.10.2009 23:39

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Цитата:

Сообщение от Mach94 (Сообщение 120695)
Vint, у мя videocnv работает нормально, а вот videocnv3 вобще не пашет, даже запроса на чтение данных нет... Вобщем такая просьба, не мог бы ты сделать поворот экрана? А то с rc не получается т.к. там repaint вызывать нужно...

На счет зависания - добавь в проект класс P.class (этот:http://forum.boolean.name/attachment...8&d=1254767731), должно заработать.

На счет поворота - если это предусмотрено в Java - добавлю, если нет - не получится.

Mach94 06.10.2009 00:00

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Спасибо, слушай, не подскажешь тогда ещё, как мне хотяб какуюнибудь инфу на экран вывести, как только вызываю канвас и перерисовку, картинка видяхи исчезает ( остаётся только звук) а хотелось бы хотяб кнопки нарисовать...

ViNT 06.10.2009 00:01

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
На данный момент таких функций нет, пытался сделать - на что-то наткнулся, забросил. Попытаюсь сделать.

Mach94 06.10.2009 00:03

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Буду ждать))

Rock2roll 19.05.2011 09:22

Ответ: Lib_videocnv: воспроизведение видео в режиме Canvas!
 
Смотрите Centurion 7.1. Там кроме видео на экране ещё и кнопки и прочая графика!


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot