Совместное использование VideoView между двумя медиаплеерами не работает

У меня есть один основной MediaPlayer, который прекрасно воспроизводит поток RTSP, и я использовал AsyncTask для буферизации содержимого другого потока. Это достигается. Когда я пытаюсь переключиться на второй поток, я слышу, что поток переключился, и он не лагает, но я получаю только звук. SurfaceHolder содержит VideoView, он подготовлен, я зарегистрировал его как Display для обоих медиаплееров. Когда я переключаю потоки, я останавливаю старый MediaPlayer, но поверхность не разрушается, что хорошо, но второе видео не отображается. Любые идеи?


person dulys    schedule 25.02.2011    source источник


Ответы (1)


Не могли бы вы предоставить свой код создания экземпляра VideoView и код, который вы используете для переключения медиаплееров?

В любом случае, я сомневаюсь, что это будет хорошо работать, потому что VideoView создает свой собственный MediaPlayer и использует его для воспроизведения мультимедиа. (см. VideoView.java)

Вам, вероятно, потребуется отключить сам VideoView или создать замену для VideoView, используя собственный подкласс SurfaceView.

person Matthew Willis    schedule 25.02.2011
comment
Создание экземпляра VideoView является стандартным в документации Android, я прикрепляю его к SurfaceHolder, а затем вызываю setDisplay(mHolder) на моем MediaPlayer. Я понимаю, что вы говорите о VideoView и его собственном медиаплеере, но как я могу использовать медиаплеер, который уже подготовлен() и готов к запуску()? Должен ли я создать экземпляр 2 VideoView и сделать старый VideoView невидимым, а мой новый, связанный со вторым MediaPlayer, видимым? Спасибо за Ваш ответ! - person dulys; 25.02.2011
comment
Можете ли вы показать мне ссылку на экземпляр VideoView, о котором вы говорите? Если вы используете VideoView, ваш код не должен упоминать MediaPlayer (за исключением некоторых обратных вызовов VideoView, которые предоставляют вам MediaPlayer). Хорошей отправной точкой для разработки собственного пользовательского SurfaceView может быть VideoView.java, изменение (или создание подкласса) для переключения двух разных медиаплееров в одном представлении. - person Matthew Willis; 25.02.2011
comment
См. также: stackoverflow.com/questions/4096273/ - person Matthew Willis; 25.02.2011
comment
Большое спасибо за ответ. Теперь я понимаю, что для того, что мне нужно, я должен сделать собственную реализацию VideoView. Другой ответ также указал на это. - person dulys; 25.02.2011