【问题标题】:Android: Save Mediarecorder-Stream as playable fileAndroid:将 Mediarecorder-Stream 保存为可播放文件
【发布时间】:2013-08-27 10:56:52
【问题描述】:

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

到目前为止,我正在使用 android MediaRecoder 录制并通过 LocalSocket 流式传输以将数据保存到多个文件中。但文件无法播放。

我阅读了一些文章,说明 API-Level 18 可以使用 MediaCodec 和/或 MediaMuxer 转换文件。我找到了这个this 代码,但我不太明白如何处理它。

有没有人展示如何将原始数据从 LocalSocket 转换为可播放文件(即 mp4 文件)的简单示例?

我的 MediaRecoder 如下所示:

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();

提前致谢。

【问题讨论】:

  • 不写入clientSocket,为什么不写入扩展名为.mp4的文件?
  • 为什么说“来自LocalSocket的原始数据”?输出是未复用的 h264 吗?

标签: android video stream mediarecorder android-4.3-jelly-bean


【解决方案1】:

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

如果你不能简单地输出到文件然后复制它,这对你来说可能很有趣:http://hello-qd.blogspot.it/2013/05/how-to-process-mediarecorder-frames.html

【讨论】:

  • 谢谢。但是当 id 做 'extractor.getTrackCount();'我收到'0'!我的文件或 MediaRecorder 设置有问题吗?我刚刚将流保存到文件中!
  • 可以播放文件吗?
  • 你可以试试这个:android-chirag.blogspot.it/2012/06/….
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-01
  • 2014-04-13
  • 2017-03-19
相关资源
最近更新 更多