Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.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 JavaCV FFmpegFrameRecorder.stop()引发异常_Android_Ffmpeg_Record_H.264_Javacv - Fatal编程技术网

Android JavaCV FFmpegFrameRecorder.stop()引发异常

Android JavaCV FFmpegFrameRecorder.stop()引发异常,android,ffmpeg,record,h.264,javacv,Android,Ffmpeg,Record,H.264,Javacv,我正在使用FFmpegFrameRecorder从相机捕获预览帧。我正在使用此设置: mVideoRecorder = new FFmpegFrameRecorder(mVideoPath, 300, 300, 1); mVideoRecorder.setFormat("mp4"); mVideoRecorder.setSampleRate(44100); mVideoRecorder.setFrameRate(30); mVideoRecorder.setVideoCodec(avcodec.

我正在使用FFmpegFrameRecorder从相机捕获预览帧。我正在使用此设置:

mVideoRecorder = new FFmpegFrameRecorder(mVideoPath, 300, 300, 1);
mVideoRecorder.setFormat("mp4");
mVideoRecorder.setSampleRate(44100);
mVideoRecorder.setFrameRate(30);
mVideoRecorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
mVideoRecorder.setAudioCodec(avcodec.AV_CODEC_ID_AAC);
mVideoRecorder.setVideoQuality(0);
mVideoRecorder.setAudioQuality(0);
mVideoRecorder.setVideoBitrate(768000);
mVideoRecorder.setAudioBitrate(128000);
mVideoRecorder.setGopSize(1);
通过调用.record(IplImage)方法捕获完所有帧后,我调用mVideoRecorder.stop()

但有时stop()方法会抛出

org.bytedeco.javacv.FrameRecorder$Exception: av_interleaved_write_frame() error -22 while writing interleaved video frame.
at org.bytedeco.javacv.FFmpegFrameRecorder.record(FFmpegFrameRecorder.java:727)
at org.bytedeco.javacv.FFmpegFrameRecorder.stop(FFmpegFrameRecorder.java:613)
我没有看到这种行为的任何规律性,也没有发现错误-22是什么。在这之后,mVideoPath中对文件的ffmpeg调用就不起作用了(我猜由于这个错误,该文件甚至是无效的)


我非常感谢您对此问题的帮助,谢谢:)

我也遇到了同样的错误,还没有找到原因。如果我找到了解决方案,我将更新。您找到了解决方案吗?如果我没记错,那么这是由于调用
stop()
太快造成的。即使在
record()
已经返回之后,ffmpeg似乎也会在内部执行一些操作。但我真的不记得这是否是问题所在,抱歉。