我创建了一个Android应用程序,它将通过向可用帧添加应用程序图标来处理每个帧,然后使用JavaCV FFMPEGFrameRecorder在视频中记录该修改后的帧位图。我使用imagereader表面并在ImageReader.OnImageAvailableListener中获取新帧,imageformat是JPEG。我的应用程序可以正常工作,除了2个设备,松下P50和Galaxy Note Edge。在这两个设备中,生成的最终文件只是音频而不包含任何视频,因为我看到从未调用OnImageAvailableListener。
以下是初始化FFMPEGFrameRecorder的代码: -
recorder = new FFmpegFrameRecorder(videoFileName, videoSize.getWidth(), videoSize.getHeight(), 1);
recorder.setVideoMetadata("rotate", rotation);
recorder.setFormat("mp4");
recorder.setSampleRate(sampleAudioRateInHz);
recorder.setVideoCodec(28);
recorder.setFrameRate(20);
recorder.setVideoOption("preset", "veryfast");
recorder.setVideoQuality(1);
主要是我预测问题可能是视频分辨率,即根据此link,媒体格式H.264(mp4)支持的最大值为1280X720像素,但在修复视频分辨率之后,它不仅仅在这两个上工作设备