Partage
  • Partager sur Facebook
  • Partager sur Twitter

Webcam IP : Streaming Video Android vers Android

IOIO streaming video android

    1 avril 2015 à 9:48:32

    Salut,

    Je débute en Java et IOIO

    Je souhaite transmettre les images vidéo d'un Android Serveur (Galaxy S 4.4.4) vers un Android Client (Elephone P6000 4.4.4) sur le port 8002 qui est en écoute.

    Mais je n'ai pas d'erreur, mais pas de vidéo non plus.
    le port d'écoute est ouvert 8002, lorsque je fais un échange de messages (dataOutputStream, dataInputStream) ça fonctionne.
    L'Android Client fonctionne avec une vidéo issue de Youtube.
    Les images de la camera de l'Android Serveur apparaissent uniquement sur L'Android Serveur (videoView) si je mets un port fermé exemple 50.

    Si quelqu'un a une idée... là je suis perdu.

    Merci 



    Le MainActivity du serveur

    public class MainActivity extends ActionBarActivity implements SurfaceHolder.Callback {
     
     
        SurfaceHolder surfaceHolder;
        Socket socket = null;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
            this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // Force screen orientation landscape
     
            StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());
     
            ServerSocket s = null;
     
     
    // Bout le code qui affiche la camera sur l'Android serveur
     
            FrameLayout preview = (FrameLayout) findViewById(R.id.preview);
            Camera cameraObject = ShowMyCamera.isCameraAvailiable(Camera.CameraInfo.CAMERA_FACING_BACK);
            ShowMyCamera myCameraRun = new ShowMyCamera(this, cameraObject);
            preview.addView(myCameraRun);
            surfaceHolder = myCameraRun.getHolder();
            surfaceHolder.addCallback(this);
     
    // Bout de code qui diffuse la video
     
            try {
                s = new ServerSocket(8002);
                socket = s.accept();
     
                ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket);
                MediaRecorder recorder = new MediaRecorder();
     
                cameraObject.unlock();
                recorder.setCamera(cameraObject);
                recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
                recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
                recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
                recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
                recorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
                recorder.setVideoFrameRate(20);
                recorder.setPreviewDisplay(surfaceHolder.getSurface());
                recorder.setOutputFile(pfd.getFileDescriptor());
                recorder.prepare();
                recorder.start();
     
            } catch (IOException e) {
                e.printStackTrace();
            }
     
        } // end onCreate


    Le MainActivity du Client

    public class MainActivity extends ActionBarActivity implements SurfaceHolder.Callback, MediaPlayer.OnPreparedListener, MediaPlayer.OnBufferingUpdateListener, MediaPlayer.OnCompletionListener, MediaPlayer.OnVideoSizeChangedListener {
     
        MediaPlayer mediaPlayer;
        SurfaceHolder surfaceHolder;
        VideoView videoView;
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // Force screen orientation landscape
     
            StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());
     
            videoView = (VideoView)findViewById(R.id.videoView);
            surfaceHolder = videoView.getHolder();
            surfaceHolder.addCallback(this);
        }
     
        @Override
        public void surfaceCreated(SurfaceHolder holder) {
     
     
     
            try {
     
                Socket socket = new Socket("192.168.0.20",8002);
    
                ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket);
                mediaPlayer = new MediaPlayer();
                mediaPlayer.setDisplay(surfaceHolder);
                mediaPlayer.setDataSource(pfd.getFileDescriptor());
                mediaPlayer.prepare();
                mediaPlayer.setOnBufferingUpdateListener(this);
                mediaPlayer.setOnPreparedListener(this);
                mediaPlayer.setOnCompletionListener(this);
                mediaPlayer.setOnVideoSizeChangedListener(this);
                mediaPlayer.start();
    // textViewOUT.setText("Action : "+timeStamp);
            } catch (IllegalArgumentException | SecurityException | IllegalStateException | IOException e) {
                e.printStackTrace();
            }
     
        }


    Pour information la class ShowMyCamera 

        public class ShowMyCamera extends SurfaceView implements SurfaceHolder.Callback {
     
        private SurfaceHolder sufaceHolder;
        private Camera cameraUse;
        private String TAG = "ShowMyCamera : ";
     
     
     
     
    public static Camera isCameraAvailiable(int cameraFacing){
     
            Camera cameraAvailable = null;
     
            Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
            for ( int cameraId = 0; cameraId < Camera.getNumberOfCameras(); cameraId++ ) {
                Camera.getCameraInfo(cameraId, cameraInfo);
                if (cameraInfo.facing == cameraFacing) {
                    try {
                        cameraAvailable = Camera.open(cameraId);
                    }
                    catch (Exception e)
                    {
                    }
                }
            }
     
            return cameraAvailable;
        }
     
        public ShowMyCamera(Context context, Camera camera) {
            super(context);
     
     
            cameraUse = camera;
            sufaceHolder = getHolder();
            sufaceHolder.addCallback(this);
        }
     
        @Override
        public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
     
            if (sufaceHolder.getSurface() == null) {
                // preview surface does not exist
                return;
            }
     
            // stop preview before making changes
            try {
                cameraUse.stopPreview();
            } catch (Exception e) {
                // ignore: tried to stop a non-existent preview
            }
     
            // make any resize, rotate or reformatting changes here
            if (this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE) {
     
                cameraUse.setDisplayOrientation(90);
     
            } else {
     
                cameraUse.setDisplayOrientation(0);
     
            }
            // start preview with new settings
            try {
                cameraUse.setPreviewDisplay(sufaceHolder);
                cameraUse.startPreview();
     
            } catch (Exception e) {
                Log.d(TAG, "Error display orientation camera preview: " + e.getMessage());
                cameraUse.release();
                cameraUse = null;
            }
     
        }
     
        @Override
        public void surfaceCreated(SurfaceHolder sufaceHolder) {
     
            if (this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE)
            {
                cameraUse.setDisplayOrientation(90);
            }
            else
            {
                cameraUse.setDisplayOrientation(0);
            }
     
     
            try   {
                cameraUse.setPreviewDisplay(sufaceHolder);
                cameraUse.startPreview();
            } catch (IOException e) {
                Log.d(TAG, "Error creating camera preview: " + e.getMessage());
                cameraUse.release();
                cameraUse = null;
            }
        }









    -
    Edité par ailgorbot 1 avril 2015 à 9:49:43

    • Partager sur Facebook
    • Partager sur Twitter

    Webcam IP : Streaming Video Android vers Android

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown