Wil*_*l W 14 sockets android media-player android-videoview
我目前正在研究两款Android手机之间的视频流.我写了一个能够将视频录制到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();
Run Code Online (Sandbox Code Playgroud)
对于视频播放器:
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();
Run Code Online (Sandbox Code Playgroud)
程序粉碎mMediaPlayer.setDataSource(pfd.getFileDescriptor());MediaPlayer我知道我没有正确设置DataSource.ParcelFileDescriptor必须有其他设置才能放入MediaPlayer.
有谁知道如何使用ParcelFileDescriptor进行MediaPlayer?任何有用的建议或提示都会很好......
谢谢
将
Android 本身不支持 Android 2.1 或更低版本的视频流。我们所做的就是逐帧获取图像;并将每个火焰分解为 BYTE[] 并使用类发送Socket。在接收方,我们使用BYTE[]接收到的数据重建图像。