Показать сообщение отдельно
Старый 07.09.2006, 17:33   #5
@lex
Оператор ЭВМ
 
Регистрация: 31.08.2006
Сообщений: 42
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Воспроизведение видео?

В примере простого плэера описано что-то вобще не понятное, оно у меня так и не скомпилилось:
try {
     Player p = Manager.createPlayer("http://abc.mpg");
     p.realize();
     VideoControl vc;
     if ((vc = (VideoControl)p.getControl("VideoControl")) != null)
         add((Component)vc.initDisplayMode(vc.USE_GUI_PRIMITIVE, null));
     p.start();
 } catch (MediaException pe) {
 } catch (IOException ioe) {
 }
В описаниях GUIControl описан метод использования формы, что меня не устраивает:
try {
       Player p = Manager.createPlayer("http://abc.mpg");
       p.realize();
       GUIControl gc;
       if ((gc = (GUIControl)p.getControl("GUIControl")) != null) {
           Form form = new Form("My GUI");
           form.append((Item)gc.initDisplayMode(GUIControl.USE_GUI_PRIMITIVE, null));
           Display.getDisplay(midlet).setCurrent(form);
       }
       p.start();
   } catch (MediaException pe) {
   } catch (IOException ioe) {
   }
В описании VideoControl описан метод с использованием Canvas, с ним вроде как всё ясно, но телефон не захотел играть вообще
javax.microedition.lcdui.Canvas canvas;
      :
   try {
       Player p = Manager.createPlayer("http://abc.mpg");
       p.realize();
       VideoControl vc;
       if ((vc = (VideoControl)p.getControl("VideoControl")) != null)
           vc.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, canvas));
       vc.setVisible(true);
       p.start();
   } catch (MediaException pe) {
   } catch (IOException ioe) {
   }
Попытался сделать всё также , только прописать Use_GUI_PRIMITIVE - изображения нет.

Вот полный исходник библиотеки:
import javax.microedition.media.*;
import javax.microedition.media.control.*;

public class Lib_xplay {

  private static Player play;
  private static VolumeControl vc;
  private static VideoControl vid;

public static int open_url(String url) {
int res = 1;
try { 
close_player();
play = (Player) Manager.createPlayer(url);
play.realize();
vc = (VolumeControl) play.getControl("VolumeControl");
vid = null;
vid = (VideoControl) play.getControl("VideoControl");
if (vid != null) {
	res = 2;
 	vid.initDisplayMode(vid.USE_GUI_PRIMITIVE, null);
	 }
if (play.getState() != play.REALIZED) {res = 0;}
play.prefetch();
vc.setLevel(50);
if (play.getState() != play.PREFETCHED) {res = 0;}
} catch (Exception e) {res = 0;}
return res;
}

public static void setvolume (int vol) {
if(vc != null) {vc.setLevel(vol);}}


public static int start_play() {
try {play.start(); return 1;} catch (MediaException e) {return 0;}}

public static int stop_play() 
{ try { if(play != null && play.getState() == play.STARTED) {
play.stop(); return 1;} else return 0; } catch (MediaException e) {return 0;}}


public static void close_player() {
try {
if (play != null) {
         if(play.getState() == play.STARTED) {
            play.stop();
         }
         if(play.getState() == play.PREFETCHED) {
            play.deallocate();
         }
         if(play.getState() == play.REALIZED || 
           play.getState() == play.UNREALIZED) {
            play.close();
         }
      } } catch (Exception e) {}
      play = null; }

public static int is_playing()
{ if(play != null && play.getState() == play.STARTED) {return 1;} else return 0; }

public static void vis_video(int bl) {
if (bl != 0) { vid.setVisible(true); } else { vid.setVisible(false); } }

}
Но в нём явно не хватает определения метода вывода изображения.
(Offline)
 
Ответить с цитированием