Java 在Android上将视频录制帧速率设置为1

Java 在Android上将视频录制帧速率设置为1,java,android,frame-rate,video-recording,Java,Android,Frame Rate,Video Recording,我正在用安卓摄像头拍摄一段视频。但是,我想将帧速率设置为每秒1帧 如果添加设置视频帧率(1),则视频无法正确录制。如果我没有设置此值,则录制工作正常 这是我的密码 mediaRecorder = new MediaRecorder(); mediaRecorder.setCamera(camera); mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mediaRecorder.setVide

我正在用安卓摄像头拍摄一段视频。但是,我想将帧速率设置为每秒1帧

如果添加
设置视频帧率(1)
,则视频无法正确录制。如果我没有设置此值,则录制工作正常

这是我的密码

mediaRecorder = new MediaRecorder();
mediaRecorder.setCamera(camera);                
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);

mediaRecorder.setOutputFile(GetOutputMediaFileDir(VIDEO_TYPE,intVideoIndex));
mediaRecorder.setVideoSize(640,480);

mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
//  mediaRecorder.setCaptureRate(1);
mediaRecorder.setVideoFrameRate(1);
mediaRecorder.setMaxDuration(10000);
mediaRecorder.setOnInfoListener(this);
mediaRecorder.setPreviewDisplay(surfaceView.getHolder().getSurface());

mediaRecorder.prepare();
mediaRecorder.start();
基本上,我需要减少视频的大小,因为我必须通过可能使用3G网络的手机发送视频。最长的视频为1分钟,因此发送视频需要很长时间


有人能帮我解决这个问题吗。

20-24帧/秒是视频保持任何质量的绝对最小值。不支持每秒1帧,因为它更像是幻灯片。此外,与视频相关的声音将无法正确同步。

20-24帧/秒是视频保持任何质量的绝对最小值。不支持每秒1帧,因为它更像是幻灯片。此外,与视频关联的声音将无法正确同步。

许多设备都支持帧速率5。您可以使用getSupportedPreviewFpsRange()查找支持的帧速率


选中此项:

许多设备都支持帧速率5。您可以使用getSupportedPreviewFpsRange()查找支持的帧速率



检查此项:

这将是一个非常起伏的视频。那些看起来“波涛汹涌”的早期无声电影每秒14-24帧。我认为人脑会把小于10fps的视频视为单幅图像。仅仅因为用户可能只使用3G,就将视频设置为尽可能低的默认质量是一种糟糕的方法。无线上网的人呢?那些想要高清视频而不在乎等待的人呢?如果你真的担心上传时间,你应该询问你的用户他们想要什么质量的视频,并在可能出现难以置信的等待时警告他们(即使在3G上,一分钟的视频也没那么糟糕),而不是因为连接可能很慢而强迫他们做些什么。实际上,要发送的视频是几个图像的组合,这是服务器端真正需要的。所以我想将帧速率设置为1 fps,并减小大小。然而,这是不可行的,对吗?这将是一个非常动荡的视频。那些看起来“波涛汹涌”的早期无声电影每秒14-24帧。我认为人脑会把小于10fps的视频视为单幅图像。仅仅因为用户可能只使用3G,就将视频设置为尽可能低的默认质量是一种糟糕的方法。无线上网的人呢?那些想要高清视频而不在乎等待的人呢?如果你真的担心上传时间,你应该询问你的用户他们想要什么质量的视频,并在可能出现难以置信的等待时警告他们(即使在3G上,一分钟的视频也没那么糟糕),而不是因为连接可能很慢而强迫他们做些什么。实际上,要发送的视频是几个图像的组合,这是服务器端真正需要的。所以我想将帧速率设置为1 fps,并减小大小。但是这是不可行的,对吗?非常感谢你的回复。实际上,我是在连续拍摄几张图像,而不是拍摄一个视频。所以我想将帧速率设置为1fps。音频与视频分开,因此不能正确同步。所以不可能将帧速率设置为1 fps,对吗?我想知道我们仍然可以使用android提供的setVideoFrameRate()方法,但可能有一个用户可以为设备设置的最小值……我建议您使用
相机
对象和
拍摄
方法循环:如果您得到所需内容,请点击绿色复选框!如果我在循环中拍照,那么我可以将这些图像合并到一个mp4视频文件中吗?我四处寻找,因为我认为这是个好主意,但没有发现什么。我会打绿色支票别担心:)你可以在这里找到你需要的:谢谢!看来我现在需要处理NDK来解决这个问题。希望我能得到Libav工作。非常感谢你的回复。实际上,我是在连续拍摄几张图像,而不是拍摄一个视频。所以我想将帧速率设置为1fps。音频与视频分开,因此不能正确同步。所以不可能将帧速率设置为1 fps,对吗?我想知道我们仍然可以使用android提供的setVideoFrameRate()方法,但可能有一个用户可以为设备设置的最小值……我建议您使用
相机
对象和
拍摄
方法循环:如果您得到所需内容,请点击绿色复选框!如果我在循环中拍照,那么我可以将这些图像合并到一个mp4视频文件中吗?我四处寻找,因为我认为这是个好主意,但没有发现什么。我会打绿色支票别担心:)你可以在这里找到你需要的:谢谢!看来我现在需要处理NDK来解决这个问题。希望我能让Libav正常工作。如果帧速率没有设置,我们如何才能找到默认帧速率?拍摄一段视频并查看信息。有时这也取决于播放器。默认值大约为20。实际上,我正在通过摄像头从一个设备流到另一个设备。我们如何才能找到默认帧速率,如果帧速率未设置?请拍摄视频并查看信息。有时这也取决于播放器。默认值约为20。实际上,我正在通过摄像头从一台设备流到另一台设备。