Покажите два видео вместе, а затем выведите их в виде объединенного видео на одном экране.
Этот вопрос может показаться немного сложным или двусмысленным, но я постараюсь сделать его настолько ясным, насколько я могу. Я сделал много Googling и провел много времени, но не нашел ничего подходящего для окон.
Я хочу воспроизвести два видео на одном экране. Один как полный экран в фоновом режиме и один поверх него в маленьком окне или малая ширина/высота в правом углу. Затем мне нужен вывод, состоящий из обоих видео, воспроизводимых вместе на одном экране.
Таким образом, в основном одно видео накладывается на другое, а затем я хочу, чтобы потоковая передача была как выход, чтобы пользователь мог позже воспроизвести этот поток.
Я не прошу вас написать весь код, просто скажите мне, что делать или как это сделать, или какой инструмент или сторонний SDK я должен использовать, чтобы это произошло.
Обновление:
Пробовал много решений.
1. Xuggler
- не поддерживает Android
.
2. JavaCV
или JJMPEG
- не удалось найти какой-либо учебник, который предложил, как это сделать?
Теперь поиск FFMPEG - долгое время искал, но не смог найти какой-либо учебник, предлагающий способ кодирования. Я нашел способ командной строки, чтобы исправить это.
Так может ли кто-нибудь предложить или указать учебник FFMPEG или сказать любой другой способ
Ответы
Ответ 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