Потеря качества видео при сохранении отфильтрованного видео.GPUImagePlus Library - PullRequest
0 голосов
/ 07 сентября 2018

Я новичок, использующий библиотеку GPUImagePlus для редактирования видео.При сохранении отфильтрованного видео в хранилище устройства возникают проблемы.Когда я сохраняю видео, выходное видео теряет свое качество, а видео сжимается.

Это ссылка на библиотеку, которую я использую https://github.com/wysaid/android-gpuimage-plus/tree/master/

Например, когда я применяю фильтры к 7-секундному видео размером 18,21 МБ, выходное видео имеет размер 1,73 МБ, авидео сильно пикселируется и теряет качество.Ниже приведен код, который я использовал для сохранения видео.

 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;
 }  

Я пробовал оба решения, но не смог сохранить видео в правильном формате.

Любой, кто имеет опыт работы с этой библиотекой, пожалуйста, помогите.Ваша помощь будет действительно оценена.Спасибо.

...