Portál AbcLinuxu, 6. května 2025 16:29
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:
apt-get install v4l2loopback-utils modprobe v4l2loopback exclusive_caps=0 ffmpeg ... -f v4l2 -vcodec rawvideo -pix_fmt yuv420p /dev/video1Audio: 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.
modprobe: ERROR: could not insert 'v4l2loopback': Bad addressPřitom ten droidcam si vytvořil
v4l2loopback_dc
takřka bez problému.
# 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)
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 installviz:
https://askubuntu.com/questions/1263554/sudo-modprobe-v4l2loopback-modprobe-error-could-not-insert-v4l2loopback-bad
/lib/modules/5.4.0-050400rc6-generic/extraProblé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 .... :))
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/video3Do 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ě"...
ffmpeg adb shell screenrecord --output-format = h264 - | ffplay -Na tom příkazu je něco špatně…
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-20b2a7043f85kde 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 -
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ě) :(
adb shell screenrecord --output-format=h264 - | ffmpeg -f v4l2 -vcodec rawvideo -pix_fmt yuv420p /dev/video3 -
-
na konci? Vstup ze stdin bude -i -
na začátku, ne?
adb shell screenrecord --output-format=h264 - | ffmpeg -i - -f v4l2 -vcodec rawvideo -pix_fmt yuv420p /dev/video3moc díky pane :) Teď ještě zkouknu, jestli je to stejně plynulé jako ve
ffplay
, ale zatím se mi to zdá ok :)
adb shell "while true; do screenrecord --output-format=h264 -; done" | ffmpeg -i - -f v4l2 -s 1280x720 -vcodec rawvideo -pix_fmt yuv420p /dev/video3
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.