我是使用GPUImagePlus库进行视频编辑的新手。将过滤后的视频保存到设备存储时遇到问题。当我保存视频时,输出视频的质量也会下降,视频也会被压缩。
这是我正在使用的图书馆的链接 https://github.com/wysaid/android-gpuimage-plus/tree/master/
例如,当我在尺寸为18.21 MB的7秒视频上应用过滤器时,输出视频的尺寸为1.73MB,视频像素化程度很高,并且质量下降。以下是我用于保存视频的代码。
file_path= FileUtil.getPath();
lastVideoPathFileName= file_path + "/lastVideoPath.txt";
Long tsLong = System.currentTimeMillis()/1000;
String ts = tsLong.toString();
String outputFilename= file_path+"/" +ts+".mp4";
String outputFilename =file_path + "/dgfcdfgdhf.mp4";
String s=file_path + "/lastVideoPath.txt";
String inputFileName =
FileUtil.getTextContent(lastVideoPathFileName);
FileUtil.saveTextContent(outputFilename, lastVideoPathFileName);
file_config="@adjust saturation " + value_saturation + " @adjust
brightness " + value_brightness + " @adjust contrast " +
value_contrast;
CGEFFmpegNativeLibrary.generateVideoWithFilter(outputFilename,
inputFilePath, file_config, 1.0f, null,
CGENativeLibrary.TextureBlendMode.CGE_BLEND_ADDREV, 1.0f, false);
showMsg("Done! The file is generated at: " + outputFilename);
Log.i("LOG_TAG", "Done! The file is generated at: " +
outputFilename);
我已经尝试了以下解决方案: 1.我更改了库的CGEVideoEncoder.h文件中的比特率。
bool init(const char* filename, int fps, int width, int height, bool hasAudio = true, int bitRate = 1650000, int audioSampleRate = 44100, AVDictionary* options = nullptr, const char* rotation = nullptr);
2。我将库的CGEVideoEncoder.h文件中的预设值从非常快,非常慢,慢等范围更改了。
av_opt_set(c->priv_data, "preset", "veryfast", 0);
if (c->codec_id == AV_CODEC_ID_MPEG2VIDEO)
{
/* just for testing, we also add B frames */
c->max_b_frames = 2;
}
我尝试了两种解决方案,仍然无法以正确的格式保存视频。
任何人,有任何使用此库的经验,请提供帮助。您的帮助将非常有用。 谢谢。