Android MediaRecorder:连续覆盖
我正试着录一段10秒的监控录像。在Android中使用MediaRecorder是非常直接的。我所要做的就是打电话Android MediaRecorder:连续覆盖,android,video-encoding,mediarecorder,android-mediarecorder,mpeg-4,Android,Video Encoding,Mediarecorder,Android Mediarecorder,Mpeg 4,我正试着录一段10秒的监控录像。在Android中使用MediaRecorder是非常直接的。我所要做的就是打电话 mediaRecorder.setMaxDuration(10000); 但是,我想连续覆盖相同的10秒视频。同样,这是一项微不足道的任务 @Override public void onInfo(MediaRecorder mr, int what, int extra) { switch (what) { case MediaRecorder.MEDIA_RE
mediaRecorder.setMaxDuration(10000);
但是,我想连续覆盖相同的10秒视频。同样,这是一项微不足道的任务
@Override
public void onInfo(MediaRecorder mr, int what, int extra) {
switch (what) {
case MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED:
stopRecording();
startRecording();
break;
}
}
停止和启动(重置)MediaRecorder大约需要两秒钟。如果在这两秒钟内发生了重要的事情,我不会让人记录下来
因此,我跟随其他几个有相同问题的人使用LocalSocket,并将其描述符传递给MediaRecorder
mediaRecorder.setOutputFile(sender.getFileDescriptor());
然后是一个包含LocalServerSocket和接收方LocalSocket的AyncTask
public class VirtualServer extends AsyncTask<Void, Void, Void> {
...
server = new LocalServerSocket(SOCKET_ADDRESS);
while (true) {
receiver = server.accept();
...
int len = 0;
byte[] data = new byte[1024];
while ((len = input.read(data)) >= 0) {
...
公共类VirtualServer扩展异步任务{
...
服务器=新的LocalServerSocket(套接字地址);
while(true){
receiver=server.accept();
...
int len=0;
字节[]数据=新字节[1024];
而((len=input.read(data))>=0){
...
看到这是怎么回事了吗?一旦解决了,就会出现一个新的问题,在StackOverflow上也解决了好几次。问题是传递给MediaRecorder的文件描述符无法查找
对我来说,这就是我的理解停止的地方。不幸的是,没有对问题的明确描述。如果有人能向我描述问题,我可以开始寻找解决方案。有些地方提到“模拟”必须重新定位,但随后讨论转向通用mp4编码,我迷失在所有细节中
我希望我的问题清楚地说明。我不希望流式传输任何类型的视频。深入研究打包成RTP的代码并试图提取我真正需要的部分让我更加困惑
我已经看过的链接:
干杯。我理解您在这里试图实现的目标,但您能否更详细地介绍您的实际问题。问题是传递给MediaRecorder的文件描述符无法查找。您是否有堆栈跟踪?