Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:将Mediarecorder流另存为可播放文件_Android_Video_Stream_Mediarecorder_Android 4.3 Jelly Bean - Fatal编程技术网

Android:将Mediarecorder流另存为可播放文件

Android:将Mediarecorder流另存为可播放文件,android,video,stream,mediarecorder,android-4.3-jelly-bean,Android,Video,Stream,Mediarecorder,Android 4.3 Jelly Bean,我想用我的android设备(Nexus10)录制视频,然后上传到youtube 到目前为止,我正在使用android MediaRecorder进行录制,并通过LocalSocket将其流式传输,以将数据保存到多个文件中。但是这些文件不可播放 我读过一些文章,其中提到在API级别为18的情况下,可以使用MediaCodec和/或MediaMuxer转换文件。我发现了这段代码,但我真的不明白如何处理它 有没有人举一个简单的例子来演示如何将原始数据从LocalSocket转换为可播放文件(即mp4

我想用我的android设备(Nexus10)录制视频,然后上传到youtube

到目前为止,我正在使用android MediaRecorder进行录制,并通过LocalSocket将其流式传输,以将数据保存到多个文件中。但是这些文件不可播放

我读过一些文章,其中提到在API级别为18的情况下,可以使用MediaCodec和/或MediaMuxer转换文件。我发现了这段代码,但我真的不明白如何处理它

有没有人举一个简单的例子来演示如何将原始数据从LocalSocket转换为可播放文件(即mp4文件)

我的MediaRecorder如下所示:

recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
CamcorderProfile camcorderProfile_HQ = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
camcorderProfile_HQ.fileFormat = MediaRecorder.OutputFormat.MPEG_4;
camcorderProfile_HQ.videoCodec = MediaRecorder.VideoEncoder.MPEG_4_SP;
recorder.setProfile(camcorderProfile_HQ);
recorder.setPreviewDisplay(surfaceHolder.getSurface());
clientSocket = new LocalSocket();
clientSocket.connect(new LocalSocketAddress(SOCKET_ADDRESS));
recorder.setOutputFile(clientSocket.getFileDescriptor());
recorder.prepare();
recorder.start();

提前谢谢。

我认为你不能那样做。写入mp4多工文件要求文件描述符是可查找的。Unix套接字不可用。这可能是因为到mp4的多路复用通常需要多路复用器来回搜索以写入索引等。。。而这不能在本地套接字上完成


如果您不能简单地输出到文件,然后将其复制,这可能会让您非常感兴趣:.

不写入clientSocket,为什么不写入扩展名为.mp4的文件?为什么说“来自LocalSocket的原始数据”?输出是非多路复用h264吗?谢谢。但是当我做'extractor.getTrackCount();'我收到了“0”!我的文件或MediaRecorder设置是否有问题?我刚刚将流保存到一个文件中!你能播放这个文件吗?你可以试试这个:。