Genymobile / scrcpy

Display and control your Android device
Apache License 2.0
108.51k stars 10.45k forks source link

Could not find v4l2 muxer #4245

Closed Grafcube closed 1 year ago

Grafcube commented 1 year ago

Environment

Describe the bug

When I try to run scrcpy, I get ERROR: Could not find v4l2 muxer

$ scrcpy --no-audio -n -N --v4l2-sink=/dev/video0
scrcpy 2.1.1 <https://github.com/Genymobile/scrcpy>
INFO: Video orientation is locked for v4l2 sink. See --lock-video-orientation.
INFO: ADB device found:
INFO:     -->   (usb)  RZ8T20J21RP                     device  SM_M325F
/nix/store/nr82q4n4hky643krx5j5m4f4rq12256k-scrcpy-2.1.1/share/scrcpy/scrcpy-server: 1 file pushed, 0 skipped. 340.0 MB/s (56995 bytes in 0.000s)
[server] INFO: Device: [samsung] samsung SM-M325F (Android 13)
ERROR: Could not find v4l2 muxer
ERROR: Demuxer error
WARN: Killing the server...

I have verified that v4l2loopback (OBS virtual camera) and ffmpeg is working correctly:

$ v4l2-ctl --list-devices
Dummy video device (0x0000) (platform:v4l2loopback-000):
        /dev/video0
FFmpeg formats ``` $ ffmpeg -formats ffmpeg version 6.0 Copyright (c) 2000-2023 the FFmpeg developers built with gcc 12.3.0 (GCC) configuration: --disable-static --prefix=/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-ffmpeg-full-6.0 --target_os=linux --arch=x86_64 --pkg-config=pkg-config --enable-gpl --enable-version3 --disable-nonfree --enable-shared --enable-pic --disable-small --enable-runtime-cpudetect --enable-gray --enable-swscale-alpha --enable-hardcoded-tables --enable-safe-bitstream-reader --enable-pthreads --disable-w32threads --disable-os2threads --enable-network --enable-pixelutils --datadir=/nix/store/asfwf2069a58halnqn6238fvc39cc24a-ffmpeg-full-6.0-data/share/ffmpeg --enable-ffmpeg --enable-ffplay --enable-ffprobe --bindir=/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-ffmpeg-full-6.0-bin/bin --enable-avcodec --enable-avdevice --enable-avfilter --enable-avformat --enable-avutil --enable-postproc --enable-swresample --enable-swscale --libdir=/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-ffmpeg-full-6.0-lib/lib --incdir=/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-ffmpeg-full-6.0-dev/include --enable-doc --enable-htmlpages --enable-manpages --mandir=/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-ffmpeg-full-6.0-man/share/man --enable-podpages --enable-txtpages --docdir=/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-ffmpeg-full-6.0-doc/share/doc/ffmpeg --enable-alsa --enable-bzlib --enable-libcelt --enable-cuda --enable-cuda-llvm --enable-libdav1d --disable-libfdk-aac --disable-libflite --enable-fontconfig --enable-libfreetype --enable-frei0r --enable-libfribidi --enable-libgme --enable-gnutls --enable-libgsm --enable-ladspa --enable-libmp3lame --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libdc1394 --enable-libdrm --enable-iconv --enable-libjack --enable-libmfx --enable-libmodplug --enable-libmysofa --enable-libopus --enable-libplacebo --enable-librsvg --enable-libsrt --enable-libssh --disable-libtensorflow --enable-libtheora --enable-libv4l2 --enable-v4l2-m2m --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvmaf --enable-libvpx --enable-libwebp --enable-xlib --enable-libxcb --enable-libxcb-shm --enable-libxcb-xfixes --enable-libxcb-shape --enable-libxml2 --enable-lzma --enable-cuvid --enable-nvdec --enable-nvenc --enable-openal --enable-opencl --enable-libopencore-amrnb --disable-opengl --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-libpulse --enable-librav1e --enable-libsvtav1 --disable-librtmp --enable-sdl2 --enable-libsoxr --enable-libspeex --enable-libvidstab --enable-libvo-amrwbenc --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzmq --enable-libzimg --enable-zlib --enable-vulkan --enable-libglslang --enable-libsmbclient --disable-debug --enable-optimizations --disable-extra-warnings --disable-stripping libavutil 58. 2.100 / 58. 2.100 libavcodec 60. 3.100 / 60. 3.100 libavformat 60. 3.100 / 60. 3.100 libavdevice 60. 1.100 / 60. 1.100 libavfilter 9. 3.100 / 9. 3.100 libswscale 7. 1.100 / 7. 1.100 libswresample 4. 10.100 / 4. 10.100 libpostproc 57. 1.100 / 57. 1.100 File formats: D. = Demuxing supported .E = Muxing supported -- D 3dostr 3DO STR E 3g2 3GP2 (3GPP2 file format) E 3gp 3GP (3GPP file format) D 4xm 4X Technologies E a64 a64 - video for Commodore 64 D aa Audible AA format files D aac raw ADTS AAC (Advanced Audio Coding) D aax CRI AAX DE ac3 raw AC-3 D ace tri-Ace Audio Container D acm Interplay ACM D act ACT Voice file format D adf Artworx Data Format D adp ADP D ads Sony PS2 ADS E adts ADTS AAC (Advanced Audio Coding) DE adx CRI ADX D aea MD STUDIO audio D afc AFC DE aiff Audio IFF D aix CRI AIX DE alaw PCM A-law D alias_pix Alias/Wavefront PIX image DE alp LEGO Racers ALP DE alsa ALSA audio output DE amr 3GPP AMR D amrnb raw AMR-NB D amrwb raw AMR-WB E amv AMV D anm Deluxe Paint Animation D apac raw APAC D apc CRYO APC D ape Monkey's Audio DE apm Ubisoft Rayman 2 APM DE apng Animated Portable Network Graphics DE aptx raw aptX (Audio Processing Technology for Bluetooth) DE aptx_hd raw aptX HD (Audio Processing Technology for Bluetooth) D aqtitle AQTitle subtitles DE argo_asf Argonaut Games ASF D argo_brp Argonaut Games BRP DE argo_cvg Argonaut Games CVG DE asf ASF (Advanced / Active Streaming Format) D asf_o ASF (Advanced / Active Streaming Format) E asf_stream ASF (Advanced / Active Streaming Format) DE ass SSA (SubStation Alpha) subtitle DE ast AST (Audio Stream) DE au Sun AU D av1 AV1 Annex B DE avi AVI (Audio Video Interleaved) E avif AVIF E avm2 SWF (ShockWave Flash) (AVM2) D avr AVR (Audio Visual Research) D avs Argonaut Games Creature Shock DE avs2 raw AVS2-P2/IEEE1857.4 video DE avs3 AVS3-P2/IEEE1857.10 D bethsoftvid Bethesda Softworks VID D bfi Brute Force & Ignorance D bfstm BFSTM (Binary Cafe Stream) D bin Binary text D bink Bink D binka Bink Audio DE bit G.729 BIT file format D bitpacked Bitpacked D bmp_pipe piped bmp sequence D bmv Discworld II BMV D boa Black Ops Audio D bonk raw Bonk D brender_pix BRender PIX image D brstm BRSTM (Binary Revolution Stream) D c93 Interplay C93 DE caf Apple CAF (Core Audio Format) DE cavsvideo raw Chinese AVS (Audio Video Standard) video D cdg CD Graphics D cdxl Commodore CDXL video D cine Phantom Cine DE codec2 codec2 .c2 muxer DE codec2raw raw codec2 muxer D concat Virtual concatenation script E crc CRC testing D cri_pipe piped cri sequence DE dash DASH Muxer DE data raw data DE daud D-Cinema audio D dcstr Sega DC STR D dds_pipe piped dds sequence D derf Xilam DERF D dfa Chronomaster DFA DE dfpwm raw DFPWM1a D dhav Video DAV DE dirac raw Dirac DE dnxhd raw DNxHD (SMPTE VC-3) D dpx_pipe piped dpx sequence D dsf DSD Stream File (DSF) D dsicin Delphine Software International CIN D dss Digital Speech Standard (DSS) DE dts raw DTS D dtshd raw DTS-HD DE dv DV (Digital Video) D dvbsub raw dvbsub D dvbtxt dvbtxt E dvd MPEG-2 PS (DVD VOB) D dxa DXA D ea Electronic Arts Multimedia D ea_cdata Electronic Arts cdata DE eac3 raw E-AC-3 D epaf Ensoniq Paris Audio File D exr_pipe piped exr sequence DE f32be PCM 32-bit floating-point big-endian DE f32le PCM 32-bit floating-point little-endian E f4v F4V Adobe Flash Video DE f64be PCM 64-bit floating-point big-endian DE f64le PCM 64-bit floating-point little-endian DE fbdev Linux framebuffer DE ffmetadata FFmpeg metadata in text E fifo FIFO queue pseudo-muxer E fifo_test Fifo test muxer DE film_cpk Sega FILM / CPK DE filmstrip Adobe Filmstrip DE fits Flexible Image Transport System DE flac raw FLAC D flic FLI/FLC/FLX animation DE flv FLV (Flash Video) E framecrc framecrc testing E framehash Per-frame hash testing E framemd5 Per-frame MD5 testing D frm Megalux Frame D fsb FMOD Sample Bank D fwse Capcom's MT Framework sound DE g722 raw G.722 DE g723_1 raw G.723.1 DE g726 raw big-endian G.726 ("left-justified") DE g726le raw little-endian G.726 ("right-justified") D g729 G.729 raw format demuxer D gdv Gremlin Digital Video D gem_pipe piped gem sequence D genh GENeric Header DE gif CompuServe Graphics Interchange Format (GIF) D gif_pipe piped gif sequence DE gsm raw GSM DE gxf GXF (General eXchange Format) DE h261 raw H.261 DE h263 raw H.263 DE h264 raw H.264 video E hash Hash testing D hca CRI HCA D hcom Macintosh HCOM D hdr_pipe piped hdr sequence E hds HDS Muxer DE hevc raw HEVC video DE hls Apple HTTP Live Streaming D hnm Cryo HNM v4 DE ico Microsoft Windows ICO D idcin id Cinematic D idf iCE Draw File D iff IFF (Interchange File Format) D ifv IFV CCTV DVR DE ilbc iLBC storage DE image2 image2 sequence DE image2pipe piped image2 sequence D imf IMF (Interoperable Master Format) D ingenient raw Ingenient MJPEG D ipmovie Interplay MVE E ipod iPod H.264 MP4 (MPEG-4 Part 14) D ipu raw IPU Video DE ircam Berkeley/IRCAM/CARL Sound Format E ismv ISMV/ISMA (Smooth Streaming) D iss Funcom ISS D iv8 IndigoVision 8000 video DE ivf On2 IVF D ivr IVR (Internet Video Recording) D j2k_pipe piped j2k sequence D jack JACK Audio Connection Kit DE jacosub JACOsub subtitle format D jpeg_pipe piped jpeg sequence D jpegls_pipe piped jpegls sequence D jpegxl_pipe piped jpegxl sequence D jv Bitmap Brothers JV D kmsgrab KMS screen capture D kux KUX (YouKu) DE kvag Simon & Schuster Interactive VAG D laf LAF (Limitless Audio Format) E latm LOAS/LATM D lavfi Libavfilter virtual input device D libdc1394 dc1394 v.2 A/V grab D libgme Game Music Emu demuxer D libmodplug ModPlug demuxer D libopenmpt Tracker formats (libopenmpt) D live_flv live RTMP FLV (Flash Video) D lmlm4 raw lmlm4 D loas LOAS AudioSyncStream DE lrc LRC lyrics D luodat Video CCTV DAT D lvf LVF D lxf VR native stream (LXF) DE m4v raw MPEG-4 video E matroska Matroska D matroska,webm Matroska / WebM D mca MCA Audio Format D mcc MacCaption E md5 MD5 testing D mgsts Metal Gear Solid: The Twin Snakes DE microdvd MicroDVD subtitle format DE mjpeg raw MJPEG video D mjpeg_2000 raw MJPEG 2000 video E mkvtimestamp_v2 extract pts as timecode v2 format, as defined by mkvtoolnix DE mlp raw MLP D mlv Magic Lantern Video (MLV) D mm American Laser Games MM DE mmf Yamaha SMAF D mods MobiClip MODS D moflex MobiClip MOFLEX E mov QuickTime / MOV D mov,mp4,m4a,3gp,3g2,mj2 QuickTime / MOV E mp2 MP2 (MPEG audio layer 2) DE mp3 MP3 (MPEG audio layer 3) E mp4 MP4 (MPEG-4 Part 14) D mpc Musepack D mpc8 Musepack SV8 DE mpeg MPEG-1 Systems / MPEG program stream E mpeg1video raw MPEG-1 video E mpeg2video raw MPEG-2 video DE mpegts MPEG-TS (MPEG-2 Transport Stream) D mpegtsraw raw MPEG-TS (MPEG-2 Transport Stream) D mpegvideo raw MPEG video DE mpjpeg MIME multipart JPEG D mpl2 MPL2 subtitles D mpsub MPlayer subtitles D msf Sony PS3 MSF D msnwctcp MSN TCP Webcam stream D msp Microsoft Paint (MSP)) D mtaf Konami PS2 MTAF D mtv MTV DE mulaw PCM mu-law D musx Eurocom MUSX D mv Silicon Graphics Movie D mvi Motion Pixels MVI DE mxf MXF (Material eXchange Format) E mxf_d10 MXF (Material eXchange Format) D-10 Mapping E mxf_opatom MXF (Material eXchange Format) Operational Pattern Atom D mxg MxPEG clip D nc NC camera feed D nistsphere NIST SPeech HEader REsources D nsp Computerized Speech Lab NSP D nsv Nullsoft Streaming Video E null raw null video DE nut NUT D nuv NuppelVideo DE obu AV1 low overhead OBU E oga Ogg Audio DE ogg Ogg E ogv Ogg Video DE oma Sony OpenMG audio D openal OpenAL audio capture device E opus Ogg Opus DE oss OSS (Open Sound System) playback D paf Amazing Studio Packed Animation File D pam_pipe piped pam sequence D pbm_pipe piped pbm sequence D pcx_pipe piped pcx sequence D pfm_pipe piped pfm sequence D pgm_pipe piped pgm sequence D pgmyuv_pipe piped pgmyuv sequence D pgx_pipe piped pgx sequence D phm_pipe piped phm sequence D photocd_pipe piped photocd sequence D pictor_pipe piped pictor sequence D pjs PJS (Phoenix Japanimation Society) subtitles D pmp Playstation Portable PMP D png_pipe piped png sequence D pp_bnk Pro Pinball Series Soundbank D ppm_pipe piped ppm sequence D psd_pipe piped psd sequence E psp PSP MP4 (MPEG-4 Part 14) D psxstr Sony Playstation STR DE pulse Pulse audio output D pva TechnoTrend PVA D pvf PVF (Portable Voice Format) D qcp QCP D qdraw_pipe piped qdraw sequence D qoi_pipe piped qoi sequence D r3d REDCODE R3D DE rawvideo raw video D realtext RealText subtitle format D redspark RedSpark D rka RKA (RK Audio) D rl2 RL2 DE rm RealMedia DE roq raw id RoQ D rpl RPL / ARMovie D rsd GameCube RSD DE rso Lego Mindstorms RSO DE rtp RTP output E rtp_mpegts RTP/mpegts output format DE rtsp RTSP output DE s16be PCM signed 16-bit big-endian DE s16le PCM signed 16-bit little-endian DE s24be PCM signed 24-bit big-endian DE s24le PCM signed 24-bit little-endian DE s32be PCM signed 32-bit big-endian DE s32le PCM signed 32-bit little-endian D s337m SMPTE 337M DE s8 PCM signed 8-bit D sami SAMI subtitle format DE sap SAP output DE sbc raw SBC D sbg SBaGen binaural beats script DE scc Scenarist Closed Captions D scd Square Enix SCD E sdl,sdl2 SDL2 output device D sdns Xbox SDNS D sdp SDP D sdr2 SDR2 D sds MIDI Sample Dump Standard D sdx Sample Dump eXchange E segment segment D ser SER (Simple uncompressed video format for astronomical capturing) D sga Digital Pictures SGA D sgi_pipe piped sgi sequence D shn raw Shorten D siff Beam Software SIFF D simbiosis_imx Simbiosis Interactive IMX D sln Asterisk raw pcm DE smjpeg Loki SDL MJPEG D smk Smacker E smoothstreaming Smooth Streaming Muxer D smush LucasArts Smush D sol Sierra SOL DE sox SoX native DE spdif IEC 61937 (used on S/PDIF - IEC958) E spx Ogg Speex DE srt SubRip subtitle D stl Spruce subtitle format E stream_segment,ssegment streaming segment muxer E streamhash Per-stream hash testing D subviewer SubViewer subtitle format D subviewer1 SubViewer v1 subtitle format D sunrast_pipe piped sunrast sequence DE sup raw HDMV Presentation Graphic Stream subtitles D svag Konami PS2 SVAG E svcd MPEG-2 PS (SVCD) D svg_pipe piped svg sequence D svs Square SVS DE swf SWF (ShockWave Flash) D tak raw TAK D tedcaptions TED Talks captions E tee Multiple muxer tee D thp THP D tiertexseq Tiertex Limited SEQ D tiff_pipe piped tiff sequence D tmv 8088flex TMV DE truehd raw TrueHD DE tta TTA (True Audio) E ttml TTML subtitle D tty Tele-typewriter D txd Renderware TeXture Dictionary D ty TiVo TY Stream DE u16be PCM unsigned 16-bit big-endian DE u16le PCM unsigned 16-bit little-endian DE u24be PCM unsigned 24-bit big-endian DE u24le PCM unsigned 24-bit little-endian DE u32be PCM unsigned 32-bit big-endian DE u32le PCM unsigned 32-bit little-endian DE u8 PCM unsigned 8-bit E uncodedframecrc uncoded framecrc testing D v210 Uncompressed 4:2:2 10-bit D v210x Uncompressed 4:2:2 10-bit D vag Sony PS2 VAG D vbn_pipe piped vbn sequence DE vc1 raw VC-1 video DE vc1test VC-1 test bitstream E vcd MPEG-1 Systems / MPEG program stream (VCD) DE vidc PCM Archimedes VIDC DE video4linux2,v4l2 Video4Linux2 output device D vividas Vividas VIV D vivo Vivo D vmd Sierra VMD E vob MPEG-2 PS (VOB) D vobsub VobSub subtitle format DE voc Creative Voice D vpk Sony PS2 VPK D vplayer VPlayer subtitles D vqf Nippon Telegraph and Telephone Corporation (NTT) TwinVQ DE w64 Sony Wave64 D wady Marble WADY DE wav WAV / WAVE (Waveform Audio) D wavarc Waveform Archiver D wc3movie Wing Commander III movie E webm WebM E webm_chunk WebM Chunk Muxer DE webm_dash_manifest WebM DASH Manifest E webp WebP D webp_pipe piped webp sequence DE webvtt WebVTT subtitle DE wsaud Westwood Studios audio D wsd Wideband Single-bit Data (WSD) D wsvqa Westwood Studios VQA DE wtv Windows Television (WTV) DE wv raw WavPack D wve Psion 3 audio D x11grab X11 screen capture, using XCB D xa Maxis XA D xbin eXtended BINary text (XBIN) D xbm_pipe piped xbm sequence D xmd Konami XMD D xmv Microsoft XMV D xpm_pipe piped xpm sequence E xv XV (XVideo) output device D xvag Sony PS3 XVAG D xwd_pipe piped xwd sequence D xwma Microsoft xWMA D yop Psygnosis YOP DE yuv4mpegpipe YUV4MPEG pipe ```
rom1v commented 1 year ago

Your ffmpeg is built without v4l2 support.

Grafcube commented 1 year ago

Your ffmpeg is built without v4l2 support.

No it has v4l2 support. These lines are in ffmpeg -formats:

--enable-libv4l2 --enable-v4l2-m2m
...
DE video4linux2,v4l2 Video4Linux2 output device

And ffplay plays the video correctly when I use OBS Virtual Camera with the command ffplay -i /dev/video0.

rom1v commented 1 year ago

No it has v4l2 support. These lines are in ffmpeg -formats:

DE video4linux2,v4l2 Video4Linux2 output device

Ah yes (I searched at v4l2, not video4linux2).

 DE video4linux2,v4l2 Video4Linux2 output device

And it works for me.

My guess is that your ffmpeg binary does not use the same ffmpeg lib (the .so files) as your scrcpy nix package.

Grafcube commented 1 year ago

That was it. Overriding the package with ffmpeg_6-full solved it. Thanks.

proofconstruction commented 1 year ago

For @Grafcube and any other Nix users that find this:

The source for the ffmpeg_6-full package contains this text:

  # Everything enabled; only guarded behind platform exclusivity or brokeness.
  # If you need to depend on ffmpeg-full because ffmpeg is missing some feature
  # your package needs, you should enable that feature in regular ffmpeg
  # instead.
, withFullDeps ? ffmpegVariant == "full"

In this case, enabling v4l2 is best done like this:

(scrcpy.override {
  ffmpeg = ffmpeg_6.override {
    withV4l2 = true;
  };
})