Sample around the new LibVLC on android

This forum is about all development around libVLC.
leykan
New Cone
New Cone
Posts: 7
Joined: 18 May 2015 14:23

Sample around the new LibVLC on android

Postby leykan » 19 Jun 2015 16:04

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

Jean-Baptiste Kempf
Site Administrator
Site Administrator
Posts: 37523
Joined: 22 Jul 2005 15:29
VLC version: 4.0.0-git
Operating System: Linux, Windows, Mac
Location: Cone, France
Contact:

Re: Sample around the new LibVLC on android

Postby Jean-Baptiste Kempf » 09 Jul 2015 22:14

Take example at our VLC/Android player.
Jean-Baptiste Kempf
http://www.jbkempf.com/ - http://www.jbkempf.com/blog/category/Videolan
VLC media player developer, VideoLAN President and Sites administrator
If you want an answer to your question, just be specific and precise. Don't use Private Messages.


Return to “Development around libVLC”

Who is online

Users browsing this forum: No registered users and 19 guests