我目前正在开发两台安卓手机之间的视频流传输。我编写了一个应用程序,可以将视频录制到SD卡文件中(使用MediaRecorder); 我还编写了另一个应用程序,可以显示该文件的视频。 两个应用程序都能完美地工作。
我在以下网站上找到了有关“在Android上广播视频-不写入本地文件”的网站。这正是我想要做的。
我修改了我的代码。
对于视频录制器,它是:
socket=severSocket.accept();
ParcelFileDescriptor=pfd;
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(15);
recorder.setVideoSize(320, 240);
recorder.setPreviewDisplay(holder.getSurface());
pfd = ParcelFileDescriptor.fromSocket(socket);
recorder.setOutputFile(pfd.getFileDescriptor());
recorder.prepare();
recorder.start();
视频播放器:
For Video Player:
Socket socket = new Socket(IP,PORT);
mMediaPlayer = new MediaPlayer();
pfd = ParcelFileDescriptor.fromSocket(socket);
mMediaPlayer.setDataSource(pfd.getFileDescriptor()); // <-- here is the problem
mMediaPlayer.setDisplay(holder);
mMediaPlayer.prepare();
mMediaPlayer.setOnBufferingUpdateListener(this);
mMediaPlayer.setOnCompletionListener(this);
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setOnVideoSizeChangedListener(this);
mMediaPlayer.start();
程序在 MediaPlayer 的 mMediaPlayer.setDataSource(pfd.getFileDescriptor());
处崩溃了。
我知道我没有正确设置 DataSource。对于 ParcelFileDescriptor,必须进行其他设置以放入 MediaPlayer。
有人知道如何为 MediaPlayer 使用 ParcelFileDescriptor 吗? 任何有用的建议或提示都会很好......
谢谢
Will