mrlt8 / docker-wyze-bridge

WebRTC/RTSP/RTMP/LL-HLS bridge for Wyze cams in a docker container
GNU Affero General Public License v3.0
2.47k stars 151 forks source link

Intel Quick Sync Support #736

Open mitchross opened 1 year ago

mitchross commented 1 year ago

Hello - I would like to know the commands to use Intel Quick Sync with this project

https://jellyfin.org/docs/general/administration/hardware-acceleration/#intel-quicksync https://deploy-preview-4055--frigate-docs.netlify.app/configuration/hardware_acceleration

I previously opened up... https://github.com/mrlt8/docker-wyze-bridge/issues/548

chris001 commented 1 year ago

Can you run "intel_gpu_top" either on the host or in the container and see if the gpu is activated? Only run Wyze bridge when doing this. Or you will get false positives if running frigate.

Frigate isn't installed. Homebridge is running.

When I run my ffmpeg command in the wyze-bridge container, the Intel GPU is activated, and deactivates when the ffmpeg command is finished: intel_gpu_top on lenovo baytrail n2940 laptop

392media commented 1 year ago

@mrlt8 are you able to build docker image with proper libva version? we could refer to frigate's :stable image on which I can use _qsv coders with kabylake iGPU. This is the vainfo of Frigate's image:

vainfo: VA-API version: 1.17 (libva 2.10.0) vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 23.1.1 ()

I checked Frigate's dockerfile, the relevant part seems to be the following:

if [[ "${TARGETARCH}" == "amd64" ]]; then # Use debian testing repo only for hwaccel packages echo 'deb http://deb.debian.org/debian testing main non-free' >/etc/apt/sources.list.d/debian-testing.list apt-get -qq update

intel-opencl-icd specifically for GPU support in OpenVino

apt-get -qq install --no-install-recommends --no-install-suggests -y \
    intel-opencl-icd \
    mesa-va-drivers libva-drm2 intel-media-va-driver-non-free i965-va-driver libmfx1 radeontop intel-gpu-tools
# something about this dependency requires it to be installed in a separate call rather than in the line above
apt-get -qq install --no-install-recommends --no-install-suggests -y \
    i965-va-driver-shaders
rm -f /etc/apt/sources.list.d/debian-testing.list

fi

chris001 commented 1 year ago

@392media Using image: wyze-bridge:dev-qsv, and my command to install the intel drivers, gives:

libva info: VA-API version 1.18.0
intel-media-va-driver-non-free Version: 23.1.2+ds1-1
chris001 commented 1 year ago

@392media That install command from frigate is the same as mine that I arrived at on my own just yesterday.

392media commented 1 year ago

@392media That install command from frigate is the same as mine that I arrived at on my own just yesterday.

@mrlt8 could you add this to dev-qsv image? it appears the key is using the "testing" debian repo for VAAPI library.

392media commented 12 months ago

@mrlt8 is the prebuilt image updated? I pulled it a few minutes ago the VA-API version is not changed.

Input #0, h264, from 'fd:':
  Duration: N/A, bitrate: N/A
  Stream #0:0: Video: h264 (Main), 1 reference frame, yuv420p(tv, unknown/bt709/unknown, progressive, left), 1728x1296, 25 fps, 40 tbr, 1200k tbn
[out#0/rtsp @ 0x55e583a5e880] No explicit maps, mapping streams automatically...
[vost#0:0/h264_qsv @ 0x55e5839b66c0] Created video stream from input stream 0:0
[AVHWDeviceContext @ 0x55e5839ca100] Trying to use DRM render node for device 0, with matching kernel driver (i915).
[AVHWDeviceContext @ 0x55e5839ca100] libva: VA-API version 1.10.0
[AVHWDeviceContext @ 0x55e5839ca100] libva: User requested driver 'iHD'
[AVHWDeviceContext @ 0x55e5839ca100] libva: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
[AVHWDeviceContext @ 0x55e5839ca100] libva: Found init function __vaDriverInit_1_10
[AVHWDeviceContext @ 0x55e5839ca100] libva: va_openDriver() returns 0
[AVHWDeviceContext @ 0x55e5839ca100] Initialised VAAPI connection: version 1.10
[AVHWDeviceContext @ 0x55e5839ca100] VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 21.1.1 ().
[AVHWDeviceContext @ 0x55e5839ca100] Driver not found in known nonstandard list, using standard behaviour.
[AVHWDeviceContext @ 0x55e5839c9b80] Use Intel(R) oneVPL to create MFX session, API version is 2.9, the required implementation version is 1.3
[AVHWDeviceContext @ 0x55e5839c9b80] libva: Failed to get device id from the driver. Please consider to upgrade the driver to support VA-API 1.15.0
mrlt8 commented 12 months ago

hmm, we could try switching to debian bookworm to see if that might help.

edit: bookworm image should be up now.

392media commented 12 months ago

testing with command

ffmpeg -loglevel verbose -hwaccel qsv -hwaccel_device /dev/dri/renderD128 -c:v h264_qsv -i rtsp://192.168.101.12:8554/driveway -f null -

error:

Input #0, rtsp, from 'rtsp://192.168.101.12:8554/driveway':
  Metadata:
    title           : go2rtc/1.5.0
  Duration: N/A, start: 0.066656, bitrate: N/A
  Stream #0:0: Video: h264 (High), 1 reference frame, yuvj420p(pc, bt709, progressive, left), 1920x1080 (1920x1088), 15 fps, 15 tbr, 90k tbn
[out#0/null @ 0x55943db1be00] No explicit maps, mapping streams automatically...
[vost#0:0/wrapped_avframe @ 0x55943da14280] Created video stream from input stream 0:0
[AVHWDeviceContext @ 0x55943da18700] Trying to use DRM render node for device 0, with matching kernel driver (i915).
[AVHWDeviceContext @ 0x55943da18700] libva: VA-API version 1.17.0
[AVHWDeviceContext @ 0x55943da18700] libva: User requested driver 'iHD'
[AVHWDeviceContext @ 0x55943da18700] libva: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
[AVHWDeviceContext @ 0x55943da18700] libva: Found init function __vaDriverInit_1_17
[AVHWDeviceContext @ 0x55943da18700] libva: va_openDriver() returns 0
[AVHWDeviceContext @ 0x55943da18700] Initialised VAAPI connection: version 1.17
[AVHWDeviceContext @ 0x55943da18700] VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 23.1.1 ().
[AVHWDeviceContext @ 0x55943da18700] Driver not found in known nonstandard list, using standard behaviour.
[AVHWDeviceContext @ 0x55943da075c0] Use Intel(R) oneVPL to create MFX session, API version is 2.9, the required implementation version is 1.3
[AVHWDeviceContext @ 0x55943da075c0] Error creating a MFX session: -9.
Device creation failed: -1313558101.
No device available for decoder: device type qsv needed for codec h264_qsv.
[vist#0:0/h264 @ 0x55943da10940] Hardware device setup failed for decoder: Unknown error occurred
[vost#0:0/wrapped_avframe @ 0x55943da14280] Error initializing a simple filtergraph

The same command runs will on the Frigate docker with following log messages:

Input #0, rtsp, from 'rtsp://192.168.101.12:8554/driveway':
  Metadata:
    title           : go2rtc/1.5.0
  Duration: N/A, start: 0.066667, bitrate: N/A
  Stream #0:0: Video: h264 (High), 1 reference frame, yuvj420p(pc, bt709, progressive, left), 1920x1080 (1920x1088), 15 fps, 15 tbr, 90k tbn
[AVHWDeviceContext @ 0x55fad19de740] Trying to use DRM render node for device 0, with matching kernel driver (i915).
[AVHWDeviceContext @ 0x55fad19de740] libva: VA-API version 1.17.0
[AVHWDeviceContext @ 0x55fad19de740] libva: User requested driver 'iHD'
[AVHWDeviceContext @ 0x55fad19de740] libva: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
[AVHWDeviceContext @ 0x55fad19de740] libva: Found init function __vaDriverInit_1_17
[AVHWDeviceContext @ 0x55fad19de740] libva: va_openDriver() returns 0
[AVHWDeviceContext @ 0x55fad19de740] Initialised VAAPI connection: version 1.17
[AVHWDeviceContext @ 0x55fad19de740] VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 23.1.1 ().
[AVHWDeviceContext @ 0x55fad19de740] Driver not found in known nonstandard list, using standard behaviour.
[AVHWDeviceContext @ 0x55fad1a46a00] Initialize MFX session: API version is 1.35, implementation version is 1.35
[h264_mp4toannexb @ 0x55fad19d0180] The input looks like it is Annex B already
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (h264_qsv) -> wrapped_avframe (native))
Press [q] to stop, [?] for help
[AVHWDeviceContext @ 0x55fad19434c0] VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 23.1.1 ().
[AVHWDeviceContext @ 0x55fad19434c0] Driver not found in known nonstandard list, using standard behaviour.
[h264_qsv @ 0x55fad1914d80] Decoder: output is video memory surface
[h264_qsv @ 0x55fad1914d80] More data is required to decode header
    Last message repeated 10 times
[AVHWDeviceContext @ 0x55fad1946140] VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 23.1.1 ().
[AVHWDeviceContext @ 0x55fad1946140] Driver not found in known nonstandard list, using standard behaviour.
[h264_qsv @ 0x55fad1914d80] Decoder: output is video memory surface
[graph 0 input from stream 0:0 @ 0x55fad1a07cc0] w:1920 h:1080 pixfmt:qsv tb:1/90000 fr:15/1 sar:0/1

We might need to look into the MFX lib

392media commented 12 months ago

[AVHWDeviceContext @ 0x55943da075c0] Use Intel(R) oneVPL to create MFX session, API version is 2.9, the required implementation version is 1.3 [AVHWDeviceContext @ 0x55943da075c0] Error creating a MFX session: -9.

Maybe we should not use libvpl but should stick with libmfx for broader hardware compatibility.

libvpl supports Intel's platform >= Alder Lake, my hardware is Skylake/Kabylak

392media commented 12 months ago

Seems found the solution: after adding package libmfx1 the qsv is working for my hardware.

mrlt8 commented 12 months ago

Added libmfx1 to the dev-qsv image

392media commented 12 months ago

Running the following ffmpeg line with dev-qsv, things is okay so far.

ffmpeg -loglevel verbose -hwaccel qsv -c:v h264_qsv -i - -vf vpp_qsv=transpose=1 -c:v h264_qsv -scenario videosurveillance -rtsp_transport tcp -f rtsp rtsp://0.0.0.0:8554/{cam_name}
mrlt8 commented 12 months ago

@392media, could you try the latest dev-qsv image with H264_ENC=h264_qsv?

392media commented 12 months ago

got error with H264_ENC=h264_qsv.

[front-door] Re-encoding using h264_qsv [transpose='clock']
[front-door] [FFMPEG_CMD] ffmpeg -loglevel verbose -fflags +genpts+flush_packets+nobuffer+bitexact -flags +low_delay -thread_queue_size 100 -hwaccel qsv -analyzeduration 50 -probesize 50 -f H264 -i pipe: -flags +global_header -c:v h264_qsv -filter:v vpp_qsv=transpose=clock -b:v 2000k -coder 1 -bufsize 2000k -profile:v main -preset ultrafast -forced-idr 1 -force_key_frames expr:gte(t,n_forced*2) -movflags +empty_moov+default_base_moof+frag_keyframe -muxdelay 0 -muxpreload 0 -map 0:v -f tee [f=rtsp:rtsp_transport=tcp:bsfs/v=dump_extra=freq=keyframe]rtsp://0.0.0.0:8554/front-door
[front-door] WARNING: Skipping smaller frame at start of stream (frame_size=4)
ffmpeg version N-111354-g4b19690ff4-20230706 Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 13.1.0 (crosstool-NG 1.25.0.196_227d99d)
  configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-ffbuild-linux-gnu- --arch=x86_64 --target-os=linux --enable-gpl --enable-version3 --disable-debug --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-openssl --enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl --enable-libpulse --enable-libvmaf --enable-libxcb --enable-xlib --enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth --enable-chromaprint --enable-libdav1d --enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable-libkvazaar --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --enable-libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --disable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --enable-libdrm --enable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags=-pie --extra-libs='-ldl -lgomp' --extra-version=20230706
  libavutil      58. 14.100 / 58. 14.100
  libavcodec     60. 22.100 / 60. 22.100
  libavformat    60. 10.100 / 60. 10.100
  libavdevice    60.  2.101 / 60.  2.101
  libavfilter     9.  8.102 /  9.  8.102
  libswscale      7.  3.100 /  7.  3.100
  libswresample   4. 11.100 /  4. 11.100
  libpostproc    57.  2.100 / 57.  2.100
[h264 @ 0x55ce2b453100] Reinit context to 1728x1296, pix_fmt: yuv420p
[h264 @ 0x55ce2b441640] Stream #0: not enough frames to estimate rate; consider increasing probesize
[vist#0:0/h264 @ 0x55ce2b456ec0] WARNING: defaulting hwaccel_output_format to qsv for compatibility with old commandlines. This behaviour is DEPRECATED and will be removed in the future. Please explicitly set "-hwaccel_output_format qsv".
Selecting decoder 'h264_qsv' because of requested hwaccel method qsv
Input #0, h264, from 'pipe:':
  Duration: N/A, bitrate: N/A
  Stream #0:0: Video: h264 (Main), 1 reference frame, yuv420p(tv, unknown/bt709/unknown, progressive, left), 1728x1296, 25 fps, 40 tbr, 1200k tbn
[out#0/tee @ 0x55ce2b46bc40] Adding streams from explicit maps...
[vost#0:0/h264_qsv @ 0x55ce2b499e40] Created video stream from input stream 0:0
[AVHWDeviceContext @ 0x55ce2b465240] Trying to use DRM render node for device 0, with matching kernel driver (i915).
[AVHWDeviceContext @ 0x55ce2b465240] libva: VA-API version 1.17.0
[AVHWDeviceContext @ 0x55ce2b465240] libva: User requested driver 'iHD'
[AVHWDeviceContext @ 0x55ce2b465240] libva: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
[AVHWDeviceContext @ 0x55ce2b465240] libva: Found init function __vaDriverInit_1_17
[AVHWDeviceContext @ 0x55ce2b465240] libva: va_openDriver() returns 0
[AVHWDeviceContext @ 0x55ce2b465240] Initialised VAAPI connection: version 1.17
[AVHWDeviceContext @ 0x55ce2b465240] VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 23.1.1 ().
[AVHWDeviceContext @ 0x55ce2b465240] Driver not found in known nonstandard list, using standard behaviour.
[AVHWDeviceContext @ 0x55ce2b464d80] Use Intel(R) oneVPL to create MFX session, API version is 2.9, the required implementation version is 1.3
[AVHWDeviceContext @ 0x55ce2b464d80] Initialize MFX session: implementation version is 1.35
[h264_mp4toannexb @ 0x55ce2b531080] The input looks like it is Annex B already
[out#0/tee @ 0x55ce2b46bc40] Codec AVOption forced-idr (If forcing keyframes, force them as IDR frames.) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
[out#0/tee @ 0x55ce2b46bc40] Codec AVOption coder (Coder type) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (h264_qsv) -> h264 (h264_qsv))
[AVHWDeviceContext @ 0x152d50002600] VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 23.1.1 ().
[AVHWDeviceContext @ 0x152d50002600] Driver not found in known nonstandard list, using standard behaviour.
[h264_qsv @ 0x55ce2b46b080] Decoder: output is video memory surface
[h264_qsv @ 0x55ce2b46b080] Use Intel(R) oneVPL to create MFX session with the specified MFX loader
[h264_qsv @ 0x55ce2b46b080] More data is required to decode header
    Last message repeated 12 times
[AVHWDeviceContext @ 0x152d50007b40] VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 23.1.1 ().
[AVHWDeviceContext @ 0x152d50007b40] Driver not found in known nonstandard list, using standard behaviour.
[h264_qsv @ 0x55ce2b46b080] Decoder: output is video memory surface
[h264_qsv @ 0x55ce2b46b080] Use Intel(R) oneVPL to create MFX session with the specified MFX loader
[graph 0 input from stream 0:0 @ 0x55ce2b534e40] w:1728 h:1296 pixfmt:qsv tb:1/1200000 fr:20/1 sar:0/1
[AVHWDeviceContext @ 0x55ce2b5332c0] VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 23.1.1 ().
[AVHWDeviceContext @ 0x55ce2b5332c0] Driver not found in known nonstandard list, using standard behaviour.
[Parsed_vpp_qsv_0 @ 0x55ce2b534400] Use Intel(R) oneVPL to create MFX session with the specified MFX loader
[Parsed_vpp_qsv_0 @ 0x55ce2b534400] VPP: input is video memory surface
[Parsed_vpp_qsv_0 @ 0x55ce2b534400] VPP: output is video memory surface
[h264_qsv @ 0x55ce2b49a240] Using input frames context (format qsv) with h264_qsv encoder.
[h264_qsv encoder @ 0x55ce2b49a600] [Eval @ 0x7ffd19d799e0] Undefined constant or missing '(' in 'ultrafast'
[h264_qsv encoder @ 0x55ce2b49a600] Unable to parse option value "ultrafast"
[h264_qsv encoder @ 0x55ce2b49a600] Error setting option preset to value ultrafast.
[vost#0:0/h264_qsv @ 0x55ce2b499e40] Error while opening encoder - maybe incorrect parameters such as bit_rate, rate, width or height.
[in#0/h264 @ 0x55ce2b4414c0] Terminating demuxer thread
[in#0/h264 @ 0x55ce2b4414c0] Input file #0 (pipe:):
[in#0/h264 @ 0x55ce2b4414c0]   Input stream #0:0 (video): 35 packets read (217564 bytes); 1 frames decoded; 0 decode errors; 
[in#0/h264 @ 0x55ce2b4414c0]   Total: 35 packets (217564 bytes) demuxed
[vist#0:0/h264 @ 0x55ce2b456ec0] Decoder thread received EOF packet
[vist#0:0/h264 @ 0x55ce2b456ec0] Decoder returned EOF, finishing
[vist#0:0/h264 @ 0x55ce2b456ec0] Terminating decoder thread
[AVIOContext @ 0x55ce2b4527c0] Statistics: 314547 bytes read, 0 seeks
Conversion failed!
[front-door] FFMPEG stopped
mrlt8 commented 12 months ago

Thanks @392media, It looks like h264_qsv doesn't support ultrafast: Unable to parse option value "ultrafast". Updated to use fast instead.

392media commented 12 months ago

I am using the following custom ffmpeg command to feed Frigate (go2rtc). It makes the encoder use constant frame rate and key frame every 2 seconds. The feed is stable and Frigate's saving segments are precisely 10s in duration.

[front-door] [FFMPEG_CMD] ffmpeg -loglevel verbose -fflags +genpts+flush_packets+nobuffer+bitexact -flags +low_delay -hwaccel qsv -hwaccel_output_format qsv -c:v h264_qsv -i - -vf vpp_qsv=transpose=1 -c:v h264_qsv -g 40 -scenario videosurveillance -rtsp_transport tcp -f rtsp rtsp://0.0.0.0:8554/front-door

392media commented 12 months ago

@mrlt8

BTW I have a quick question, I try change the RTSP server to a external go2rtc instance, i.e. bridge actively sending the stream to go2rtc. I was able to do that by changing the rtsp URL in custom ffmpeg command. But ffmpeg process won't start until I access the webui of wyzer-bridge.

Can the bridge be configured to start the ffmpeg process automatically when the video from camera is ready, even there is no client viewing it? If the option is not readily available, I could open a new ticket for it.

mrlt8 commented 12 months ago

Some cameras have a different FPS and/or change the FPS when switching to night vision so that the reason for the -force_key_frames expr:gte(t,n_forced*2), but I will try to see if we might be able to tweak the code further.

Have you tried ON_DEMAND=False? that should keep the connection up. MediaMTX has always been tightly integrated with the bridge, so skipping it could cause some other issues especially with the WebUI.

carldanley commented 12 months ago

Just catching up on the convo. Great news! I was also able to get intel_gpu_top to report that hardware acceleration is occurring:

image

My environment is a little bit different than "just a host with docker"; I run Talos + k8s. I confirmed that the pod was not running on a host with other workloads that are already making use of hardware acceleration.

Not sure if this is valuable but I performed the following steps:

  1. I switched the docker image tag to dev-qsv
  2. I set the following envs:
H264_ENC=h264_qsv
FFMPEG_CMD=ffmpeg -loglevel verbose -hwaccel qsv -c:v h264_qsv -i - -vf vpp_qsv=transpose=1 -c:v h264_qsv -scenario videosurveillance -rtsp_transport tcp -f rtsp rtsp://0.0.0.0:8554/{cam_name}
  1. I installed the intel_gpu_top binary via the following commands (as mentioned by the others above):
echo 'deb http://deb.debian.org/debian testing main non-free' >/etc/apt/sources.list.d/debian-testing.list
apt update
apt-get install --no-install-recommends --no-install-suggests -y intel-opencl-icd vainfo mesa-va-drivers libva-drm2 intel-media-va-driver-non-free i965-va-driver libmfx1 radeontop intel-gpu-tools
apt-get install --no-install-recommends --no-install-suggests -y i965-va-driver-shaders
rm -f /etc/apt/sources.list.d/debian-testing.list

All of my cameras technically work but they are rotated 90degrees clockwise (I assume it's because I overwrote the FFMPEG_CMD -- which probably corrects all of that?).

Very excited for this to find it's way upstream!! Thanks for all the hardwork everyone ;)

carldanley commented 12 months ago

All of my cameras technically work but they are rotated 90degrees clockwise (I assume it's because I overwrote the FFMPEG_CMD -- which probably corrects all of that?).

As I suspected, it's only because I overwrote the FFMPEG_CMD. I let the container run as normal with DEBUG_FFMPEG and copied the command over and then modified it to:

ffmpeg -loglevel verbose -hwaccel qsv -fflags +genpts+flush_packets+nobuffer+bitexact -flags +low_delay -thread_queue_size 100 -hwaccel qsv -analyzeduration 50 -probesize 50 -f H264 -i pipe: -thread_queue_size 100 -f alaw -ar 16000 -i /tmp/{cam_name}.wav -flags +global_header -c:v h264_qsv -c:a copy -movflags +empty_moov+default_base_moof+frag_keyframe -muxdelay 0 -muxpreload 0 -map 0:v -map 1:a -async 100 -f tee [f=rtsp:rtsp_transport=tcp:bsfs/v=dump_extra=freq=keyframe]rtsp://0.0.0.0:8554/{cam_name}

I ommitted -scenario videosurveillance and -vf vpp_qsv=transpose=1 because it complained about them (I just don't know the arcane art of ffmpeg's like all you cool cats =P)... but it works!

mitchross commented 11 months ago

I was out on holiday. I am back.. I am still having issues.

I am trying with the QSV docker image +

- name: FFMPEG_CMD
  value: "ffmpeg -loglevel verbose -hwaccel qsv -c:v h264_qsv -i - -c:v h264_qsv  -rtsp_transport tcp -f rtsp rtsp://0.0.0.0:8554/{cam_name}"

- name: H264_ENC
  value: h264_qsv
[shed] FFMPEG stopped
[h264 @ 0x55c819ab3440] Reinit context to 1920x1088, pix_fmt: yuv420p
[kitchen] ☁️ Camera is connected via RELAY mode!!
[kitchen] Stream may consume additional bandwidth!
[kitchen] 📡 Getting 180kb/s HD stream (H264/20fps) via RELAY mode (WiFi: 85%) FW: 4.36.11.4679 🔒 (DTLS) (2/3)
ffmpeg version N-111378-g13e9899014-20230708 Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 13.1.0 (crosstool-NG 1.25.0.196_227d99d)
  configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-ffbuild-linux-gnu- --arch=x86_64 --target-os=linux --enable-gpl --enable-version3 --disable-debug --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-openssl --enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl --enable-libpulse --enable-libvmaf --enable-libxcb --enable-xlib --enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth --enable-chromaprint --enable-libdav1d --enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable-libkvazaar --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --enable-libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --disable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --enable-libdrm --enable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags=-pie --extra-libs='-ldl -lgomp' --extra-version=20230708
  libavutil      58. 14.100 / 58. 14.100
  libavcodec     60. 22.100 / 60. 22.100
  libavformat    60. 10.100 / 60. 10.100
  libavdevice    60.  2.101 / 60.  2.101
  libavfilter     9.  8.102 /  9.  8.102
  libswscale      7.  3.100 /  7.  3.100
  libswresample   4. 11.100 /  4. 11.100
  libpostproc    57.  2.100 / 57.  2.100
[kitchen] WARNING: Skipping smaller frame at start of stream (frame_size=1)
[WyzeBridge] 🎉 Connecting to WyzeCam Doorbell - Front door on 192.168.1.112
[vist#0:0/h264 @ 0x55da2c925780] WARNING: defaulting hwaccel_output_format to qsv for compatibility with old commandlines. This behaviour is DEPRECATED and will be removed in the future. Please explicitly set "-hwaccel_output_format qsv".
Input #0, h264, from 'fd:':
  Duration: N/A, bitrate: N/A
  Stream #0:0: Video: h264 (Main), 1 reference frame, yuv420p(tv, bt709, progressive, left), 1920x1080 (1920x1088), 25 fps, 40 tbr, 1200k tbn
[out#0/rtsp @ 0x55da2c9f41c0] No explicit maps, mapping streams automatically...
[vost#0:0/h264_qsv @ 0x55da2c91a3c0] Created video stream from input stream 0:0
[AVHWDeviceContext @ 0x55da2c938840] Trying to use DRM render node for device 0, with matching kernel driver (i915).
[AVHWDeviceContext @ 0x55da2c938840] libva: VA-API version 1.17.0
[AVHWDeviceContext @ 0x55da2c938840] libva: User requested driver 'iHD'
[AVHWDeviceContext @ 0x55da2c938840] libva: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
[AVHWDeviceContext @ 0x55da2c938840] libva: Found init function __vaDriverInit_1_17
[AVHWDeviceContext @ 0x55da2c938840] libva: va_openDriver() returns 0
[AVHWDeviceContext @ 0x55da2c938840] Initialised VAAPI connection: version 1.17
[AVHWDeviceContext @ 0x55da2c938840] VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 23.1.1 ().
[AVHWDeviceContext @ 0x55da2c938840] Driver not found in known nonstandard list, using standard behaviour.
[AVHWDeviceContext @ 0x55da2c938500] Use Intel(R) oneVPL to create MFX session, API version is 2.9, the required implementation version is 1.3
[AVHWDeviceContext @ 0x55da2c938500] Initialize MFX session: implementation version is 1.35
[h264_mp4toannexb @ 0x55da2cad6180] The input looks like it is Annex B already
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (h264_qsv) -> h264 (h264_qsv))
[AVHWDeviceContext @ 0x7f8fdc002600] VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 23.1.1 ().
[AVHWDeviceContext @ 0x7f8fdc002600] Driver not found in known nonstandard list, using standard behaviour.
[h264_qsv @ 0x55da2c93ea00] Decoder: output is video memory surface
[h264_qsv @ 0x55da2c93ea00] Use Intel(R) oneVPL to create MFX session with the specified MFX loader
[AVHWDeviceContext @ 0x7f8fdc007d40] VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 23.1.1 ().
[AVHWDeviceContext @ 0x7f8fdc007d40] Driver not found in known nonstandard list, using standard behaviour.
[h264_qsv @ 0x55da2c93ea00] Decoder: output is video memory surface
[h264_qsv @ 0x55da2c93ea00] Use Intel(R) oneVPL to create MFX session with the specified MFX loader
[graph 0 input from stream 0:0 @ 0x55da2c9d24c0] w:1920 h:1080 pixfmt:qsv tb:1/1200000 fr:20/1 sar:0/1
[h264_qsv @ 0x55da2c93dbc0] Using input frames context (format qsv) with h264_qsv encoder.
[h264_qsv @ 0x55da2c93dbc0] Encoder: input is video memory surface
[h264_qsv @ 0x55da2c93dbc0] Use Intel(R) oneVPL to create MFX session with the specified MFX loader
[h264_qsv @ 0x55da2c93dbc0] Using the variable bitrate (VBR) ratecontrol method
[h264_qsv @ 0x55da2c93dbc0] Selected ratecontrol mode is unsupported
[h264_qsv @ 0x55da2c93dbc0] some encoding parameters are not supported by the QSV runtime. Please double check the input parameters.
[vost#0:0/h264_qsv @ 0x55da2c91a3c0] Error while opening encoder - maybe incorrect parameters such as bit_rate, rate, width or height.
[in#0/h264 @ 0x55da2c914d40] Terminating demuxer thread
[in#0/h264 @ 0x55da2c914d40] Input file #0 (fd:):
[in#0/h264 @ 0x55da2c914d40]   Input stream #0:0 (video): 10 packets read (429527 bytes); 1 frames decoded; 0 decode errors; 
[in#0/h264 @ 0x55da2c914d40]   Total: 10 packets (429527 bytes) demuxed
[vist#0:0/h264 @ 0x55da2c925780] Decoder thread received EOF packet
[vist#0:0/h264 @ 0x55da2c925780] Decoder returned EOF, finishing
[vist#0:0/h264 @ 0x55da2c925780] Terminating decoder thread
[AVIOContext @ 0x55da2c925c40] Statistics: 757456 bytes read, 0 seeks
Conversion failed!
[deck] FFMPEG stopped
[h264 @ 0x56329a0ac440] Reinit context to 1920x1088, pix_fmt: yuv420p
[vist#0:0/h264 @ 0x55b02ad9aa00] WARNING: defaulting hwaccel_output_format to qsv for compatibility with old commandlines. This behaviour is DEPRECATED and will be removed in the future. Please explicitly set "-hwaccel_output_format qsv".
Input #0, h264, from 'fd:':
  Duration: N/A, bitrate: N/A
  Stream #0:0: Video: h264 (Main), 1 reference frame, yuv420p(tv, bt709, progressive, left), 1920x1080 (1920x1088), 25 fps, 40 tbr, 1200k tbn
[out#0/rtsp @ 0x55b02ae2eb40] No explicit maps, mapping streams automatically...
[vost#0:0/h264_qsv @ 0x55b02ad9a340] Created video stream from input stream 0:0
[AVHWDeviceContext @ 0x55b02adb6f40] Trying to use DRM render node for device 0, with matching kernel driver (i915).
[AVHWDeviceContext @ 0x55b02adb6f40] libva: VA-API version 1.17.0
[AVHWDeviceContext @ 0x55b02adb6f40] libva: User requested driver 'iHD'
[AVHWDeviceContext @ 0x55b02adb6f40] libva: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
[AVHWDeviceContext @ 0x55b02adb6f40] libva: Found init function __vaDriverInit_1_17
[AVHWDeviceContext @ 0x55b02adb6f40] libva: va_openDriver() returns 0
[AVHWDeviceContext @ 0x55b02adb6f40] Initialised VAAPI connection: version 1.17
[AVHWDeviceContext @ 0x55b02adb6f40] VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 23.1.1 ().
[AVHWDeviceContext @ 0x55b02adb6f40] Driver not found in known nonstandard list, using standard behaviour.
[AVHWDeviceContext @ 0x55b02adb69c0] Use Intel(R) oneVPL to create MFX session, API version is 2.9, the required implementation version is 1.3
[AVHWDeviceContext @ 0x55b02adb69c0] Initialize MFX session: implementation version is 1.35
[WyzeBridge] 🎉 Connecting to WyzeCam V3 - Shed on 192.168.1.185
[h264_mp4toannexb @ 0x55b02af59480] The input looks like it is Annex B already
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (h264_qsv) -> h264 (h264_qsv))
[AVHWDeviceContext @ 0x7f0a84002600] VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 23.1.1 ().
[AVHWDeviceContext @ 0x7f0a84002600] Driver not found in known nonstandard list, using standard behaviour.
[h264_qsv @ 0x55b02adbeec0] Decoder: output is video memory surface
[h264_qsv @ 0x55b02adbeec0] Use Intel(R) oneVPL to create MFX session with the specified MFX loader
[AVHWDeviceContext @ 0x7f0a84007d40] VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 23.1.1 ().
[AVHWDeviceContext @ 0x7f0a84007d40] Driver not found in known nonstandard list, using standard behaviour.
[h264_qsv @ 0x55b02adbeec0] Decoder: output is video memory surface
[h264_qsv @ 0x55b02adbeec0] Use Intel(R) oneVPL to create MFX session with the specified MFX loader
[graph 0 input from stream 0:0 @ 0x55b02af7e780] w:1920 h:1080 pixfmt:qsv tb:1/1200000 fr:20/1 sar:0/1
[h264_qsv @ 0x55b02adbe080] Using input frames context (format qsv) with h264_qsv encoder.
[h264_qsv @ 0x55b02adbe080] Encoder: input is video memory surface
[h264_qsv @ 0x55b02adbe080] Use Intel(R) oneVPL to create MFX session with the specified MFX loader
[h264_qsv @ 0x55b02adbe080] Using the variable bitrate (VBR) ratecontrol method
[h264_qsv @ 0x55b02adbe080] Selected ratecontrol mode is unsupported
[h264_qsv @ 0x55b02adbe080] some encoding parameters are not supported by the QSV runtime. Please double check the input parameters.
[vost#0:0/h264_qsv @ 0x55b02ad9a340] Error while opening encoder - maybe incorrect parameters such as bit_rate, rate, width or height.
[in#0/h264 @ 0x55b02ad94d40] Terminating demuxer thread
[in#0/h264 @ 0x55b02ad94d40] Input file #0 (fd:):
[in#0/h264 @ 0x55b02ad94d40]   Input stream #0:0 (video): 10 packets read (233614 bytes); 1 frames decoded; 0 decode errors; 
[in#0/h264 @ 0x55b02ad94d40]   Total: 10 packets (233614 bytes) demuxed
[vist#0:0/h264 @ 0x55b02ad9aa00] Decoder thread received EOF packet
[vist#0:0/h264 @ 0x55b02ad9aa00] Decoder returned EOF, finishing
[vist#0:0/h264 @ 0x55b02ad9aa00] Terminating decoder thread
[AVIOContext @ 0x55b02ada5c40] Statistics: 506545 bytes read, 0 seeks
Conversion failed!
[vist#0:0/h264 @ 0x55c819c9ffc0] WARNING: defaulting hwaccel_output_format to qsv for compatibility with old commandlines. This behaviour is DEPRECATED and will be removed in the future. Please explicitly set "-hwaccel_output_format qsv".
Input #0, h264, from 'fd:':
  Duration: N/A, bitrate: N/A
  Stream #0:0: Video: h264 (Main), 1 reference frame, yuv420p(tv, bt709, progressive, left), 1920x1080 (1920x1088), 25 fps, 40 tbr, 1200k tbn
[out#0/rtsp @ 0x55c819b53cc0] No explicit maps, mapping streams automatically...
[vost#0:0/h264_qsv @ 0x55c819ca0400] Created video stream from input stream 0:0
[AVHWDeviceContext @ 0x55c819ac1ec0] Trying to use DRM render node for device 0, with matching kernel driver (i915).
[AVHWDeviceContext @ 0x55c819ac1ec0] libva: VA-API version 1.17.0
[AVHWDeviceContext @ 0x55c819ac1ec0] libva: User requested driver 'iHD'
[AVHWDeviceContext @ 0x55c819ac1ec0] libva: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
[AVHWDeviceContext @ 0x55c819ac1ec0] libva: Found init function __vaDriverInit_1_17
[AVHWDeviceContext @ 0x55c819ac1ec0] libva: va_openDriver() returns 0
[AVHWDeviceContext @ 0x55c819ac1ec0] Initialised VAAPI connection: version 1.17
[AVHWDeviceContext @ 0x55c819ac1ec0] VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 23.1.1 ().
[AVHWDeviceContext @ 0x55c819ac1ec0] Driver not found in known nonstandard list, using standard behaviour.
[AVHWDeviceContext @ 0x55c819ac1940] Use Intel(R) oneVPL to create MFX session, API version is 2.9, the required implementation version is 1.3
[AVHWDeviceContext @ 0x55c819ac1940] Initialize MFX session: implementation version is 1.35
[h264_mp4toannexb @ 0x55c819c5a640] The input looks like it is Annex B already
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (h264_qsv) -> h264 (h264_qsv))
[AVHWDeviceContext @ 0x7fd06c002600] VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 23.1.1 ().
[AVHWDeviceContext @ 0x7fd06c002600] Driver not found in known nonstandard list, using standard behaviour.
[h264_qsv @ 0x55c819adbec0] Decoder: output is video memory surface
[h264_qsv @ 0x55c819adbec0] Use Intel(R) oneVPL to create MFX session with the specified MFX loader
[AVHWDeviceContext @ 0x7fd06c007d40] VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 23.1.1 ().
[AVHWDeviceContext @ 0x7fd06c007d40] Driver not found in known nonstandard list, using standard behaviour.
[h264_qsv @ 0x55c819adbec0] Decoder: output is video memory surface
[h264_qsv @ 0x55c819adbec0] Use Intel(R) oneVPL to create MFX session with the specified MFX loader
[graph 0 input from stream 0:0 @ 0x55c819c5c7c0] w:1920 h:1080 pixfmt:qsv tb:1/1200000 fr:20/1 sar:0/1
[h264_qsv @ 0x55c819adb080] Using input frames context (format qsv) with h264_qsv encoder.
[h264_qsv @ 0x55c819adb080] Encoder: input is video memory surface
[h264_qsv @ 0x55c819adb080] Use Intel(R) oneVPL to create MFX session with the specified MFX loader
[h264_qsv @ 0x55c819adb080] Using the variable bitrate (VBR) ratecontrol method
[h264_qsv @ 0x55c819adb080] Selected ratecontrol mode is unsupported
[h264_qsv @ 0x55c819adb080] some encoding parameters are not supported by the QSV runtime. Please double check the input parameters.
[vost#0:0/h264_qsv @ 0x55c819ca0400] Error while opening encoder - maybe incorrect parameters such as bit_rate, rate, width or height.
[in#0/h264 @ 0x55c819ab1d40] Terminating demuxer thread
[in#0/h264 @ 0x55c819ab1d40] Input file #0 (fd:):
[in#0/h264 @ 0x55c819ab1d40]   Input stream #0:0 (video): 10 packets read (229188 bytes); 1 frames decoded; 0 decode errors; 
[in#0/h264 @ 0x55c819ab1d40]   Total: 10 packets (229188 bytes) demuxed
[vist#0:0/h264 @ 0x55c819c9ffc0] Decoder thread received EOF packet
[vist#0:0/h264 @ 0x55c819c9ffc0] Decoder returned EOF, finishing
[vist#0:0/h264 @ 0x55c819c9ffc0] Terminating decoder thread
[AVIOContext @ 0x55c819ac2c40] Statistics: 464949 bytes read, 0 seeks
Conversion failed!
[garage] FFMPEG stopped
[living-room] ☁️ Camera is connected via RELAY mode!!
[living-room] Stream may consume additional bandwidth!
[living-room] 📡 Getting 180kb/s HD stream (H264/20fps) via RELAY mode (WiFi: 70%) FW: 4.50.3.4240 🔒 (DTLS) (2/3)
ffmpeg version N-111378-g13e9899014-20230708 Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 13.1.0 (crosstool-NG 1.25.0.196_227d99d)
  configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-ffbuild-linux-gnu- --arch=x86_64 --target-os=linux --enable-gpl --enable-version3 --disable-debug --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-openssl --enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl --enable-libpulse --enable-libvmaf --enable-libxcb --enable-xlib --enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth --enable-chromaprint --enable-libdav1d --enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable-libkvazaar --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --enable-libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --disable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --enable-libdrm --enable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags=-pie --extra-libs='-ldl -lgomp' --extra-version=20230708
  libavutil      58. 14.100 / 58. 14.100
  libavcodec     60. 22.100 / 60. 22.100
  libavformat    60. 10.100 / 60. 10.100
  libavdevice    60.  2.101 / 60.  2.101
  libavfilter     9.  8.102 /  9.  8.102
  libswscale      7.  3.100 /  7.  3.100
  libswresample   4. 11.100 /  4. 11.100
  libpostproc    57.  2.100 / 57.  2.100
[living-room] WARNING: Skipping smaller frame at start of stream (frame_size=1)
[dog-cam-2] FFMPEG stopped
mitchross commented 11 months ago

I also tried to remove the FFMPEG command and use

Then all doorbell cameras fail to start, ROTATE DOOR FAILS

[front-door] FFMPEG stopped
[wyze-doorbell] ☁️ Camera is connected via RELAY mode!!
[wyze-doorbell] Stream may consume additional bandwidth!
[wyze-doorbell] 📡 Getting 180kb/s HD stream (H264/20fps) via RELAY mode (WiFi: 95%) FW: 4.25.1.314 🔒 (DTLS) (2/3)
[wyze-doorbell] Re-encoding using h264_qsv [transpose='clock']
[wyze-doorbell] 📹 Will record 1800s mp4 clips to /record/wyze-doorbell/
[WyzeBridge] 🎉 Connecting to WyzeCam Doorbell - Front door on 192.168.1.112
[wyze-doorbell] WARNING: Skipping smaller frame at start of stream (frame_size=4)
[front-door] ☁️ Camera is connected via RELAY mode!!
[front-door] Stream may consume additional bandwidth!
[front-door] 📡 Getting 180kb/s HD stream (H264/20fps) via RELAY mode (WiFi: 81%) FW: 4.25.1.314 🔒 (DTLS) (2/3)
[front-door] Re-encoding using h264_qsv [transpose='clock']
[front-door] 📹 Will record 1800s mp4 clips to /record/front-door/
[front-door] WARNING: Skipping smaller frame at start of stream (frame_size=4)
[front-door] FFMPEG stopped
mrlt8 commented 11 months ago

Still not sure if we're missing some package or an ffmpeg command...

I've added the intel-opencl-icd package to the dev branch, and also added "-maxrate", "2000k", "-minrate", "2000k" as a potential fix for the ratecontrol error.

Not sure if we need the following packages as well or if they're mostly for debugging? vainfo mesa-va-drivers radeontop intel-gpu-tools

mitchross commented 11 months ago

vainfo intel-gpu-tools - outputs driver info, debug info, and gpu usage mesa-va-drivers radeontop - are for amd gpus

This might be a hint? https://github.com/blakeblackshear/frigate/blob/0fd1eaff4374dae1b137f70775a504c5218f5b6a/docker/install_deps.sh#L60C2-L62C31

mrlt8 commented 11 months ago

it's worth a shot. Anyone know if the intel-opencl-icd package is necessary?

chris001 commented 11 months ago

Anyone know if the intel-opencl-icd package is necessary?

OpenCL (and Vulkan) are the only API's available on all 3 major GPU platforms (AMD, Intel, NVidia), that FFMPEG implements the OpenCL (and Vulkan) API for Filtering - in the case of wyze bridge, uses ffmpeg to "filter" the Wyze Video Doorbell video feed with a clockwise rotation, required for the user to view the Wyze Video Doorbell videos correctly.

mrlt8 commented 11 months ago

Could someone try the latest dev-qsv image which should have intel-opencl-icd?

392media commented 11 months ago

@mitchross what's model of you Intel CPU?

mitchross commented 11 months ago

@mitchross what's model of you Intel CPU?

Intel 5095

mitchross commented 11 months ago

Could someone try the latest dev-qsv image which should have intel-opencl-icd?

Rotate Camera still doesn't work.

These are my input params, ignore the format, they get passed this way to my k8s cluster, but they are docker env compatible.

- name: RECORD_ALL
  value: "True"
- name: RECORD_LENGTH
  value: "1800"
- name: ROTATE_DOOR
  value: "True"
- name: FRESH_DATA
  value: "True"
- name: DEBUG_FFMPEG
  value: "True"
- name: H264_ENC
  value: h264_qsv
- name: LIBVA_DRIVER_NAME
  value: iHD
chris001 commented 11 months ago

@mitchross When the ffmpeg call to rotate door camera fails, ffmpeg should log the error to the container's log, that should give some clues, could you paste relevant log lines here?

mitchross commented 11 months ago

This is the command that breaks rotation.. ( do note it rotates fine without these values )

- name: H264_ENC
  value: h264_qsv

I get these logs... (front-door) is the camera to troubleshoot

[front-door] ☁️ Camera is connected via RELAY mode!!
[front-door] Stream may consume additional bandwidth!
[front-door] 📡 Getting 180kb/s HD stream (H264/20fps) via RELAY mode (WiFi: 94%) FW: 4.25.1.314 🔒 (DTLS) (2/3)
[front-door] Re-encoding using h264_qsv [transpose='clock']
[front-door] 📹 Will record 1800s mp4 clips to /record/front-door/
[front-door] [FFMPEG_CMD] ffmpeg -loglevel verbose -fflags +genpts+flush_packets+nobuffer+bitexact -flags +low_delay -thread_queue_size 100 -hwaccel qsv -analyzeduration 50 -probesize 50 -f H264 -i pipe: -flags +global_header -c:v h264_qsv -filter:v vpp_qsv=transpose=clock -b:v 2000k -coder 1 -bufsize 2000k -maxrate 2000k -minrate 2000k -profile:v main -preset fast -forced-idr 1 -force_key_frames expr:gte(t,n_forced*2) -movflags +empty_moov+default_base_moof+frag_keyframe -muxdelay 0 -muxpreload 0 -map 0:v -f tee [f=rtsp:rtsp_transport=tcp:bsfs/v=dump_extra=freq=keyframe]rtsp://0.0.0.0:8554/front-door|[onfail=ignore:f=segment:bsfs/v=dump_extra=freq=keyframe:segment_time=1800:segment_atclocktime=1:segment_format=mp4:reset_timestamps=1:strftime=1:use_fifo=1]/record/front-door/front-door_%Y-%m-%d_%H-%M-%S_%Z.mp4
ffmpeg version N-111615-g60244d0bec-20230724 Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 13.1.0 (crosstool-NG 1.25.0.196_227d99d)
  configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-ffbuild-linux-gnu- --arch=x86_64 --target-os=linux --enable-gpl --enable-version3 --disable-debug --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-openssl --enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl --enable-libpulse --enable-libvmaf --enable-libxcb --enable-xlib --enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth --enable-chromaprint --enable-libdav1d --enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable-libkvazaar --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --enable-libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --disable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --enable-libdrm --enable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags=-pie --extra-libs='-ldl -lgomp' --extra-version=20230724
  libavutil      58. 14.100 / 58. 14.100
  libavcodec     60. 22.100 / 60. 22.100
  libavformat    60. 10.100 / 60. 10.100
  libavdevice    60.  2.101 / 60.  2.101
  libavfilter     9. 10.100 /  9. 10.100
  libswscale      7.  3.100 /  7.  3.100
  libswresample   4. 11.100 /  4. 11.100
  libpostproc    57.  2.100 / 57.  2.100
[tee @ 0x561fddee44c0] filename:'rtsp://0.0.0.0:8554/deck' format:rtsp
[tee @ 0x561fddee44c0]     stream:0 codec:h264 type:video bsfs: AVBSFContext
[tee @ 0x561fddee44c0] filename:'/record/deck/deck_%Y-%m-%d_%H-%M-%S_%Z.mp4' format:fifo
[tee @ 0x561fddee44c0]     stream:0 codec:h264 type:video bsfs: AVBSFContext
Output #0, tee, to '[f=rtsp:rtsp_transport=tcp:bsfs/v=dump_extra=freq=keyframe]rtsp://0.0.0.0:8554/deck|[onfail=ignore:f=segment:bsfs/v=dump_extra=freq=keyframe:segment_time=1800:segment_atclocktime=1:segment_format=mp4:reset_timestamps=1:strftime=1:use_fifo=1]/record/deck/deck_%Y-%m-%d_%H-%M-%S_%Z.mp4':
  Metadata:
    encoder         : Lavf60.10.100
  Stream #0:0: Video: h264 (Main), 1 reference frame, yuv420p(tv, bt709, progressive, left), 1920x1080 (0x0), q=2-31, 25 fps, 40 tbr, 20 tbn
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
[segment @ 0x561fdded6ac0] Selected stream id:0 type:video
[segment @ 0x561fdded6ac0] Opening '/record/deck/deck_2023-07-27_01-46-39_UTC.mp4' for writing
[WyzeBridge] ✅ '/deck stream is UP! (3/3)
[front-door] WARNING: Skipping smaller frame at start of stream (frame_size=4)
[dog-cam-2] ☁️ Camera is connected via RELAY mode!!
[dog-cam-2] Stream may consume additional bandwidth!
[dog-cam-2] 📡 Getting 180kb/s HD stream (H264/20fps) via RELAY mode (WiFi: 98%) FW: 4.36.11.4679 🔒 (DTLS) (2/3)
[dog-cam-2] 📹 Will record 1800s mp4 clips to /record/dog-cam-2/
[dog-cam-2] [FFMPEG_CMD] ffmpeg -loglevel verbose -fflags +genpts+flush_packets+nobuffer+bitexact -flags +low_delay -thread_queue_size 100 -hwaccel qsv -analyzeduration 50 -probesize 50 -f H264 -i pipe: -flags +global_header -c:v copy -movflags +empty_moov+default_base_moof+frag_keyframe -muxdelay 0 -muxpreload 0 -map 0:v -f tee [f=rtsp:rtsp_transport=tcp:bsfs/v=dump_extra=freq=keyframe]rtsp://0.0.0.0:8554/dog-cam-2|[onfail=ignore:f=segment:bsfs/v=dump_extra=freq=keyframe:segment_time=1800:segment_atclocktime=1:segment_format=mp4:reset_timestamps=1:strftime=1:use_fifo=1]/record/dog-cam-2/dog-cam-2_%Y-%m-%d_%H-%M-%S_%Z.mp4
ffmpeg version N-111615-g60244d0bec-20230724 Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 13.1.0 (crosstool-NG 1.25.0.196_227d99d)
  configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-ffbuild-linux-gnu- --arch=x86_64 --target-os=linux --enable-gpl --enable-version3 --disable-debug --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-openssl --enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl --enable-libpulse --enable-libvmaf --enable-libxcb --enable-xlib --enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth --enable-chromaprint --enable-libdav1d --enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable-libkvazaar --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --enable-libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --disable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --enable-libdrm --enable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags=-pie --extra-libs='-ldl -lgomp' --extra-version=20230724
  libavutil      58. 14.100 / 58. 14.100
  libavcodec     60. 22.100 / 60. 22.100
  libavformat    60. 10.100 / 60. 10.100
  libavdevice    60.  2.101 / 60.  2.101
  libavfilter     9. 10.100 /  9. 10.100
  libswscale      7.  3.100 /  7.  3.100
  libswresample   4. 11.100 /  4. 11.100
  libpostproc    57.  2.100 / 57.  2.100
[front-door] WARNING: frame too old
[dog-cam-2] WARNING: Skipping smaller frame at start of stream (frame_size=1)
[h264 @ 0x558cae46ee40] Reinit context to 1920x1088, pix_fmt: yuv420p
[h264 @ 0x558cae45d2c0] Stream #0: not enough frames to estimate rate; consider increasing probesize
[vist#0:0/h264 @ 0x558cae486940] WARNING: defaulting hwaccel_output_format to qsv for compatibility with old commandlines. This behaviour is DEPRECATED and will be removed in the future. Please explicitly set "-hwaccel_output_format qsv".
Selecting decoder 'h264_qsv' because of requested hwaccel method qsv
Input #0, h264, from 'pipe:':
  Duration: N/A, bitrate: N/A
  Stream #0:0: Video: h264 (Main), 1 reference frame, yuv420p(tv, bt709, progressive, left), 1920x1080 (1920x1088), 25 fps, 40 tbr, 1200k tbn
[out#0/tee @ 0x558cae486600] Adding streams from explicit maps...
[vost#0:0/copy @ 0x558cae482780] Created video stream from input stream 0:0
[out#0/tee @ 0x558cae486600] Codec AVOption flags () has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
[tcp @ 0x558cae4f3400] Starting connection attempt to 0.0.0.0 port 8554
[tcp @ 0x558cae4f3400] Successfully connected to 0.0.0.0 port 8554
[rtsp @ 0x558cae484340] SDP:
v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4 127.0.0.1
t=0 0
a=tool:libavformat 60.10.100
m=video 0 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1; sprop-parameter-sets=J00AKedAPAET8s1AQEB8AAADAAQAAAMAoMkAAr8gAEHrf/8CgA==,KO48gAA=; profile-level-id=4D0029
a=control:streamid=0

[tee @ 0x558cae482b80] filename:'rtsp://0.0.0.0:8554/garage' format:rtsp
[tee @ 0x558cae482b80]     stream:0 codec:h264 type:video bsfs: AVBSFContext
[tee @ 0x558cae482b80] filename:'/record/garage/garage_%Y-%m-%d_%H-%M-%S_%Z.mp4' format:fifo
[tee @ 0x558cae482b80]     stream:0 codec:h264 type:video bsfs: AVBSFContext
Output #0, tee, to '[f=rtsp:rtsp_transport=tcp:bsfs/v=dump_extra=freq=keyframe]rtsp://0.0.0.0:8554/garage|[onfail=ignore:f=segment:bsfs/v=dump_extra=freq=keyframe:segment_time=1800:segment_atclocktime=1:segment_format=mp4:reset_timestamps=1:strftime=1:use_fifo=1]/record/garage/garage_%Y-%m-%d_%H-%M-%S_%Z.mp4':
  Metadata:
    encoder         : Lavf60.10.100
  Stream #0:0: Video: h264 (Main), 1 reference frame, yuv420p(tv, bt709, progressive, left), 1920x1080 (0x0), q=2-31, 25 fps, 40 tbr, 20 tbn
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
frame=    0 fps=0.0 q=-1.0 size=       0kB time=N/A bitrate=N/A speed=N/A    
[segment @ 0x558cae481540] Selected stream id:0 type:video
[segment @ 0x558cae481540] Opening '/record/garage/garage_2023-07-27_01-46-39_UTC.mp4' for writing
[WyzeBridge] ✅ '/garage stream is UP! (3/3)
[h264 @ 0x55ff5b9fe0c0] Reinit context to 1728x1296, pix_fmt: yuv420p
[h264 @ 0x55ff5b9ec7c0] Stream #0: not enough frames to estimate rate; consider increasing probesize
[vist#0:0/h264 @ 0x55ff5ba01ec0] WARNING: defaulting hwaccel_output_format to qsv for compatibility with old commandlines. This behaviour is DEPRECATED and will be removed in the future. Please explicitly set "-hwaccel_output_format qsv".
Selecting decoder 'h264_qsv' because of requested hwaccel method qsv
Input #0, h264, from 'pipe:':
  Duration: N/A, bitrate: N/A
  Stream #0:0: Video: h264 (Main), 1 reference frame, yuv420p(tv, unknown/bt709/unknown, progressive, left), 1728x1296, 25 fps, 40 tbr, 1200k tbn
[out#0/tee @ 0x55ff5ba02640] Adding streams from explicit maps...
[vost#0:0/h264_qsv @ 0x55ff5ba8d040] Created video stream from input stream 0:0
[AVHWDeviceContext @ 0x55ff5ba0e100] Trying to use DRM render node for device 0, with matching kernel driver (i915).
[AVHWDeviceContext @ 0x55ff5ba0e100] libva: VA-API version 1.17.0
[AVHWDeviceContext @ 0x55ff5ba0e100] libva: User requested driver 'iHD'
[AVHWDeviceContext @ 0x55ff5ba0e100] libva: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
[AVHWDeviceContext @ 0x55ff5ba0e100] libva: Found init function __vaDriverInit_1_17
[AVHWDeviceContext @ 0x55ff5ba0e100] libva: va_openDriver() returns 0
[AVHWDeviceContext @ 0x55ff5ba0e100] Initialised VAAPI connection: version 1.17
[AVHWDeviceContext @ 0x55ff5ba0e100] VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 23.1.1 ().
[AVHWDeviceContext @ 0x55ff5ba0e100] Driver not found in known nonstandard list, using standard behaviour.
[AVHWDeviceContext @ 0x55ff5ba0dc00] Use Intel(R) oneVPL to create MFX session, API version is 2.9, the required implementation version is 1.3
[AVHWDeviceContext @ 0x55ff5ba0dc00] Initialize MFX session: implementation version is 1.35
[h264_mp4toannexb @ 0x55ff5bae8e80] The input looks like it is Annex B already
[out#0/tee @ 0x55ff5ba02640] Codec AVOption forced-idr (If forcing keyframes, force them as IDR frames.) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
[out#0/tee @ 0x55ff5ba02640] Codec AVOption coder (Coder type) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (h264_qsv) -> h264 (h264_qsv))
[AVHWDeviceContext @ 0x7fb414002600] VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 23.1.1 ().
[AVHWDeviceContext @ 0x7fb414002600] Driver not found in known nonstandard list, using standard behaviour.
[h264_qsv @ 0x55ff5ba11080] Decoder: output is video memory surface
[h264_qsv @ 0x55ff5ba11080] Use Intel(R) oneVPL to create MFX session with the specified MFX loader
[AVHWDeviceContext @ 0x7fb414007d40] VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 23.1.1 ().
[AVHWDeviceContext @ 0x7fb414007d40] Driver not found in known nonstandard list, using standard behaviour.
[h264_qsv @ 0x55ff5ba11080] Decoder: output is video memory surface
[h264_qsv @ 0x55ff5ba11080] Use Intel(R) oneVPL to create MFX session with the specified MFX loader
[living-room] ☁️ Camera is connected via RELAY mode!!
[living-room] Stream may consume additional bandwidth!
[wyze-doorbell] ☁️ Camera is connected via RELAY mode!!
[wyze-doorbell] Stream may consume additional bandwidth!
[wyze-doorbell] 📡 Getting 180kb/s HD stream (H264/20fps) via RELAY mode (WiFi: 95%) FW: 4.25.1.314 🔒 (DTLS) (2/3)
[living-room] 📡 Getting 180kb/s HD stream (H264/20fps) via RELAY mode (WiFi: 66%) FW: 4.50.3.4240 🔒 (DTLS) (2/3)
[wyze-doorbell] Re-encoding using h264_qsv [transpose='clock']
[wyze-doorbell] 📹 Will record 1800s mp4 clips to /record/wyze-doorbell/
[wyze-doorbell] [FFMPEG_CMD] ffmpeg -loglevel verbose -fflags +genpts+flush_packets+nobuffer+bitexact -flags +low_delay -thread_queue_size 100 -hwaccel qsv -analyzeduration 50 -probesize 50 -f H264 -i pipe: -flags +global_header -c:v h264_qsv -filter:v vpp_qsv=transpose=clock -b:v 2000k -coder 1 -bufsize 2000k -maxrate 2000k -minrate 2000k -profile:v main -preset fast -forced-idr 1 -force_key_frames expr:gte(t,n_forced*2) -movflags +empty_moov+default_base_moof+frag_keyframe -muxdelay 0 -muxpreload 0 -map 0:v -f tee [f=rtsp:rtsp_transport=tcp:bsfs/v=dump_extra=freq=keyframe]rtsp://0.0.0.0:8554/wyze-doorbell|[onfail=ignore:f=segment:bsfs/v=dump_extra=freq=keyframe:segment_time=1800:segment_atclocktime=1:segment_format=mp4:reset_timestamps=1:strftime=1:use_fifo=1]/record/wyze-doorbell/wyze-doorbell_%Y-%m-%d_%H-%M-%S_%Z.mp4
[living-room] 📹 Will record 1800s mp4 clips to /record/living-room/
[living-room] [FFMPEG_CMD] ffmpeg -loglevel verbose -fflags +genpts+flush_packets+nobuffer+bitexact -flags +low_delay -thread_queue_size 100 -hwaccel qsv -analyzeduration 50 -probesize 50 -f H264 -i pipe: -flags +global_header -c:v copy -movflags +empty_moov+default_base_moof+frag_keyframe -muxdelay 0 -muxpreload 0 -map 0:v -f tee [f=rtsp:rtsp_transport=tcp:bsfs/v=dump_extra=freq=keyframe]rtsp://0.0.0.0:8554/living-room|[onfail=ignore:f=segment:bsfs/v=dump_extra=freq=keyframe:segment_time=1800:segment_atclocktime=1:segment_format=mp4:reset_timestamps=1:strftime=1:use_fifo=1]/record/living-room/living-room_%Y-%m-%d_%H-%M-%S_%Z.mp4
frame=    0 fps=0.0 q=-1.0 size=       0kB time=N/A bitrate=N/A speed=N/A    
ffmpeg version N-111615-g60244d0bec-20230724 Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 13.1.0 (crosstool-NG 1.25.0.196_227d99d)
  configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-ffbuild-linux-gnu- --arch=x86_64 --target-os=linux --enable-gpl --enable-version3 --disable-debug --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-openssl --enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl --enable-libpulse --enable-libvmaf --enable-libxcb --enable-xlib --enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth --enable-chromaprint --enable-libdav1d --enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable-libkvazaar --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --enable-libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --disable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --enable-libdrm --enable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags=-pie --extra-libs='-ldl -lgomp' --extra-version=20230724
  libavutil      58. 14.100 / 58. 14.100
  libavcodec     60. 22.100 / 60. 22.100
  libavformat    60. 10.100 / 60. 10.100
  libavdevice    60.  2.101 / 60.  2.101
  libavfilter     9. 10.100 /  9. 10.100
  libswscale      7.  3.100 /  7.  3.100
  libswresample   4. 11.100 /  4. 11.100
  libpostproc    57.  2.100 / 57.  2.100
ffmpeg version N-111615-g60244d0bec-20230724 Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 13.1.0 (crosstool-NG 1.25.0.196_227d99d)
  configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-ffbuild-linux-gnu- --arch=x86_64 --target-os=linux --enable-gpl --enable-version3 --disable-debug --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-openssl --enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl --enable-libpulse --enable-libvmaf --enable-libxcb --enable-xlib --enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth --enable-chromaprint --enable-libdav1d --enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable-libkvazaar --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --enable-libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --disable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --enable-libdrm --enable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags=-pie --extra-libs='-ldl -lgomp' --extra-version=20230724
  libavutil      58. 14.100 / 58. 14.100
  libavcodec     60. 22.100 / 60. 22.100
  libavformat    60. 10.100 / 60. 10.100
  libavdevice    60.  2.101 / 60.  2.101
  libavfilter     9. 10.100 /  9. 10.100
  libswscale      7.  3.100 /  7.  3.100
  libswresample   4. 11.100 /  4. 11.100
  libpostproc    57.  2.100 / 57.  2.100
[wyze-doorbell] WARNING: Skipping smaller frame at start of stream (frame_size=4)
[living-room] WARNING: Skipping smaller frame at start of stream (frame_size=1)
frame=    0 fps=0.0 q=-1.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=N/A    
[tee @ 0x561fddee44c0] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
[segment @ 0x561fdded6ac0] segment:'/record/deck/deck_2023-07-27_01-46-39_UTC.mp4' starts with packet stream:0 pts:0 pts_time:0 frame:0
[h264 @ 0x5597f05c3e40] Reinit context to 1920x1088, pix_fmt: yuv420p
[h264 @ 0x560b450b4e40] Reinit context to 1920x1088, pix_fmt: yuv420p
[h264 @ 0x5594111d3e40] Reinit context to 1920x1088, pix_fmt: yuv420p
[h264 @ 0x5597f05b22c0] Stream #0: not enough frames to estimate rate; consider increasing probesize
[vist#0:0/h264 @ 0x5597f05dbe00] WARNING: defaulting hwaccel_output_format to qsv for compatibility with old commandlines. This behaviour is DEPRECATED and will be removed in the future. Please explicitly set "-hwaccel_output_format qsv".
Selecting decoder 'h264_qsv' because of requested hwaccel method qsv
Input #0, h264, from 'pipe:':
  Duration: N/A, bitrate: N/A
  Stream #0:0: Video: h264 (Main), 1 reference frame, yuv420p(tv, bt709, progressive, left), 1920x1080 (1920x1088), 25 fps, 40 tbr, 1200k tbn
[out#0/tee @ 0x5597f05d63c0] Adding streams from explicit maps...
[vost#0:0/copy @ 0x5597f0641900] Created video stream from input stream 0:0
[out#0/tee @ 0x5597f05d63c0] Codec AVOption flags () has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
[tcp @ 0x5597f063ff40] Starting connection attempt to 0.0.0.0 port 8554
[tcp @ 0x5597f063ff40] Successfully connected to 0.0.0.0 port 8554
[rtsp @ 0x5597f0640100] SDP:
v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4 127.0.0.1
t=0 0
a=tool:libavformat 60.10.100
m=video 0 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1; sprop-parameter-sets=J00AKedAPAET8s1AQEB8AAADAAQAAAMAoMkAAr8gAEHrf/8CgA==,KO48gAA=; profile-level-id=4D0029
a=control:streamid=0

[h264 @ 0x5594111c22c0] Stream #0: not enough frames to estimate rate; consider increasing probesize
[vist#0:0/h264 @ 0x5594111eb940] WARNING: defaulting hwaccel_output_format to qsv for compatibility with old commandlines. This behaviour is DEPRECATED and will be removed in the future. Please explicitly set "-hwaccel_output_format qsv".
Selecting decoder 'h264_qsv' because of requested hwaccel method qsv
Input #0, h264, from 'pipe:':
  Duration: N/A, bitrate: N/A
  Stream #0:0: Video: h264 (Main), 1 reference frame, yuv420p(tv, bt709, progressive, left), 1920x1080 (1920x1088), 25 fps, 40 tbr, 1200k tbn
[out#0/tee @ 0x5594111eb100] Adding streams from explicit maps...
[vost#0:0/copy @ 0x559411287540] Created video stream from input stream 0:0
[out#0/tee @ 0x5594111eb100] Codec AVOption flags () has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
[tcp @ 0x559411259400] Starting connection attempt to 0.0.0.0 port 8554
[tcp @ 0x559411259400] Successfully connected to 0.0.0.0 port 8554
[rtsp @ 0x559411286ac0] SDP:
v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4 127.0.0.1
t=0 0
a=tool:libavformat 60.10.100
m=video 0 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1; sprop-parameter-sets=J00AKedAPAET8s1AQEB8AAADAAQAAAMAoMkAAr8gAEHrf/8CgA==,KO48gAA=; profile-level-id=4D0029
a=control:streamid=0

[h264 @ 0x560b450a32c0] Stream #0: not enough frames to estimate rate; consider increasing probesize
[vist#0:0/h264 @ 0x560b450cce00] WARNING: defaulting hwaccel_output_format to qsv for compatibility with old commandlines. This behaviour is DEPRECATED and will be removed in the future. Please explicitly set "-hwaccel_output_format qsv".
Selecting decoder 'h264_qsv' because of requested hwaccel method qsv
Input #0, h264, from 'pipe:':
  Duration: N/A, bitrate: N/A
  Stream #0:0: Video: h264 (Main), 1 reference frame, yuv420p(tv, bt709, progressive, left), 1920x1080 (1920x1088), 25 fps, 40 tbr, 1200k tbn
[out#0/tee @ 0x560b450cacc0] Adding streams from explicit maps...
[vost#0:0/copy @ 0x560b4513b300] Created video stream from input stream 0:0
[out#0/tee @ 0x560b450cacc0] Codec AVOption flags () has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
[tcp @ 0x560b45168580] Starting connection attempt to 0.0.0.0 port 8554
[tcp @ 0x560b45168580] Successfully connected to 0.0.0.0 port 8554
[rtsp @ 0x560b450cbb00] SDP:
v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4 127.0.0.1
t=0 0
a=tool:libavformat 60.10.100
m=video 0 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1; sprop-parameter-sets=J00AKedAPAET8s1AQEB8AAADAAQAAAMAoMkAAr8gAEHrf/8CgA==,KO48gAA=; profile-level-id=4D0029
a=control:streamid=0

[tee @ 0x5597f05d5a40] filename:'rtsp://0.0.0.0:8554/shed' format:rtsp
[tee @ 0x5597f05d5a40]     stream:0 codec:h264 type:video bsfs: AVBSFContext
[tee @ 0x5597f05d5a40] filename:'/record/shed/shed_%Y-%m-%d_%H-%M-%S_%Z.mp4' format:fifo
[tee @ 0x5597f05d5a40]     stream:0 codec:h264 type:video bsfs: AVBSFContext
Output #0, tee, to '[f=rtsp:rtsp_transport=tcp:bsfs/v=dump_extra=freq=keyframe]rtsp://0.0.0.0:8554/shed|[onfail=ignore:f=segment:bsfs/v=dump_extra=freq=keyframe:segment_time=1800:segment_atclocktime=1:segment_format=mp4:reset_timestamps=1:strftime=1:use_fifo=1]/record/shed/shed_%Y-%m-%d_%H-%M-%S_%Z.mp4':
  Metadata:
    encoder         : Lavf60.10.100
  Stream #0:0: Video: h264 (Main), 1 reference frame, yuv420p(tv, bt709, progressive, left), 1920x1080 (0x0), q=2-31, 25 fps, 40 tbr, 20 tbn
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
[segment @ 0x5597f05d8500] Selected stream id:0 type:video
[segment @ 0x5597f05d8500] Opening '/record/shed/shed_2023-07-27_01-46-40_UTC.mp4' for writing
[WyzeBridge] ✅ '/shed stream is UP! (3/3)
[tee @ 0x5594111eab00] filename:'rtsp://0.0.0.0:8554/kitchen' format:rtsp
[tee @ 0x5594111eab00]     stream:0 codec:h264 type:video bsfs: AVBSFContext
[tee @ 0x5594111eab00] filename:'/record/kitchen/kitchen_%Y-%m-%d_%H-%M-%S_%Z.mp4' format:fifo
[tee @ 0x5594111eab00]     stream:0 codec:h264 type:video bsfs: AVBSFContext
Output #0, tee, to '[f=rtsp:rtsp_transport=tcp:bsfs/v=dump_extra=freq=keyframe]rtsp://0.0.0.0:8554/kitchen|[onfail=ignore:f=segment:bsfs/v=dump_extra=freq=keyframe:segment_time=1800:segment_atclocktime=1:segment_format=mp4:reset_timestamps=1:strftime=1:use_fifo=1]/record/kitchen/kitchen_%Y-%m-%d_%H-%M-%S_%Z.mp4':
  Metadata:
    encoder         : Lavf60.10.100
  Stream #0:0: Video: h264 (Main), 1 reference frame, yuv420p(tv, bt709, progressive, left), 1920x1080 (0x0), q=2-31, 25 fps, 40 tbr, 20 tbn
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
[segment @ 0x5594111e5e80] Selected stream id:0 type:video
[segment @ 0x5594111e5e80] Opening '/record/kitchen/kitchen_2023-07-27_01-46-40_UTC.mp4' for writing
[WyzeBridge] ✅ '/kitchen stream is UP! (3/3)
[tee @ 0x560b450cae00] filename:'rtsp://0.0.0.0:8554/dog-cam-2' format:rtsp
[tee @ 0x560b450cae00]     stream:0 codec:h264 type:video bsfs: AVBSFContext
[tee @ 0x560b450cae00] filename:'/record/dog-cam-2/dog-cam-2_%Y-%m-%d_%H-%M-%S_%Z.mp4' format:fifo
[tee @ 0x560b450cae00]     stream:0 codec:h264 type:video bsfs: AVBSFContext
Output #0, tee, to '[f=rtsp:rtsp_transport=tcp:bsfs/v=dump_extra=freq=keyframe]rtsp://0.0.0.0:8554/dog-cam-2|[onfail=ignore:f=segment:bsfs/v=dump_extra=freq=keyframe:segment_time=1800:segment_atclocktime=1:segment_format=mp4:reset_timestamps=1:strftime=1:use_fifo=1]/record/dog-cam-2/dog-cam-2_%Y-%m-%d_%H-%M-%S_%Z.mp4':
  Metadata:
    encoder         : Lavf60.10.100
  Stream #0:0: Video: h264 (Main), 1 reference frame, yuv420p(tv, bt709, progressive, left), 1920x1080 (0x0), q=2-31, 25 fps, 40 tbr, 20 tbn
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
[WyzeBridge] ✅ '/dog-cam-2 stream is UP! (3/3)
[segment @ 0x560b450c6300] Selected stream id:0 type:video
[segment @ 0x560b450c6300] Opening '/record/dog-cam-2/dog-cam-2_2023-07-27_01-46-40_UTC.mp4' for writing
frame=    0 fps=0.0 q=-1.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=N/A    
[tee @ 0x560b450cae00] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
[segment @ 0x560b450c6300] segment:'/record/dog-cam-2/dog-cam-2_2023-07-27_01-46-40_UTC.mp4' starts with packet stream:0 pts:0 pts_time:0 frame:0
[h264 @ 0x55a6c49620c0] Reinit context to 1728x1296, pix_fmt: yuv420p
[h264 @ 0x55a6c49507c0] Stream #0: not enough frames to estimate rate; consider increasing probesize
[vist#0:0/h264 @ 0x55a6c4965ec0] WARNING: defaulting hwaccel_output_format to qsv for compatibility with old commandlines. This behaviour is DEPRECATED and will be removed in the future. Please explicitly set "-hwaccel_output_format qsv".
Selecting decoder 'h264_qsv' because of requested hwaccel method qsv
Input #0, h264, from 'pipe:':
  Duration: N/A, bitrate: N/A
  Stream #0:0: Video: h264 (Main), 1 reference frame, yuv420p(tv, unknown/bt709/unknown, progressive, left), 1728x1296, 25 fps, 40 tbr, 1200k tbn
[out#0/tee @ 0x55a6c497ad00] Adding streams from explicit maps...
[vost#0:0/h264_qsv @ 0x55a6c49e98c0] Created video stream from input stream 0:0
[AVHWDeviceContext @ 0x55a6c497a380] Trying to use DRM render node for device 0, with matching kernel driver (i915).
[AVHWDeviceContext @ 0x55a6c497a380] libva: VA-API version 1.17.0
[AVHWDeviceContext @ 0x55a6c497a380] libva: User requested driver 'iHD'
[AVHWDeviceContext @ 0x55a6c497a380] libva: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
[AVHWDeviceContext @ 0x55a6c497a380] libva: Found init function __vaDriverInit_1_17
[AVHWDeviceContext @ 0x55a6c497a380] libva: va_openDriver() returns 0
[AVHWDeviceContext @ 0x55a6c497a380] Initialised VAAPI connection: version 1.17
[AVHWDeviceContext @ 0x55a6c497a380] VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 23.1.1 ().
[AVHWDeviceContext @ 0x55a6c497a380] Driver not found in known nonstandard list, using standard behaviour.
[AVHWDeviceContext @ 0x55a6c4979f00] Use Intel(R) oneVPL to create MFX session, API version is 2.9, the required implementation version is 1.3
[AVHWDeviceContext @ 0x55a6c4979f00] Initialize MFX session: implementation version is 1.35
[h264_mp4toannexb @ 0x55a6c4a49ec0] The input looks like it is Annex B already
[out#0/tee @ 0x55a6c497ad00] Codec AVOption forced-idr (If forcing keyframes, force them as IDR frames.) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
[out#0/tee @ 0x55a6c497ad00] Codec AVOption coder (Coder type) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (h264_qsv) -> h264 (h264_qsv))
frame=    0 fps=0.0 q=-1.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=N/A    
[tee @ 0x5594111eab00] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
[segment @ 0x5594111e5e80] segment:'/record/kitchen/kitchen_2023-07-27_01-46-40_UTC.mp4' starts with packet stream:0 pts:0 pts_time:0 frame:0
[graph 0 input from stream 0:0 @ 0x55ff5baecc00] w:1728 h:1296 pixfmt:qsv tb:1/1200000 fr:20/1 sar:0/1
[AVHWDeviceContext @ 0x55ff5baeb2c0] VAAPI driver: Intel iHD driver for Intel(R) Gen Graphics - 23.1.1 ().
[AVHWDeviceContext @ 0x55ff5baeb2c0] Driver not found in known nonstandard list, using standard behaviour.
[Parsed_vpp_qsv_0 @ 0x55ff5baec1c0] Use Intel(R) oneVPL to create MFX session with the specified MFX loader
[Parsed_vpp_qsv_0 @ 0x55ff5baec1c0] VPP: input is video memory surface
[Parsed_vpp_qsv_0 @ 0x55ff5baec1c0] VPP: output is video memory surface
[h264_qsv @ 0x55ff5ba8b600] Using input frames context (format qsv) with h264_qsv encoder.
[h264_qsv @ 0x55ff5ba8b600] Encoder: input is video memory surface
[h264_qsv @ 0x55ff5ba8b600] Use Intel(R) oneVPL to create MFX session with the specified MFX loader
[h264_qsv @ 0x55ff5ba8b600] Using the constant bitrate (CBR) ratecontrol method
[h264_qsv @ 0x55ff5ba8b600] Selected ratecontrol mode is unsupported
[h264_qsv @ 0x55ff5ba8b600] some encoding parameters are not supported by the QSV runtime. Please double check the input parameters.
[vost#0:0/h264_qsv @ 0x55ff5ba8d040] Error while opening encoder - maybe incorrect parameters such as bit_rate, rate, width or height.
Error while filtering: Function not implemented
[vist#0:0/h264 @ 0x55ff5ba01ec0] Decoder thread received EOF packet
frame=    0 fps=0.0 q=-1.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=N/A    
[tee @ 0x5597f05d5a40] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
[segment @ 0x5597f05d8500] segment:'/record/shed/shed_2023-07-27_01-46-40_UTC.mp4' starts with packet stream:0 pts:0 pts_time:0 frame:0
[h264_qsv @ 0x55ff5ba11080] A decode call did not consume any data: expect more data at input (-10)
    Last message repeated 2 times
[vist#0:0/h264 @ 0x55ff5ba01ec0] Decoder returned EOF, finishing
[vist#0:0/h264 @ 0x55ff5ba01ec0] Terminating decoder thread
[out#0/tee @ 0x55ff5ba02640] Nothing was written into output file, because at least one of its streams received no packets.
frame=    0 fps=0.0 q=0.0 Lsize=       0kB time=N/A bitrate=N/A speed=N/A    
[in#0/h264 @ 0x55ff5b9ec640] Terminating demuxer thread
[in#0/h264 @ 0x55ff5b9ec640] Input file #0 (pipe:):
[in#0/h264 @ 0x55ff5b9ec640]   Input stream #0:0 (video): 22 packets read (149798 bytes); 20 frames decoded; 0 decode errors; 
[in#0/h264 @ 0x55ff5b9ec640]   Total: 22 packets (149798 bytes) demuxed
[AVIOContext @ 0x55ff5b9fd940] Statistics: 243194 bytes read, 0 seeks
Conversion failed!
frame=    0 fps=0.0 q=-1.0 size=       0kB time=00:00:02.00 bitrate=   0.0kbits/s speed=1.27x    
[tee @ 0x558cae482b80] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
[segment @ 0x558cae481540] segment:'/record/garage/garage_2023-07-27_01-46-39_UTC.mp4' starts with packet stream:0 pts:19968 pts_time:1.95 frame:0
[front-door] FFMPEG stopped
chris001 commented 11 months ago

What's the output of vainfo ?

mitchross commented 11 months ago

What's the output of vainfo ?

stated earlier/ extra context - I have zero issues with Frigate container . QSV works, GPU acceleration works, etc

no VA info in the container

root@wyze-bridge-59f7d6df66-jmxbz:/app# vainfo
bash: vainfo: command not found
root@wyze-bridge-59f7d6df66-jmxbz:/app#

On the nuc itself

vanillax@k3s-worker-nuc-1:~$ sudo vainfo
[sudo] password for vanillax:
error: XDG_RUNTIME_DIR is invalid or not set in the environment.
PuTTY X11 proxy: Unsupported authorisation protocol

error: can't connect to X server!
libva info: VA-API version 1.17.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_17
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.17 (libva 2.12.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 23.1.2 ()
vainfo: Supported profile and entrypoints
      VAProfileNone                   : VAEntrypointVideoProc
      VAProfileNone                   : VAEntrypointStats
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSliceLP
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSliceLP
      VAProfileJPEGBaseline           : VAEntrypointVLD
      VAProfileJPEGBaseline           : VAEntrypointEncPicture
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
      VAProfileVP8Version0_3          : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointEncSliceLP
      VAProfileHEVCMain10             : VAEntrypointVLD
      VAProfileHEVCMain10             : VAEntrypointEncSliceLP
      VAProfileVP9Profile0            : VAEntrypointVLD
      VAProfileVP9Profile1            : VAEntrypointVLD
      VAProfileVP9Profile2            : VAEntrypointVLD
      VAProfileVP9Profile3            : VAEntrypointVLD
      VAProfileHEVCMain422_10         : VAEntrypointVLD
      VAProfileHEVCMain444            : VAEntrypointVLD
      VAProfileHEVCMain444            : VAEntrypointEncSliceLP
      VAProfileHEVCMain444_10         : VAEntrypointVLD
      VAProfileHEVCMain444_10         : VAEntrypointEncSliceLP
vanillax@k3s-worker-nuc-1:~$
mrlt8 commented 11 months ago

Added vainfo and intel-gpu-tools as well as i965-va-driver and i965-va-driver-shaders as an extra step to the dev-qsv image.

Testing would be appreciated.

mrlt8 commented 11 months ago

new dev-qsv image should be up.

mitchross commented 11 months ago

root@wyze-bridge-b45bfb685-6vfrp:/app# vainfo bash: vainfo: command not found root@wyze-bridge-b45bfb685-6vfrp:/app# intel_gpu_top bash: intel_gpu_top: command not found root@wyze-bridge-b45bfb685-6vfrp:/app#

mrlt8 commented 11 months ago

should be available in the latest dev-qsv

mitchross commented 11 months ago

Ok now its there ..... ROTATE DOOR still does not work with

vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 23.1.1 () vainfo: Supported profile and entrypoints VAProfileNone : VAEntrypointVideoProc VAProfileNone : VAEntrypointStats VAProfileMPEG2Simple : VAEntrypointVLD VAProfileMPEG2Main : VAEntrypointVLD VAProfileH264Main : VAEntrypointVLD VAProfileH264Main : VAEntrypointEncSliceLP VAProfileH264High : VAEntrypointVLD VAProfileH264High : VAEntrypointEncSliceLP VAProfileVC1Simple : VAEntrypointVLD VAProfileVC1Main : VAEntrypointVLD VAProfileVC1Advanced : VAEntrypointVLD VAProfileJPEGBaseline : VAEntrypointVLD VAProfileJPEGBaseline : VAEntrypointEncPicture VAProfileH264ConstrainedBaseline: VAEntrypointVLD VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP VAProfileVP8Version0_3 : VAEntrypointVLD VAProfileHEVCMain : VAEntrypointVLD VAProfileHEVCMain : VAEntrypointEncSliceLP VAProfileHEVCMain10 : VAEntrypointVLD VAProfileHEVCMain10 : VAEntrypointEncSliceLP VAProfileVP9Profile0 : VAEntrypointVLD VAProfileVP9Profile1 : VAEntrypointVLD VAProfileVP9Profile2 : VAEntrypointVLD VAProfileVP9Profile3 : VAEntrypointVLD VAProfileHEVCMain422_10 : VAEntrypointVLD VAProfileHEVCMain444 : VAEntrypointVLD VAProfileHEVCMain444 : VAEntrypointEncSliceLP VAProfileHEVCMain444_10 : VAEntrypointVLD VAProfileHEVCMain444_10 : VAEntrypointEncSliceLP root@wyze-bridge-55bd658b54-rqbj5:/app#

392media commented 11 months ago

@mitchross I see you have multiple cameras. Could you test if it works when serving only the doorbell? I suspect there could be some function limit on different CPU. For me, QSV decode-rotation-encode doesn't work on an i5-6500T but VAAPI works. But QSV works on an i7-7600. My docker system is Unraid.

392media commented 11 months ago

@mrlt8 It seems the code convert all letters to lower case for the FFMPEG_CMD variable? If so this might break something where a parameter needs capital letters.

mrlt8 commented 11 months ago

@392media FFMPEG_CMD should be case sensitive now

carldanley commented 9 months ago

Anything I can do to help bump this? I've been running dev-qsv since I commented on the PR awhile ago; everything seems to work well on my end - not sure that is helpful feedback though?

lygris commented 9 months ago

Anything I can do to help bump this? I've been running dev-qsv since I commented on the PR awhile ago; everything seems to work well on my end - not sure that is helpful feedback though?

I've been running it for awhile as well and was hoping we would get the rotate video piece working so my doorbell video is normal again. other than rotate, it has worked flawlessly

mitchross commented 8 months ago

Anything I can do to help bump this? I've been running dev-qsv since I commented on the PR awhile ago; everything seems to work well on my end - not sure that is helpful feedback though?

I've been running it for awhile as well and was hoping we would get the rotate video piece working so my doorbell video is normal again. other than rotate, it has worked flawlessly

Can you share your env configs ?

lygris commented 7 months ago

Anything I can do to help bump this? I've been running dev-qsv since I commented on the PR awhile ago; everything seems to work well on my end - not sure that is helpful feedback though?

I've been running it for awhile as well and was hoping we would get the rotate video piece working so my doorbell video is normal again. other than rotate, it has worked flawlessly

Can you share your env configs ?

Sorry I missed your reply for so long. Running this on unraid so the format is a little weird but here's the env configs

`**

************** True 5000 10.0.6.38 False HD120 True False h264_qsv 8189 8889 8888 1935 8554 LAN`
Thatindianbruh commented 6 months ago

Anything I can do to help bump this? I've been running dev-qsv since I commented on the PR awhile ago; everything seems to work well on my end - not sure that is helpful feedback though?

I've been running it for awhile as well and was hoping we would get the rotate video piece working so my doorbell video is normal again. other than rotate, it has worked flawlessly

Can you share your env configs ?

Sorry I missed your reply for so long. Running this on unraid so the format is a little weird but here's the env configs

<Config Name="WYZE_EMAIL" Target="WYZE_EMAIL" Default="" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">******************</Config> <Config Name="WYZE_PASSWORD" Target="WYZE_PASSWORD" Default="" Mode="" Description="" Type="Variable" Display="always" Required="true" Mask="false">**************</Config> <Config Name="Fresh Data" Target="FRESH_DATA" Default="" Mode="" Description="" Type="Variable" Display="always" Required="false" Mask="false">True</Config> <Config Name="WebUI" Target="5000" Default="5000" Mode="tcp" Description="" Type="Port" Display="always" Required="false" Mask="false">5000</Config> <Config Name="WB_IP" Target="WB_IP" Default="" Mode="" Description="WB_IP env needs to be set with the IP address of the server running the bridge." Type="Variable" Display="always" Required="false" Mask="false">10.0.6.38</Config> <Config Name="Rotate" Target="ROTATE_DOOR" Default="" Mode="" Description="" Type="Variable" Display="always" Required="false" Mask="false">False</Config> <Config Name="QUALITY" Target="QUALITY" Default="" Mode="" Description="" Type="Variable" Display="always" Required="false" Mask="false">HD120</Config> <Config Name="Audio" Target="ENABLE_AUDIO" Default="" Mode="" Description="" Type="Variable" Display="always" Required="false" Mask="false">True</Config> <Config Name="persistant" Target="ON_DEMAND" Default="" Mode="" Description="" Type="Variable" Display="always" Required="false" Mask="false">False</Config> <Config Name="H264_ENC" Target="H264_ENC" Default="" Mode="" Description="" Type="Variable" Display="always" Required="false" Mask="false">h264_qsv</Config> <Config Name="WebRTC/ICE" Target="8189" Default="8189" Mode="udp" Description="" Type="Port" Display="advanced" Required="false" Mask="false">8189</Config> <Config Name="WebRTC" Target="8889" Default="8889" Mode="tcp" Description="" Type="Port" Display="advanced" Required="false" Mask="false">8889</Config> <Config Name="HLS Port" Target="8888" Default="8888" Mode="tcp" Description="" Type="Port" Display="advanced" Required="false" Mask="false">8888</Config> <Config Name="RTMP Port" Target="1935" Default="1935" Mode="tcp" Description="" Type="Port" Display="advanced" Required="false" Mask="false">1935</Config> <Config Name="RTSP Port" Target="8554" Default="8554" Mode="tcp" Description="" Type="Port" Display="advanced" Required="false" Mask="false">8554</Config> <Config Name="Net_Mode" Target="LAN" Default="LAN" Mode="" Description="https://github.com/mrlt8/docker-wyze-bridge#LAN-Mode" Type="Variable" Display="advanced" Required="false" Mask="false">LAN</Config>

Config Name Target Default Mode Value
WYZE_EMAIL WYZE_EMAIL **
WYZE_PASSWORD WYZE_PASSWORD *****
Fresh Data FRESH_DATA True
WebUI 5000 5000 tcp 5000
WB_IP WB_IP 10.0.6.38
Rotate ROTATE_DOOR False
QUALITY QUALITY HD120
Audio ENABLE_AUDIO True
persistant ON_DEMAND False
H264_ENC H264_ENC h264_qsv
WebRTC/ICE 8189 8189 udp 8189
WebRTC 8889 8889 tcp 8889
HLS Port 8888 8888 tcp 8888
RTMP Port 1935 1935 tcp 1935
RTSP Port 8554 8554 tcp 8554
Net_Mode LAN LAN LAN

converted it to markdown for easier reading and remove irrelevant columns.

I tried your settings and they work as is, but break when rotate door is set to true. I think the goal for quicksync was to rotate the door camera and use less resources.

@mitchross any ideas?

dnikles commented 2 weeks ago

Is there anything beyond pulling latest-qsv, and using environment variable H264_ENC=h264_qsv needed to get this working? I've done this and mapped /dev/dri:/dev/dri but it doesn't seem like it's using qsv. I don't see anything about it in logs and I don't see any activity using intel_gpu_top. I don't have any errors, it's working, but I don't think it's using hardware acceleration.

mitchross commented 2 weeks ago

Is there anything beyond pulling latest-qsv, and using environment variable H264_ENC=h264_qsv needed to get this working? I've done this and mapped /dev/dri:/dev/dri but it doesn't seem like it's using qsv. I don't see anything about it in logs and I don't see any activity using intel_gpu_top. I don't have any errors, it's working, but I don't think it's using hardware acceleration.

i haven't worked on it in a while. gave up and bought nest cameras