Определить, если Android SurfaceView рисует / движется

Я использую libvlc на Android и приложение для воспроизведения сетевого потока; нативный код рисует изображение на поверхности.

Давайте предположим, что видео останавливается, и у меня нет доступа к собственному коду, как я могу определить, что SurfaceView все еще движется (видео не заморожено)?

Я попытался getViewTreeObserver(). AddOnDrawListener(); и getViewTreeObserver().addOnPreDrawListener(); но они не имеют эффекта, который я ищу.

Спасибо

2 ответа

Решение

Вы не можете получить эту информацию из SurfaceView, потому что сама SurfaceView не знает.

Задача SurfaceView - настроить Surface и создать отверстие в макете View, через которое вы можете видеть. После того, как он сделал эти вещи, он больше не участвует в процессе показа видео. Контент поступает из декодера в Surface, который управляется SurfaceFlinger (системным графическим композитором).

Это, например, как работает DRM-видео. Приложение, "воспроизводящее" видео, не имеет доступа к DRM-защищенным видеокадрам. (На самом деле это не так, как SurfaceFlinger, но это более длинная история.)

Лучший способ узнать, поступает ли контент, - спросить у источника видео, отправляет ли он вам контент. Другой подход заключается в том, чтобы изменить свой SurfaceView на TextureView и предоставить onSurfaceTextureUpdated() метод обратного вызова.

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

  1. On Surface Created - вызывается сразу после первого создания поверхности.

  2. On Surface Changed - вызывается сразу после того, как на поверхность были внесены какие-либо структурные изменения (формат или размер).

  3. На поверхности уничтожено - вызывается непосредственно перед разрушением поверхности.

Посмотрите на документацию для просмотра поверхности. Для SurfaceHolder взгляните по этой ссылке. В основном для того, чтобы узнать

Другие вопросы по тегам