如何通过网络流式传输摄像机流,生成有效的视频文件,使用Android?

 手机用户2702932415_836 发布于 2023-01-17 10:57

我正在尝试将摄像机录制内容写入网络流,请参阅以下代码段:

ParcelFileDescriptor fd = ParcelFileDescriptor.fromSocket(socket);
this.camera.lock(); // this.camera refers to an android.hardware.Camera instance.
this.camera.unlock();
this.mediaRecorder = new MediaRecorder();
this.mediaRecorder.setCamera(this.camera);
this.mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
this.mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
this.mediaRecorder.setProfile(CamcorderProfile.get(0, CamcorderProfile.QUALITY_HIGH));
this.mediaRecorder.setOutputFile(fd.getFileDescriptor());
this.mediaRecorder.prepare();
this.mediaRecorder.start();

然后我试图在连接的另一端捕捉到它:与Socket.getInputStream()我读的字节数,是的,字节进来字节.实际写入在网络上.

但是当尝试使用FileOutputStream类将其保存到文件中,并使用VLC打开文件时,它就无法读取.

我怎样才能最终使文件"可播放",这意味着它是一个有效的视频文件?

编辑:

当我使用时this.mediaRecorder.setOutputFile("/sdcard/out.mp4");,我可以在Android中打开视频文件,它将成功播放.但是,当我使用时this.mediaRecorder.setOutputFile(fd.getFileDescriptor());,它不会.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有