Захват SurfaceView в видеофайл на основе примеров Google/ Графика
Я хотел бы загрузить видео из файла, сделать некоторые преобразования и вернуть его обратно в файл. Упомянутое преобразование состоит в основном из двух видеороликов, накладывающихся друг на друга и сдвигающих одно из них во времени. У Графика есть несколько примеров, имеющих отношение к этому вопросу. RecordFBOActivity.java содержит некоторый код для рендеринга видеофайла с поверхности. У меня проблемы с изменением двух вещей:
- вместо рендеринга примитивов в движении мне нужно рендерить ранее декодированное и преобразованное видео
- Я бы хотел сделать рендеринг поверхности в файл как можно быстрее, а не воспроизводить
До сих пор моим единственным успехом была загрузка файла.mp4 и добавление некоторых базовых функций поиска в PlayMovieActivity.java.
В своем исследовании я наткнулся на эти примеры, которые также используют сгенерированное видео. Я не нашел их достаточно полезными, потому что я не мог поменять это сгенерированное видео на декодированное из файла.
Можно ли изменить код RecordFBOActivity.java, чтобы он мог отображать видео из файла вместо сгенерированной анимации?
1 ответ
Вы можете попробовать INDE Media для мобильных устройств, учебные руководства находятся здесь: https://software.intel.com/en-us/articles/intel-inde-media-pack-for-android-tutorials
Пример кода, показывающего, как включить редактирование или сделать преобразование, находится на github: https://github.com/INDExOS/media-for-mobile
Он имеет функцию перекодирования \ ремикса в классе MediaComposer и возможность редактировать или преобразовывать кадры. Поскольку он использует API-интерфейс MediaCodec, внутреннее кодирование выполняется на графическом процессоре, поэтому оно очень экономно расходует заряд аккумулятора и работает максимально быстро.