Portál AbcLinuxu, 6. května 2025 16:29

Dotaz: Android screen mirroring přes USB se zvukem do /dev/videoX

18.10.2020 15:48 Koumák Petr
Android screen mirroring přes USB se zvukem do /dev/videoX
Přečteno: 395×
Odpovědět | Admin
Zdar hoši. Jdu sem, protože mi určitě pomůžete vyřešit můj problém:) Potřebuju vytvořit nové video zařízení (mám Ubuntu 18.04), na kterém poběží mirroring z androidu připojeného pomocí USB. Teď mám appku Screen Stream Mirroring, která funguje dobře, ale jen přes wifi, což nechci. Taky jsem zprovoznil DroidCam a webka funguje dobře vzduchem i přes USB, ale je to jen přenos kamery. Teď jsem ve fázi, kdy jsem našel návod, jak dostat dostat obraz z ANdroidu do PC: https://www.youtube.com/watch?v=A2lAMan_sf0.
ffmpeg adb shell screenrecord --output-format = h264 - | ffplay -
Je tam docela dlouhé zpoždění, myslel jsem, že přes kabel to bude sviznější, tak doufám, že to je jen o parametrech ffmpegu. Potřebuju ale přenést i zvuk a aby to bylo na /dev/videoX. Dá se to vůbec? Ideálně bez dalších aplikací pro android :) Moooooooooc díky :))

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Jendа avatar 18.10.2020 16:19 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Android screen mirroring přes USB se zvukem do /dev/videoX
Odpovědět | | Sbalit | Link | Blokovat | Admin
Video:
apt-get install v4l2loopback-utils
modprobe v4l2loopback exclusive_caps=0

ffmpeg ... -f v4l2 -vcodec rawvideo -pix_fmt yuv420p /dev/video1
Audio: pavucontrol a v něm naklikat aby výstup jednoho byl vstup druhého. Případně můžeš zavést modul snd-aloop, ale to je asi zbytečný opruz navíc.

Latence: obávám se, že to bude o nastavení H.264 enkodéru. Například x264 to umí, otevři si manpage a hledej zerolatency. Jak to udělat na Androidu netuším.
18.10.2020 16:25 Koumák Petr
Rozbalit Rozbalit vše Re: Android screen mirroring přes USB se zvukem do /dev/videoX
Moc díky. Z tím loopbackem už ale pár dní bojuju a ne a ne to rozchodit:
modprobe: ERROR: could not insert 'v4l2loopback': Bad address
Přitom ten droidcam si vytvořil v4l2loopback_dc takřka bez problému.
18.10.2020 16:48 Koumák Petr
Rozbalit Rozbalit vše Re: Android screen mirroring přes USB se zvukem do /dev/videoX
I s kompilací mám problém a nemůžu s tím hnout:
# make install
make -C /lib/modules/`uname -r`/build M=/opt/v4l2loopback modules_install
make[1]: Vstupuje se do adresáře „/usr/src/linux-headers-5.4.0-050400rc6-generic“
  INSTALL /opt/v4l2loopback/v4l2loopback.ko
At main.c:160:
- SSL error:02001002:system library:fopen:No such file or directory: ../crypto/bio/bss_file.c:69
- SSL error:2006D080:BIO routines:BIO_new_file:no such file: ../crypto/bio/bss_file.c:76
sign-file: certs/signing_key.pem: No such file or directory
  DEPMOD  5.4.0-050400rc6-generic
Warning: modules_install: missing 'System.map' file. Skipping depmod.
make[1]: Opouští se adresář „/usr/src/linux-headers-5.4.0-050400rc6-generic“

SUCCESS (if you got 'SSL errors' above, you can safely ignore them)
Jendа avatar 18.10.2020 17:01 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Android screen mirroring přes USB se zvukem do /dev/videoX
dmesg

jinak to vypadá že to je zkompilované pro jiný kernel než co máš. Jak to instaluješ? DKMS?
18.10.2020 17:16 Koumák Petr
Rozbalit Rozbalit vše Re: Android screen mirroring přes USB se zvukem do /dev/videoX
Původně jsem nainstaloval balík v4l2loopback-dkms. Když to nešlo, tak podle rad jsem ho odinstaloval a snažil se zkompilovat:
git clone https://github.com/umlaeute/v4l2loopback.git
cd v4l2loopback
make
sudo su
make install
viz: https://askubuntu.com/questions/1263554/sudo-modprobe-v4l2loopback-modprobe-error-could-not-insert-v4l2loopback-bad
18.10.2020 17:26 Koumák Petr
Rozbalit Rozbalit vše Re: Android screen mirroring přes USB se zvukem do /dev/videoX
Tak ta kompilace přesto proběhla a modul jsem zavedl. Je umístěn v
/lib/modules/5.4.0-050400rc6-generic/extra
Problém byl v tom, že ten z balíčku tam zůstal.. po nové instalaci a následném purge zmizl :) Teď jdu tedy zkusit vytvořit to /dev/videoX .... :))
18.10.2020 17:57 Koumák Petr
Rozbalit Rozbalit vše Re: Android screen mirroring přes USB se zvukem do /dev/videoX
Tak zatím jen testuju... díky modprobe v4l2loopback exclusive_caps=0 se mi vytvořilo videozařízení /dev/video3, viz:
$ v4l2-ctl --list-devices
Dummy video device (0x0000) (platform:v4l2loopback-000):
	/dev/video3
Do které jsem zkusil poslat zatím jen mp4 video: ffmpeg -re -i test.mp4 -f v4l2 /dev/video3

Otevřej jsem cheese a tam mám jen droidcam a integrovanou kameru z ntb. Pak mě ale napadlo otevřít Skype (který musím strpět kvůli škole:( a tam jsem měl na výber všechny tři kamery. Jak je to možné? Myslel jsem, že jsou nastavené "rovnocenně"...
18.10.2020 16:19 jiwopene | skóre: 31 | blog: Od každého trochu…
Rozbalit Rozbalit vše Re: Android screen mirroring přes USB se zvukem do /dev/videoX
Odpovědět | | Sbalit | Link | Blokovat | Admin
ffmpeg adb shell screenrecord --output-format = h264 - | ffplay -
Na tom příkazu je něco špatně…
.sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky.
18.10.2020 16:23 Koumák Petr
Rozbalit Rozbalit vše Re: Android screen mirroring přes USB se zvukem do /dev/videoX
Jj, je.. z odkazu jsem okopíroval víc, než jsem měl:) Omlouvám se. Správně je to:
adb shell screenrecord --output-format = h264 - | ffplay -
Prosím o případnou editaci, aby to někoho nezmátlo.

Jinak jsem našel teď tenhle odkaz:
https://knowitlabs.no/mirroring-your-android-display-to-mac-or-linux-20b2a7043f85
kde je hezky popsané, co to dělá. Přídáním dalších parametrů už je zpoždení minimální:
adb shell screenrecord --output-format=h264 - | ffplay -framerate 80 -probesize 32 -sync video -
18.10.2020 19:31 Koumák Petr
Rozbalit Rozbalit vše Re: Android screen mirroring přes USB se zvukem do /dev/videoX
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ať dělám co dělám, tak se mi nedaří video, které hraje ve ffplay perfektně
adb shell "while true; do screenrecord --output-format=h264 -; done" | ffplay -framerate 60 -probesize 32 -sync video -
dostat ve stejném stavu do /dev/video3, které mám už vytvořené .. je to porod (pro mě) :(
18.10.2020 19:51 Koumák Petr
Rozbalit Rozbalit vše Re: Android screen mirroring přes USB se zvukem do /dev/videoX
Zkoušel jsem to bez úspěchu takhle:
adb shell screenrecord --output-format=h264 - | ffmpeg -f v4l2 -vcodec rawvideo -pix_fmt yuv420p /dev/video3 -
Jendа avatar 18.10.2020 19:54 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Android screen mirroring přes USB se zvukem do /dev/videoX
Co má být ta - na konci? Vstup ze stdin bude -i - na začátku, ne?
18.10.2020 20:14 Koumák Petr
Rozbalit Rozbalit vše Re: Android screen mirroring přes USB se zvukem do /dev/videoX
no jooooooo :)
adb shell screenrecord --output-format=h264 - | ffmpeg -i - -f v4l2 -vcodec rawvideo -pix_fmt yuv420p /dev/video3
moc díky pane :)

Teď ještě zkouknu, jestli je to stejně plynulé jako ve ffplay, ale zatím se mi to zdá ok :)
18.10.2020 21:33 Koumák Petr
Rozbalit Rozbalit vše Re: Android screen mirroring přes USB se zvukem do /dev/videoX
Tak v cheese to jede, v OBS taky, ale Skypu to nějak nechutná... jen černá obrazovka.. no nic, budu ještě laborovat :)
Řešení 1× (citanus)
18.10.2020 22:04 Koumák Petr
Rozbalit Rozbalit vše Re: Android screen mirroring přes USB se zvukem do /dev/videoX
Tak jsem tam doplnil rozlišení natvrdo a už to jede i ve Skype :)
adb shell "while true; do screenrecord --output-format=h264 -; done" | ffmpeg -i - -f v4l2 -s 1280x720 -vcodec rawvideo -pix_fmt yuv420p /dev/video3

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.