Подтвердить что ты не робот

Покажите два видео вместе, а затем выведите их в виде объединенного видео на одном экране.

Этот вопрос может показаться немного сложным или двусмысленным, но я постараюсь сделать его настолько ясным, насколько я могу. Я сделал много Googling и провел много времени, но не нашел ничего подходящего для окон.

Я хочу воспроизвести два видео на одном экране. Один как полный экран в фоновом режиме и один поверх него в маленьком окне или малая ширина/высота в правом углу. Затем мне нужен вывод, состоящий из обоих видео, воспроизводимых вместе на одном экране.

Таким образом, в основном одно видео накладывается на другое, а затем я хочу, чтобы потоковая передача была как выход, чтобы пользователь мог позже воспроизвести этот поток.

Я не прошу вас написать весь код, просто скажите мне, что делать или как это сделать, или какой инструмент или сторонний SDK я должен использовать, чтобы это произошло.

Обновление: Пробовал много решений.

1. Xuggler - не поддерживает Android.

2. JavaCV или JJMPEG - не удалось найти какой-либо учебник, который предложил, как это сделать?

Теперь поиск FFMPEG - долгое время искал, но не смог найти какой-либо учебник, предлагающий способ кодирования. Я нашел способ командной строки, чтобы исправить это. Так может ли кто-нибудь предложить или указать учебник FFMPEG или сказать любой другой способ

4b9b3361

Ответ 1

Я бы начал с JavaCV. Это неплохо и гибко. Он должен позволить вам захватить фреймы, собрать их и записать их обратно в файл. Используйте классы FFmpegFrameGrabber и Recorder. Композицию можно выполнить вручную.

Остальная часть ответа зависит от нескольких вещей:

  • Вы хотите прочитать из файла /mem/url?
  • Вы хотите сохранить файл /mem/url?
  • Вам нужна обработка в реальном времени?
  • Вам нужно что-то большее, чем простое изображение в картинке?

Ответ 2

Вы можете использовать OpenGL, чтобы сделать трюк. Обратите внимание, что вам нужно будет сделать шаги, один из которых отобразит первое видео в FBO, а затем второй рендеринг второго видео, используя FBO как TEXTURE0, а второй - EXTERNAL_TEXTURE.

Смешивание, и все, что вам нужно, будет сделано с помощью OpengL.

Здесь вы можете проверить исходные коды: Использование SurfaceTexture в Android и некоторую важную информацию здесь: Android OpenGL комбинация SurfaceTexture (внешнее изображение) и обычная текстура

Единственное, что я не уверен, это то, что происходит, когда два экземпляра медиаплеера работают в Parallel. Думаю, это не проблема.

Ответ 3

ffmpeg - очень активный проект, много изменений и выпусков все время.

Вы должны посмотреть на проект Xuggler, это обеспечивает Java API для того, что вы хотите сделать, и у них плотная интеграция с ffmpeg.

http://www.xuggle.com/xuggler/

Если вы решили перейти по пути Runtime.exec(), этот поток Red5 должен быть полезен:

http://www.nabble.com/java-call-ffmpeg-ts15886850.html