Stream screen from android
Screen Stream Mirroring
версия: 2.7.0c
Последнее обновление программы в шапке: 02.04.2020
Для функционирования программы необходимы права root пользователя.
Краткое описание:
Стрим на медиаплееры, вэб-браузеры, Chromecasts, Twich, YouTube, Ustream.
Screen Stream Mirroring мощное приложение для Стрима или вещания с вашего Android в режиме реального времени!
Вы можете стримить с Android «наживо» на любом устройстве через медиа-плеер, веб-браузер, Chromecast и UPnP / DLNA устройствами (Smart TV или другие совместимые устройства).
Есть возможность работы без ROOT https://www.google.com…mps4-DAjh2WBdZvmIXe3bw
Вы можете сделать мощные презентации для работы, образования, или игр.
Вы можете транслировать экран Android на интернет потоковые серверами (Twitch, Ustream, YouTube, . ).
Вы также можете записать его в MP4 видео файлы.
Требуется Android: 4.0+
Русский интерфейс: Да
Версия: 2.5.7c Patched (Alex0047)
Версия: 2.5.4e Patched Сообщение №312, автор Alex0047
Новая версия Screen Stream Mirroring Free_v2.5.4 Screen Stream Mirroring Free_v2.5.4_apkpure.com.apk ( 29.29 МБ )
Версия: 2.5.4b Patched Сообщение №310, автор Alex0047
Версия: 2.5.3b Patched Сообщение №291, автор Alex0047
Версия: 2.5.1d Patched ®Screen Stream Mirroring (Пост Alex0047 #66660601)
Версия: 2.5.1с Patched ®Screen Stream Mirroring (Пост Alex0047 #64968100)
версия: 2.5.0с Patched ®Screen Stream Mirroring (Пост Alex0047 #63890427)
версия: 2.5.0b Patched ®Screen Stream Mirroring (Пост Alex0047 #63732386)
версия: 2.5.0 Patched ®Screen Stream Mirroring (Пост Alex0047 #63635364)
версия: 2.4.0d Patched ®Screen Stream Mirroring (Пост Alex0047 #62766086)
версия: 2.4.0b Patched ®Screen Stream Mirroring (Пост Alex0047 #62230359)
версия: 2.3.4с Patched ®Screen Stream Mirroring (Пост Alex0047 #61320632)
версия: 2.3.4 Patched ®Screen Stream Mirroring (Пост Giacomino #61073304)
версия: 2.3.3 ®Screen Stream Mirroring (Пост Giacomino #58710169)
версия: 2.3.3h Patched ®Screen Stream Mirroring (Пост Alex0047 #60224663)
версия: 2.3.3g Patched ®Screen Stream Mirroring (Пост Alex0047 #59640934)
версия: 2.3.3f Patched (arm) ®Screen Stream Mirroring (Пост Giacomino #59581726)
версия: 2.3.3d Patched ®Screen Stream Mirroring (Пост Alex0047 #59480646)
версия: 2.3.2 Patched ®Screen Stream Mirroring (Пост Alex0047 #58426678)
версия: 2.2.7с ®Screen Stream Mirroring (Пост Meoweom #51255551)
версия: 2.3.1c Patched ®Screen Stream Mirroring (Пост Giacomino #57690369)
версия: 2.3.1b Patched ®Screen Stream Mirroring (Пост Alex0047 #56875560)
версия: 2.3.0 Patched ®Screen Stream Mirroring (Пост Giacomino #55462868)
версия: 2.2.8 Patched ®Screen Stream Mirroring (Пост Alex0047 #52739860)
версия: 2.2.7e Patched ®Screen Stream Mirroring (Пост Alex0047 #52330725)
версия: 2.2.7d Patched ®Screen Stream Mirroring (Пост Alex0047 #51676872)
версия: 2.2.7с Patched ®Screen Stream Mirroring (Пост Alex0047 #51264084)
версия: 2.2.7b + Patched ®Screen Stream Mirroring (Пост Alex0047 #51082801)
версия: 2.2.7 Patched ®Screen Stream Mirroring (Пост Alex0047 #51077519)
версия: 2.2.7 (под Lucky Patcher или ломаный Маркет ®Screen Stream Mirroring (Пост Meoweom #51076788)
версия: 2.2.6е (под Lucky Patcher или ломаный Маркет ®Screen Stream Mirroring (Пост Giacomino #49977718)
версия: 2.2.6е Patched ®Screen Stream Mirroring (Пост Alex0047 #50030550)
версия: 2.2.5b Patched ®Screen Stream Mirroring (Пост Alex0047 #49105628)
версия: 2.2.4 Patched ®Screen Stream Mirroring (Пост Alex0047 #48234583)
версия: 2.2.4 ®Screen Stream Mirroring (Пост maxi4o #48121165)
версия: 2.2.3b + Patched ®Screen Stream Mirroring (Пост Alex0047 #48051052)
версия: 2.2.2f ®Screen Stream Mirroring (Пост maxi4o #46978762)
версия: 2.2.2е Patched ®Screen Stream Mirroring (Пост Dan1000voin #46240370)
версия: 2.2.2е ®Screen Stream Mirroring (Пост maxi4o #46216548)
версия: 2.2.2d ®Screen Stream Mirroring (Пост maxi4o #46031050)
версия: 2.2.2 ®Screen Stream Mirroring (Пост maxi4o #45473657)
версия: 2.1.8d ®Screen Stream Mirroring (Пост pyshnyi #44026957)
версия: 2.1.8с ®Screen Stream Mirroring (Пост vovanKARPO #43791283)
Скачать APK
версия: 2.1.3 ®Screen Stream Mirroring (Пост Alex0047 #40589108)
версия: 2.0.5 Screen Stream Mirroring_2.0.5.apk ( 13.61 МБ )
Screen.Stream.Mirroring.v.2.0.5 rus Dr.Gh0sT.apk ( 13.61 МБ )
Сообщение отредактировал iMiKED — 03.09.20, 14:21
Источник
Stream screen from android
Since Appium 1.16 there is a possibility to stream the screen of the device under test to one or more remote clients. The currently displayed content is broadcasted as configurable MJPEG stream over http protocol. This allows to observe automated test execution while it is running and catch possible issues earlier. Single MJPEG server supports multiple simultaneous clients that can receive screen updates at the same time. The framerate there depends on the server and device performance, but is close to the real time one and can reach up to 60 frames per second, especially with properly adjusted bitrate and/or scaled screen dimensions.
mobile: startScreenStreaming
Starts streaming of the device’s screen. The streaming can only be started if all the requirements are met: — GStreamer binaries are installed on the server machine. For example, it can be installed using the following command on Mac OS: brew install gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav — The device under test has screenrecord utility available and the utility supports —output-format=h264 option. Emulators only have this utility since API 27. — The adb_screen_streaming server feature is enabled.
The command initializes low-level streaming with adb, pipes it to GStreamer pipeline, which converts h264-encoded frames into JPEG images and sends them to a TCP socket. At the end of this sequence there is Node.js http server, which wraps the TCP stream into HTTP protocol, so the video can be viewed with a normal browser. In case the streaming is already running the command just returns silently. Simultaneous streaming on multiple ports/with different configs is not supported. It is necessary to stop the current stream before starting a new one.
Supported arguments
- width: The desired width of the resulting images. This is set to the actual width of the device’s screen if unset. The output stream is going to be scaled if the width value is less than the original one. It is recommended to keep the original scale while setting a custom width/height.
- height: The desired height of the resulting images. This is set to the actual height of the device’s screen if unset. The output stream is going to be scaled if the height value is less than the original one. It is recommended to keep the original scale while setting a custom width/height.
- bitRate: The bit rate of the original h264-encoded video stream. By default it equals to 4000000 bit/s. It is recommended to set it to lower values if you observe serious frame drop in the resulting MJPEG video.
- host: The IP address/host name to start the HTTP MJPEG server on. You can set it to 0.0.0.0 to trigger the broadcast on all available network interfaces. 127.0.0.1 by default.
- port: The port number to start the HTTP MJPEG server on. 8093 by default.
- pathname: The HTTP request path the MJPEG server should be available on. If unset then any pathname on the given host / port combination will work. Note that the value should always start with a single slash: /
- tcpPort: The port number to start the internal TCP MJPEG broadcast on. This type of broadcast always starts on the loopback interface ( 127.0.0.1 ). 8094 by default.
- quality: The quality value for the streamed JPEG images. This number should be in range [1, 100], where 100 is the best quality. 70 by default.
- considerRotation: If set to true then GStreamer pipeline will increase the dimensions of the resulting images to properly fit images in both landscape and portrait orientations. Set it to true if the device rotation is not going to be the same during the broadcasting session. false by default.
- logPipelineDetails: Whether to log GStreamer pipeline events into the standard log output. Might be useful for debugging purposes. false by default.
Usage examples
mobile: stopScreenStreaming
Stops the running screen streaming session. If no session has been started before then no action is done. Note that screen streaming session is always stopped automatically as soon as the container driver session is terminated.
Источник
Стрим видео с Android устройства по UDP в JAVA приложение
Итак, выходим на финишную прямую. Стримить видео с андроида на VLC плеер мы уже научились, теперь осталось только интегрировать окошко с видео в JAVA приложение и начать рулить роботелегой.
В этом нам очень сильно поможет проект с открытым исходным кодом VLCJ CAPRICA.
The vlcj project provides a Java framework to allow an instance of a native VLC media player to be embedded in a Java application.
Идея у ребят простая, но гениальная (реально перцовая). Вместо мучений с библиотеками FFmpeg и прочим, надо сразу вызывать специалиста ядро нормального, функционального и профессионального медиаплеера VLC. И вызвать его прямо из JAVA приложения.
Кому интересно, просим под кат.
Поскольку, в этом вояже хватает подводных камней, то начнём, как водится, с очень простого и лишь затем перейдём к тривиальному.
Инсталляция пакета VLCJ
Первым делом проверьте установленную у вас версию медиапроигрывателя VLC. Свежая версия нам не нужна, там выпилено то, что требуется для udp стрима. Об этом уже говорилось в предыдущем посту. Поэтому качаем версию 2.2.6 Umbrella и заодно тщательно проверяем свой JAVA пакет. Они должны совпадать по разрядности. Если плеер использует 64-разрядную архитектуру, то и JDK обязан быть таким же. А то не взлетит.
После этого уже можно скачать сам пакет библиотек VLCJ
Обратите внимание, что нам нужен пакет vlcj-3.12.1 distribution (zip). Именно он работает с плеерами версий VLC 2.2.x. Разархивировать его можно куда угодно, главное, что не в папку самого VLC, ибо там по именам совпадают два файла. И если вы их перезапишите, кончится всё это полным провалом.
Далее, создаем проект в IDE IntelliJ IDEA (если у вас другое IDE, то ничем помочь не могу) и прописываем необходимые зависимости для интеграции библиотек VLCJ.
Делаем именно так для файлов:
Затем создаем единственный класс и пишем в нём следующую малюсенькую программку.
Да, пока мы пытаемся проигрывать просто файл (как видно из кода). С udp лучше не начинать — не заработает. А файл проигрывается вполне, если вы, конечно, не забыли его с соответствующим именем разместить заранее там, где надо. Думаю, что даже для самого начинающего джависта не составит труда разобраться в вышеприведенном коде.
и создание самого инстанса медиаплеера
А потом мы просто его добавляем в нужную графическую панель:
И всё, файл будет проигрываться именно в этом окошке.
А теперь попробуйте заменить
как мы спокойно делали в прошлом посте для стриминга видео через udp соединение.
Здесь такой номер не пройдёт. Окошко, конечно откроется, но покажет фигу, в смысле темный экран. Хотя никаких логов с ошибкой не будет. Просто не будет ничего.
Надо разобраться
Может быть не хватает кодека H264, который мы выбрали в настройках? Стоп, а как тогда только что проигрывался файл ttt.mp4? Он же не может проигрываться при такой настройке, он же — mp4.
Немедленно приходит понимание того, что библиотека VLCJ запускает только само ядро плеера. А какие там были предварительные настройки она не знает и знать не хочет. То есть, нам надо каким-то образом при запуске JAVA приложения, как-то передать VLC плееру, что мы хотим явно использовать кодек H264 или, допустим, хотим повернуть изображение или что-то ещё.
Оказывается, сделать это можно, используя класс MediaPlayerFactory. Только мы его запускали без аргументов, а можно даже с ними. На stackoverflow.com я тут же нашел простой пример, связанный с поворачиванием изображения:
То есть, чего-то там передаем строчным массивом в медиафабрику и оно там сохраняется для используемого медиаресурса.
Я попробовал этот способ для проигрывания файла и как водится, ничего не заработало. Оказывается, забыли две черточки добавить и разнесли по всему интернету. Пришлось догадываться, используя похожий метод transform.
Короче говоря, должно быть:
Теперь наш эталонный файл перекривило как надо!
Дальше будет уже совсем просто:
Для определения кодека, согласно командной строке VLC мы добавляем в строковый массив строку:
Снова пробуем udp канал
И в этот раз всё работает, обозначая победу человеческого разума. Теперь это окошко с видео или несколько таких окошек вы сможете беспрепятственно портировать в графический интерфейс вашего JAVA приложения.
Казалось бы победа?
Не совсем. Легкое недоумение у меня вызвали временные задержки или по научному, лаги. Сначала они более менее приёмлимые, но если у вас хватит терпения просмотреть видео до конца, то вы увидите, что лаг к концу первой минуты трансляции достигает аж пяти секунд. У меня терпения хватило на 10 минут съемки, но, как ни странно, задержка больше не увеличивалась, а так и осталась в тех же пределах.
Конечно, для просмотра видео с камеры такое сгодится, но для управления роботележкой едва ли. Даже луноход реагировал быстрее в два раза!
Подозрения сразу пали на процессы кэширования и они (подозрения )оказались верными.
Самым наглым оказался:
Он как раз и отжирает по умолчанию практически всё, если ему вовремя не дать по рукам.
Может устроить лаг и:
Поэтому во избежание многосекундных задержек рекомендуется добавить во всё тот же строковый массив через запятую следующие строчки:
Параметры там задаются в миллисекундах и поэтому каждый желающий может подобрать их под себя.
Ещё можно использовать ключ:
Тогда медиаплеер будет стараться оптимизировать джитер — подергивание экрана. Но там, чем больше установлено время, тем лучше оптимизируется и это понятно почему. Так что здесь остается лишь искать консенсус и видеть иногда в логах такое безобразие:
Вот хотел он, понимаешь, джиттер исправить, а ты временной промежуток слишком маленький поставил. Теперь сам виноват.
Теперь вроде бы все как надо. Задержку удалось сократить меньше, чем до одной секунды (правда, чуть-чуть меньше).
В итоге, получился совсем крохотный рабочий код
Теперь можно интегрировать видео трансляцию в мою программулину по управлению роботележкой, где раньше я передавал видео по кускам. И надо сказать код весьма упростился, а качество на порядок улучшилось. Плюс ко всему к видео потоку мы можем передать показания
акселерометров
гироскопов
уровня освещения
давления воздуха
показаний компаса
температуры
и даже влажности
При условии, конечно, что все эти сенсоры у вашего смартфона имеются.
И даже включить фару! Автоматически! Если уровень освещения упадёт.
Вряд ли кому особо интересно, но на случай ссылки на гитхаб:
Источник