Я ищу самый быстрый способ «декодировать, редактировать, кодировать» видео на устройствах Android.Поэтому я выбираю MediaCodec с Surface для ввода и вывода.
Это моя идея:
1. декодировать файл mp4 с помощью MediaCoder, вывод - SurfaceTexture;
2. использовать OpenGL для редактирования поверхности, вывод - текстуру;
3. использоватьMediaCodec для кодирования, ввод - Surface
. Проблема в том, что декодирование и редактирование выполняются намного быстрее, чем кодирование , поэтому, когда я декодировал и редактировал 50 кадров, кодирование может занимать всего 10 кадров.но поскольку я использую поверхность для ввода с помощью Encode, я не знаю, использовал ли кодировщик все предыдущие кадры.так что 40 кадров потеряны.
Есть ли какой-нибудь способ сообщить мне состояние потребления поверхности, чтобы я мог контролировать скорость декодирования или любую другую идею?