• ffmpeg rotieren eines webcam live stream

    From Sebastian Reinhardt@21:1/5 to All on Sat May 6 00:20:01 2023
    Hallo,

    Ich habe hier einen R-PI mit Camera. Leider kann ich die Kamera nicht
    physisch drehen und möchte den Stream per Software drehen.

    Die Webcam wird mit ffmpeg ausgelesen und speichert die Daten in ein Verzeichnis, das mit einer Website (Apache) ausgelesen und angezeigt
    werden soll. An sich funktioniert das mit dem Befehl:

    --------------------------------

    ffmpeg -input_format h264 -f video4linux2 -video_size 1024x768
    -framerate 30 -i /dev/video1 -c:v copy -f dash -window_size 10
    -remove_at_exit 1 -hls_playlist 1 /srv/www/vhosts/haupthost/httpdocs/video/manifest.mpd

    --------------------------------

    Nun habe ich herausgefunden, dass man den Livestream nicht ohne weiteres
    drehen kann. Das soll wohl mit einer Hilfskonstruktion eines
    "v4l2loopback"- Device machen und dann sollte man das loopback- Device
    wie ein normales Device auslesen können:

    --------------------------------

    ffmpeg -f v4l2 -i /dev/video1 -vf "vflip" -f v4l2 /dev/video0

    ffmpeg -f video4linux2 -video_size 1024x768 -framerate 30 -i /dev/video0
    -c:v copy -f dash -window_size 10 -remove_at_exit 1 -hls_playlist 1 /srv/www/vhosts/haupthost/httpdocs/video/manifest.mpd

    --------------------------------

    Leider bekomme ich dann folgende Ausgabe:

    --------------------------------

    ffmpeg -f video4linux2 -video_size 1024x768 -framerate 30 -i /dev/video0 -map_metadata 0 -metadata:s:v rotate=90 -c:v copy -f dash -window_size
    10 -remove_at_exit 1 -hls_playlist 1 /srv/ www/vhosts/haupthost/httpdocs/video/manifest.mpd
    ffmpeg version 4.1.10-0+deb10u1+rpt1 Copyright (c) 2000-2022 the FFmpeg developers
     built with gcc 8 (Raspbian 8.3.0-6+rpi1)
     configuration: --prefix=/usr --extra-version=0+deb10u1+rpt1 --toolchain=hardened --incdir=/usr/include/arm-linux-gnueabihf
    --enable-gpl --disable-stripping --enable-avresample
    --disable-filter=resample --enable-avisynth --enable-gnutls --enab
    le-ladspa --enable-libaom --enable-libass --enable-libbluray
    --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm
    --enable-libjack --enable-libmp3lame --enable-libmysofa
    --enable-libopenjpeg --enable-libopenmpt --enable-libopus
    --enable-libpulse --enable-librsvg --enable-librubberband
    --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame
    --enable-libvidstab --enable-libvorbis --enable-libvpx
    --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2
    --enable-omx --enable-openal --enable-opengl --enable-sdl2
    --enable-omx-rpi --enable-mmal --enable-neon --enable-rpi
    --enable-vout-drm --enable-v4l2-request --enable-libudev
    --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chro
    maprint --enable-frei0r --enable-libx264 --enable-shared --libdir=/usr/lib/arm-linux-gnueabihf --cpu=arm1176jzf-s --arch=arm
     libavutil      56. 22.100 / 56. 22.100
     libavcodec     58. 35.100 / 58. 35.100
     libavformat    58. 20.100 / 58. 20.100
     libavdevice    58.  5.100 / 58.  5.100
     libavfilter     7. 40.101 /  7. 40.101
     libavresample   4.  0.  0 /  4.  0.  0
     libswscale      5.  3.100 /  5.  3.100
     libswresample   3.  3.100 /  3.  3.100
     libpostproc    55.  3.100 / 55.  3.100
    [video4linux2,v4l2 @ 0x1eb0f20] The driver does not permit changing the
    time per frame
    Input #0, video4linux2,v4l2, from '/dev/video0':
     Duration: N/A, start: 3942.261901, bitrate: 283115 kb/s
       Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 1024x768, 283115 kb/s, 30 fps, 30 tbr, 1000k tbn, 1000k tbc
    [dash @ 0x1eb3a70] Opening '/srv/www/vhosts/haupthost/httpdocs/video/init-stream0.m4s' for writing
    [mp4 @ 0x1eb6bc0] Could not find tag for codec rawvideo in stream #0,
    codec not currently supported in container
    Could not write header for output file #0 (incorrect codec parameters
    ?): Invalid argument
    Stream mapping:
     Stream #0:0 -> #0:0 (copy)
       Last message repeated 1 times

    --------------------------------

    Hat jemand einen Tipp, woran sich ffmpeg stört und wie ich das Problem
    lösen kann?

    --
    Mit freundlichen Grüßen

    Sebastian Reinhardt

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)