Android VideoView воспроизводит 2 видео одновременно - PullRequest
2 голосов
/ 30 мая 2010

Я пытаюсь воспроизвести videoview поверх другого просмотра видео. Первый просмотр видео приостанавливается, а второй воспроизводится. Похоже, что он работает, но на экране не появляется второе видео (хотя я слышу звук и вижу элементы управления, которые обычно отображаются сверху). Я предполагаю, что это какая-то проблема порядка. Какие-нибудь мысли. Кстати, у меня нет проблем с отображением других видов в верхней части основного видео и заставкой видео заполнять фон.

Ответы [ 5 ]

3 голосов
/ 10 февраля 2011

Это не сработает - VideoView является особенным в том смысле, что он «пробивает» дыру в обычных представлениях, чтобы обеспечить прямой доступ к пикселям дисплея (или, с точки зрения Android, «Поверхность» - VideoView подкласс SurfaceView). Вы не можете наложить два SurfaceView поверх друг друга - первый, который захватывает пиксели (Surface), будет «владеть» им. (см. SurfaceHolder.Callback.surfaceCreated () / surfaceDestroyed ())

Другие виды сверху поверх SurfaceView делают работы, потому что фреймворк будет составлять биты отображения обычных видов сверху поверх Surface. Он не может сделать это с другим VideoView (то есть с SurfaceView), потому что нечего создавать.

1 голос
/ 28 мая 2012

Используйте Thread для управления обоими видео

1 голос
/ 01 марта 2011

<VideoView android:id="@+id/videoView1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"/>
<VideoView android:id="@+id/videoView2" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"/>

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

0 голосов
/ 13 марта 2015

Вы можете добавить videoview a на верхнее videoview b, например,

     parentview.removeview(a);
    parentview.removviewe(b);
    parentview.addview(a);
    parentview.addview(b);
parentview.invalidate();

Работа Ти для меня. Я надеюсь, что это может помочь.

0 голосов
/ 09 января 2012

Не знаю, полезно ли это в данный момент, но мне удалось получить нечто похожее на то, что вы хотите ...

Мне нужно было поместить VideoView поверх SurfaceView; до тех пор, пока они не перекрывают 100%, это может работать. (что я имею в виду, мой просмотр поверхности - это весь экран, а просмотр видео - лишь небольшая часть экрана)

Дело в том, что, поскольку вы не можете создавать SurfaceViews, первым будет показан пиксель, который будет отображаться. Интуитивность приведет вас к Z-упорядочению вашего приоритетного представления ПОСЛЕ менее важного в XML - но, как я уже говорил ранее, первый, который захватывает пиксели, остается, поэтому убедитесь, что вы определили сначала меньшее представление, а затем наложите его на больший.

Это приведет к такому поведению, что меньший (в моем случае предварительный просмотр) получит упомянутые пиксели X * Y, а затем «поверхностный» вид поверхности (который должен быть поверх него в соответствии с XML) принимает до остальных и игнорирует меньшую поверхность.

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

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

EDIT: Хотя ... похоже, он работает только один раз. Это действительно работа в процессе. По возвращении из любого занятия я ничего не могу сделать, чтобы не дать большему представлению претендовать на все: /

...