frigate: [Support]: Unable to playback h265 recordings in modern interface.

Describe the problem you are having

Unable to playback h265 clips and recordings in the updated viewer. Works fine with older (0.8.4) version. Browsers throws an error, and has to be refeshed to select anything else on the page. “Playback cannot continue. No available working or supported playlists.”

Tested on version 0.8.4 the file plays - Section information is: <video aria-label="Clip for event 1642337897.940771-5jkjlw" autoplay="true" class="w-100" src="http://cctv.mylocalworkdomain.network:5000/clips/01_Foyer-1642337897.940771-5jkjlw.mp4" controls=""></video>

The home / non working one shows: <video class="vjs-tech" playsinline="playsinline" id="vjs_video_1495_html5_api" tabindex="-1" preload="none" src="blob:http://192.168.12.207:5000/33322245-4a30-4730-84f1-2281bd97cada"></video>

The video URL allows the file to playback with no problems. http://192.168.12.207:5000/api/events/1642372025.240855-6tjtap/clip.mp4

streaming is working fine in the browser, and i can see a live view.

Version

Tested on 0.9.4 and 0.10.0

Frigate config file

mqtt:
  host: 192.168.12.201
  port: 1883
detectors:
  coral1:
    type: edgetpu
    device: pci
  coral2:
    type: edgetpu
    device: pci:1
snapshots:
  retain:
    default: 1
database:
  path: /media/frigate/clips/database/frigate.db
objects:
  track:
    - person
record:
  enabled: true
  retain_days: 0
  events:
    max_seconds: 300
    pre_capture: 5
    post_capture: 20
    retain:
      default: 1
logger:
  default: warning
cameras:
  porch:
    ffmpeg:
      inputs:
        - path: rtsp://USER:PASS@192.168.12.6:554/Streaming/Channels/102
          roles:
            - detect
        - path: rtsp://USER:PASS@192.168.12.6:554/Streaming/Channels/101
          roles:
            - record
    detect:        
      width: 640
      height: 480
      fps: 8
    record:
      enabled: true
      retain_days: 1
      events:
        max_seconds: 300
        pre_capture: 15
        post_capture: 45
        retain:
          default: 1
    rtmp:
      enabled: False
    snapshots:
      enabled: True
    mqtt:
      enabled: True
      timestamp: True
      crop: True
    motion:
      mask:
      - 545,480,640,480,640,420,578,448
  diningroom:
    ffmpeg:
      inputs:
        - path: rtsp://USER:PASSant@192.168.12.7:8554/live1.264
          roles:
            - detect
        - path: rtsp://USER:PASSant@192.168.12.7:8554/live0.264
          roles:
            - record
    rtmp:
      enabled: False
    detect:        
      width: 768
      height: 432
      fps: 8
    record:
      enabled: true
      retain_days: 0
      events:
        retain:
          default: 1
    snapshots:
      enabled: True
    mqtt:
      enabled: True
      timestamp: True
      crop: True
  bedroom:
    ffmpeg:
      inputs:
        - path: rtsp://USER:PASSant@192.168.12.8:8554/live1.264
          roles:
            - detect
        - path: rtsp://USER:PASSant@192.168.12.8:8554/live0.264
          roles:
            - record
    detect:        
      width: 768
      height: 432
      fps: 8
    record:
      enabled: true
      retain_days: 0
      events:
        retain:
          default: 1
    rtmp:
      enabled: False
    snapshots:
      enabled: True
    mqtt:
      enabled: True
      timestamp: True
      crop: True
  livingroom:
    ffmpeg:
      inputs:
        - path: rtsp://USER:PASSant@192.168.12.10:8554/live1.264
          roles:
            - detect
        - path: rtsp://USER:PASSant@192.168.12.10:8554/live0.264
          roles:
            - record
    detect:        
      width: 768
      height: 432
      fps: 8
    record:
      enabled: true
      retain_days: 0
      events:
        retain:
          default: 1
    rtmp:
      enabled: False
    snapshots:
      enabled: True
    mqtt:
      enabled: True
      timestamp: True
      crop: True
  landing:
    ffmpeg:
      inputs:
        - path: rtsp://USER:PASSant@192.168.12.9:8554/live1.264
          roles:
            - detect
        - path: rtsp://USER:PASSant@192.168.12.9:8554/live0.264
          roles:
            - record
    detect:        
      width: 768
      height: 432
      fps: 8
    record:
      enabled: true
      retain_days: 0
      events:
        retain:
          default: 1
    rtmp:
      enabled: False
    snapshots:
      enabled: True
    mqtt:
      enabled: True
      timestamp: True
      crop: True
  kitchen:
    ffmpeg:
      inputs:
        - path: rtsp://USER:PASS@192.168.12.5:8554/unicast
          roles:
            - detect
            - record 
    detect:        
      width: 1280
      height: 720
      fps: 8
    record:
      enabled: true
      retain_days: 0
      events:
        retain:
          default: 1
    rtmp:
      enabled: False
    snapshots:
      enabled: True
    mqtt:
      enabled: True
      timestamp: True
      crop: True
  backdoor:
    ffmpeg:
      inputs:
        - path: rtsp://USER:PASS@192.168.12.3:8554/unicast
          roles:
            - detect
            - record 
    detect:        
      width: 1280
      height: 720
      fps: 8
    record:
      enabled: true
      retain_days: 0
      events:
        retain:
          default: 1
    rtmp:
      enabled: False
    snapshots:
      enabled: True
    mqtt:
      enabled: True
      timestamp: True
      crop: True
  babycam:
    ffmpeg:
      inputs:
        - path: rtsp://USER:PASS@192.168.12.4:8554/unicast
          roles:
            - detect
            - record 
    detect:        
      width: 1280
      height: 720
      fps: 8
    zones:
      cot:
        coordinates: 361,669,956,660,949,376,368,382
    objects:
      filters:
        person:
          min_score: 0.4
          threshold: 0.5
    record:
      enabled: true
      retain_days: 1
      events:
        retain:
          default: 1
    rtmp:
      enabled: False
    snapshots:
      enabled: True
    mqtt:
      enabled: True
      timestamp: True
      crop: True

Relevant log output

access.log:
192.168.10.123 - - [16/Jan/2022:23:26:49 +0000] "GET /api/events/1642372025.240855-6tjtap HTTP/1.1" 200 5604 "http://192.168.12.207:5000/events?camera=porch" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Edg/97.0.1072.55" "-"
192.168.10.123 - - [16/Jan/2022:23:26:49 +0000] "GET /api/events/1642372025.240855-6tjtap/snapshot.jpg HTTP/1.1" 200 27832 "http://192.168.12.207:5000/events?camera=porch" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Edg/97.0.1072.55" "-"
192.168.12.202 - - [16/Jan/2022:23:27:26 +0000] "GET /api/stats HTTP/1.1" 200 1556 "-" "HomeAssistant/2021.12.8 aiohttp/3.8.1 Python/3.9" "-"

error.log:
2022/01/16 22:18:30 [error] 202#202: *7 no live upstreams while connecting to upstream, client: 192.168.10.123, server: , request: "GET /api/config HTTP/1.1", upstream: "http://frigate_api/config", host: "192.168.12.207:5000", referrer: "http://192.168.12.207:5000/events?camera=porch"

FFprobe output from your camera

ffprobe version 4.3.1 Copyright (c) 2007-2020 the FFmpeg developers
  built with gcc 9 (Ubuntu 9.3.0-17ubuntu1~20.04)
  configuration: --disable-debug --disable-doc --disable-ffplay --enable-shared --enable-avresample --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-gpl --enable-libfreetype --enable-libvidstab --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libxcb --enable-libx265 --enable-libxvid --enable-libx264 --enable-nonfree --enable-openssl --enable-libfdk_aac --enable-postproc --enable-small --enable-version3 --enable-libzmq --extra-libs=-ldl --prefix=/opt/ffmpeg --enable-libopenjpeg --enable-libkvazaar --enable-libaom --extra-libs=-lpthread --enable-libsrt --enable-libaribb24 --enable-nvenc --enable-cuda --enable-cuvid --enable-libnpp --extra-cflags='-I/opt/ffmpeg/include -I/opt/ffmpeg/include/ffnvcodec -I/usr/local/cuda/include/' --extra-ldflags='-L/opt/ffmpeg/lib -L/usr/local/cuda/lib64 -L/usr/local/cuda/lib32/'
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
Input #0, rtsp, from 'rtsp://USER:PASS@192.168.12.6:554/Streaming/Channels/101':
  Metadata:
    title           : Media Presentation
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: hevc, yuvj420p(pc), 3840x2160 [SAR 1:1 DAR 16:9], 12.50 tbr, 90k tbn, 90k tbc
    Stream #0:1: Audio: pcm_mulaw, 8000 Hz, 1 channels, s16, 64 kb/s

Frigate stats

No response

Operating system

UNRAID

Install method

Docker CLI

Coral version

PCIe

Network connection

Wired

Camera make and model

hikvision I91BM

Any other information that may be helpful

No response

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Comments: 67 (22 by maintainers)

Most upvoted comments

Looking forward to the conversion capability. Hopefully, it won’t affect hosting hardware requirements significantly. Will have to switch to another software for now.

I guess it could be on that page too, but it is called out at the top of https://docs.frigate.video/guides/camera_setup/ and https://docs.frigate.video/configuration/record/

Neither of those pages mentions that recordings can’t be played in any browser. In fact, the way it’s phrased now leads to a false assumption that the only issue with H265 is the limited browser choice.

From the doc:

H265 recordings can be viewed in Edge and Safari only

Nope, H265 recordings can’t be viewed in any browser (from v0.9+ anyway).

Hmm isn’t H265 more storage efficient than H264?

The amount of storage efficiency gained with h264 -> h265 is not even close to the amount of storage that is used by storing identical video footage multiple times (for events and for 24/7 recordings) as it was before.

Not to mention h265 can’t be played in most browsers so it would result in just higher storage as most users that want to view their recordings