保存过滤的视频时视频质量下降。GPUImagePlus库

时间:2018-09-07 06:53:25

标签: java android video video-processing gpuimage

我是使用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;
 }  

我尝试了两种解决方案,仍然无法以正确的格式保存视频。

任何人,有任何使用此库的经验,请提供帮助。您的帮助将非常有用。 谢谢。

0 个答案:

没有答案