Page 1 of 1

Sample around the new LibVLC on android

Posted: 19 Jun 2015 16:04
by leykan
Hello,

I am using the last LibVLC for an android app.
I am trying to create my videoplayer but I don't know how the API works and I can't find sample to help me..

this is the way i use the API:

Code: Select all

private static LibVLC LibVLC() { return VLCInstance.get(); } private static MediaPlayer MediaPlayer() { return VLCInstance.getMainMediaPlayer(); } @Override @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Toast.makeText(getApplicationContext(), "Ca start VideoPlayerActivity !!", Toast.LENGTH_SHORT).show(); if (!VLCInstance.testCompatibleCPU(this)) { // exit(RESULT_CANCELED); return; } extras = getIntent().getExtras(); mUri = extras.getParcelable(PLAY_EXTRA_ITEM_LOCATION); Toast.makeText(getApplicationContext(), "Oui ça start le VideoPlayer", Toast.LENGTH_SHORT).show(); setContentView(R.layout.player_test); } @Override public void onResume() { super.onResume(); mSurfaceView = (SurfaceView) findViewById(R.id.player_surface_test); setSurfaceLayout(100, 100, 100, 100, 100, 100); mSurfaceHolder = mSurfaceView.getHolder(); mSurfaceFrame = (FrameLayout) findViewById(R.id.player_surface_frame_test); mSurfaceHolder.addCallback(mSurfaceCallback); } private static class ConfigureSurfaceHolder { private final Surface surface; private boolean configured; private ConfigureSurfaceHolder(Surface surface) { this.surface = surface; } } @Override public void setSurfaceLayout(int width, int height, int visible_width, int visible_height, int sar_num, int sar_den) { /*if (width * height == 0) return;*/ // store video size mVideoHeight = height; mVideoWidth = width; mVideoVisibleHeight = visible_height; mVideoVisibleWidth = visible_width; mSarNum = sar_num; mSarDen = sar_den; Toast.makeText(this, "mVideoHeight = " + mVideoHeight, Toast.LENGTH_SHORT).show(); } @Override public int configureSurface(Surface surface, final int width, final int height, final int hal) { if (AndroidUtil.isICSOrLater() || surface == null) return -1; if (width * height == 0) return 0; Log.i(TAG, "configureSurface: " + width +"x"+height); // Toast.makeText(this, "Configuration de la surface", Toast.LENGTH_SHORT).show(); final ConfigureSurfaceHolder holder = new ConfigureSurfaceHolder(surface); final Handler handler = new Handler(Looper.getMainLooper()); handler.post(new Runnable() { @Override public void run() { if (mSurface == holder.surface && mSurfaceHolder != null) { if (hal != 0) mSurfaceHolder.setFormat(hal); mSurfaceHolder.setFixedSize(width, height); } synchronized (holder) { holder.configured = true; holder.notifyAll(); } } }); try { synchronized (holder) { while (!holder.configured) holder.wait(); } } catch (InterruptedException e) { return 0; } return 1; } @Override public void eventHardwareAccelerationError() { } private void startVideo() { // LibVLC lib = new LibVLC(); mMediaPlayer = VLCInstance.getMainMediaPlayer(); Media media = new Media(VLCInstance.get(), mUri.getPath()); media.parse(); Toast.makeText(this, "le media dure : "+media.getDuration(), Toast.LENGTH_SHORT).show(); // Toast.makeText(this, "le media dure : "+media., Toast.LENGTH_SHORT).show(); mMediaPlayer.setMedia(media); //mMediaPlayer.setVideoTrackEnabled(true); //media.release(); // mMediaPlayer.setEqualizer(VLCOptions.getEqualizer()); // mMediaPlayer.setVideoTitleDisplay(MediaPlayer.Position.Disable, 0); int sw = getWindow().getDecorView().getWidth(); int sh = getWindow().getDecorView().getHeight(); VLCInstance.get().setWindowSize(sw, sh); mMediaPlayer.play(); Toast.makeText(this, "le player a une valeur de : "+mMediaPlayer.isPlaying(), Toast.LENGTH_SHORT).show(); // media.parse(); // media.release(); // mMediaPlayer.setMedia(media); // mMediaPlayer.play(); } private final SurfaceHolder.Callback mSurfaceCallback = new SurfaceHolder.Callback() { @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { if(MediaPlayer() != null) { width = 100; height =100; Toast.makeText(getApplicationContext(), "surface width = "+width, Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), "surface height = "+height, Toast.LENGTH_SHORT).show(); final Surface newSurface = holder.getSurface(); if (mSurface != newSurface) { mSurface = newSurface; Toast.makeText(getApplicationContext(), "surfaceChanged: " + mSurface, Toast.LENGTH_SHORT).show(); LibVLC().attachSurface(mSurface, VideoPlayerActivity.this); mSurfaceReady = true; startVideo(); //mHandler.sendEmptyMessage(1); } } } @Override public void surfaceCreated(SurfaceHolder holder) { } @Override public void surfaceDestroyed(SurfaceHolder holder) { Log.i(TAG, "surfaceDestroyed"); if(MediaPlayer() != null) { mSurface = null; LibVLC().detachSurface(); mSurfaceReady = false; } } }; private final Handler mHandler = new VideoPlayerHandler(this); private static class VideoPlayerHandler extends WeakHandler<VideoPlayerActivity> { public VideoPlayerHandler(VideoPlayerActivity owner) { super(owner); } @Override public void handleMessage(Message msg) { VideoPlayerActivity activity = getOwner(); if(activity == null) // WeakReference could be GC'ed early return; switch (msg.what) { case 1: activity.startVideo(); break; default: break; } } }; public static void start(Context context, Uri uri) { start(context, uri, null, false, -1); } public static void start(Context context, Uri uri, boolean fromStart) { start(context, uri, null, fromStart, -1); } public static void start(Context context, Uri uri, String title) { start(context, uri, title, false, -1); } private static void start(Context context, Uri uri, String title, boolean fromStart, int openedPosition) { Intent intent = new Intent(context, VideoPlayerActivity.class); intent.setAction(PLAY_FROM_VIDEOGRID); intent.putExtra(PLAY_EXTRA_ITEM_LOCATION, uri); intent.putExtra(PLAY_EXTRA_ITEM_TITLE, title); intent.putExtra(PLAY_EXTRA_FROM_START, fromStart); intent.putExtra(PLAY_EXTRA_OPENED_POSITION, openedPosition); /*if (openedPosition != -1) intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);*/ Toast.makeText(context, "uri = "+uri.toString(), Toast.LENGTH_SHORT).show(); context.startActivity(intent); }
If someone have a sample of how to create a simple video player or a idea were I fail, it would be helpful

Re: Sample around the new LibVLC on android

Posted: 09 Jul 2015 22:14
by Jean-Baptiste Kempf
Take example at our VLC/Android player.