Я пытаюсь разработать приложение для Android, которое будет записывать видео размером 15 секунд 640x640 с помощью MediaRecorder, извлекать все кадры с помощью ffmpeg, применять некоторые художественные фильтры с помощью gpuimage, а затем объединять кадры обратно в видео с помощью ffmpeg.
У меня проблема с записью видео с разрешением 640x640. (Это делает приложение Instagram для Android)
Я попытался использовать setVideoSize (640, 640) MediaRecorder, и выходное видео имеет размер 640x640, но видео выглядит как видео с разрешением 640x480, растянутым по вертикали, чтобы сделать его 640x640. Я предполагаю, что это потому, что 640x640 не является разрешением, возвращаемым поддерживаемым списком разрешений захвата видео устройства. Есть ли способ указать устройству записи мультимедиа поддерживать соотношение сторон при таком масштабировании, чтобы я получал видео, которое было масштабировано с 640x480 до 640x640 путем обрезки по ширине вместо растяжения по высоте?
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); mediaRecorder.setVideoEncoder(VideoEncoder.H264); mediaRecorder.setOutputFile(Environment.getExternalStorageDirectory().getPath()+"/test.3gp"); mediaRecorder.setMaxDuration(15000); mediaRecorder.setMaxFileSize(50000000); mediaRecorder.setVideoSize(640, 640); mediaRecorder.setVideoFrameRate(30); mediaRecorder.setVideoEncodingBitRate(3000000);
- person Nikhil Mathew   schedule 03.12.2013String[] ffmpegCommand = {"ffmpeg", "-i", "test.3gp","-r", "30", "-an", "-s", "640x640", "-qscale:v", "2", "-vsync", "1", "-threads", "4", frame%03d.jpg"};
- person Nikhil Mathew   schedule 03.12.2013Unable to find a suitable output format for 'transpose=1' transpose=1: Invalid argument
- person Kishore Jethava   schedule 09.11.2016