Я использую это: https://github.com/classapp/react-native-video-helper/i в собственном реагировании для обрезки и сжатия видео, похоже, они использовали код телеграммы для сжатия видео, когда версия sdk меньше 18 с этим кодом:
if (Build.VERSION.SDK_INT >= 18) {
outputSurface.drawImage(false);
inputSurface.setPresentationTime(info.presentationTimeUs * 1000);
if (listener != null) {
listener.onProgress((float) info.presentationTimeUs / (float) duration * 100);
}
inputSurface.swapBuffers();
} else {
int inputBufIndex = encoder.dequeueInputBuffer(TIMEOUT_USEC);
if (inputBufIndex >= 0) {
outputSurface.drawImage(true);
ByteBuffer rgbBuf = outputSurface.getFrame();
ByteBuffer yuvBuf = encoderInputBuffers[inputBufIndex];
yuvBuf.clear();
convertVideoFrame(rgbBuf, yuvBuf, colorFormat, resultWidth, resultHeight, padding, swapUV);
encoder.queueInputBuffer(inputBufIndex, 0, bufferSize, info.presentationTimeUs, 0);
} else {
Log.e("tmessages", "input buffer not available");
}
}
я получаю эту ошибку: Собственный метод не найден: com.reactlibrary.video.MediaController.convertVideoFrame:
по мере того, как я исследую проблему, кажется, что следует добавить JNI для кода C, но нет JNI или C файл в этом пакете, и я не знаком с разработкой andriod. Я проверил код телеграммы и обнаружил следующее: https://github.com/DrKLO/Telegram/blob/master/TMessagesProj/jni/video.c, но я не знаю, как мне добавить это в пакет