2015-09-17 4 views
1

В моем приложении я записываю видео, и я хочу наложить URL-адрес моей компании в правом нижнем углу этого видео. Я записываю видео с MediaRecorder, и нет никаких проблем с записью, но для добавления текста в видео я не был успешным. Я искал и нашел некоторую библиотеку, такую ​​как FFmpeg и JavaCV, которые позволяют пользователю накладывать текст на видео, но я не знаю, есть ли способ использовать их в Android. после этого найден OnPreviewFrame, который возвращает каждый кадр камеры. Я хочу получить все кадры после нажатия кнопки записи пользователя и нарисовать текст с помощью холста на каждый кадр, а затем сохранить все эти кадры вместе, пока видеозапись не остановится, а продолжительность видео будет исправна и 15 секунд. Это хорошее решение? если это так, как мне реализовать функцию OnPreviewFrame? Я знаю, как рисовать холст, но я не знаю, как преобразовать данные [] в растровое изображение.как добавить текст к видео в android?

ответ

2

Использование этого метода будет довольно тяжелым. Я бы определенно предложил вам глубже изучить ffmeg. Я считаю, что это не так сложно использовать, и есть простые libs для ffmeg без суеты с NDK. Взгляните на это library и проверьте, есть ли функция, которая вам нужна.

ffmpeg -i movie.mp4 -i logo.png -filter_complex overlay output.mp4 

Эта команда будет тем, что вы ищете.

Если вы хотите использовать что-то другое, чем ffmeg я хотел бы предложить вам взглянуть на MediaMetadataRetriever

public Bitmap getFrameAtTime (long timeUs) 

Этот метод был бы то, что вы могли бы использовать. Это дает вам растровое изображение. Но все равно это будет медленно, как черт. Я попытался создать gifs, используя этот метод, и через некоторое время вернусь к ffmeg.

Надеюсь, это поможет.

+0

Наконец, сегодня я это сделал. Спасибо за вашу помощь, скорость ffmpeg действительно хорошая. –

+0

Рад, что я мог помочь! –

+0

hi @NikolaMilutinovic, я также пытаюсь добавить оверлей на видео, но скорость не так хороша. Для кодирования 10-секундного видео требуется около 20-25 секунд. Дайте мне знать, могу ли я улучшить его производительность? Thanks – Developer

Смежные вопросы