homebridge-plugins / homebridge-camera-ffmpeg

Homebridge Plugin Providing FFmpeg-based Camera Support
https://homebridge-plugins.github.io/homebridge-camera-ffmpeg/
Apache License 2.0
1.09k stars 227 forks source link

Unknown encoder 'h264_omx' when trying to stream from d-link IP camera #407

Closed andsoitgoes closed 4 years ago

andsoitgoes commented 4 years ago

Hi all,

Finally got SOMEWHERE after fiddling with a million settings, but I'm now hitting a brick wall that I can't seem to find a solution for.

I have a d-link camera setup in Homebridge and it's authenticated and it seems like everything should be working, but when I try to load up the stream, here's the debug output:

` [1/6/2020, 6:20:49 PM] [Camera ffmpeg] Start streaming video from DCS-936L with 1280x720@299kBit ffmpeg -re -i rtsp://USERNAME:PASSWORD@192.168.1.113:554/play1.sdp -map 0:0 -vcodec h264_omx -pix_fmt yuv420p -r 4 -f rawvideo -tune zerolatency -b:v 299k -bufsize 299k -maxrate 299k -payload_type 99 -ssrc 1025880 -f rtp -srtp_out_suite AES_CM_128_HMAC_SHA1_80 -srtp_out_params wchGKPkMt8xBY0THVtIXJAuYfxWN+aF+tNemiRUD srtp://192.168.1.105:64590?rtcpport=64590&localrtcpport=64590&pkt_size=188 -map 0:1 -acodec libfdk_aac -profile:a aac_eld -flags +global_header -f null -ar 16k -b:a 24k -bufsize 24k -ac 1 -payload_type 110 -ssrc 3755124 -f rtp -srtp_out_suite AES_CM_128_HMAC_SHA1_80 -srtp_out_params 2saPxxY5V2irgrBdErnO0yDozFtzzzEfX/qrJEYD srtp://192.168.1.105:56553?rtcpport=56553&localrtcpport=56553&pkt_size=188 -loglevel debug ffmpeg version 4.1.4 Copyright (c) 2000-2019 the FFmpeg developers built with gcc 8.3.0 (Alpine 8.3.0) configuration: --prefix=/usr --enable-avresample --enable-avfilter --enable-gnutls --enable-gpl --enable-libass --enable-libmp3lame --enable-libvorbis --enable-libvpx --enable-libxvid --enable-libx264 --enable-libx265 --enable-libtheora --enable-libv4l2 --enable-postproc --enable-pic --enable-pthreads --enable-shared --enable-libxcb --disable-stripping --disable-static --disable-librtmp --enable-vaapi --enable-vdpau --enable-libopus --disable-asm --disable-debug

libavutil 56. 22.100 / 56. 22.100 libavcodec 58. 35.100 / 58. 35.100 libavformat 58. 20.100 / 58. 20.100 libavdevice 58. 5.100 / 58. 5.100 libavfilter 7. 40.101 / 7. 40.101 libavresample 4. 0. 0 / 4. 0. 0 libswscale 5. 3.100 / 5. 3.100 libswresample 3. 3.100 / 3. 3.100 libpostproc 55. 3.100 / 55. 3.100 Splitting the commandline. Reading option '-re' ... matched as option 're' (read input at native frame rate) with argument '1'. Reading option '-i' ... matched as input url with argument 'rtsp://USERNAME:PASSWORD@192.168.1.113:554/play1.sdp'. Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '0:0'. Reading option '-vcodec' ... matched as option 'vcodec' (force video codec ('copy' to copy stream)) with argument 'h264_omx'. Reading option '-pix_fmt' ... matched as option 'pix_fmt' (set pixel format) with argument 'yuv420p'. Reading option '-r' ... matched as option 'r' (set frame rate (Hz value, fraction or abbreviation)) with argument '4'. Reading option '-f' ... matched as option 'f' (force format) with argument 'rawvideo'. Reading option '-tune' ... matched as AVOption 'tune' with argument 'zerolatency'.

Reading option '-b:v' ... matched as option 'b' (video bitrate (please use -b:v)) with argument '299k'. Reading option '-bufsize' ... matched as AVOption 'bufsize' with argument '299k'. Reading option '-maxrate' ... matched as AVOption 'maxrate' with argument '299k'. Reading option '-payload_type' ... matched as AVOption 'payload_type' with argument '99'. Reading option '-ssrc' ... matched as AVOption 'ssrc' with argument '1025880'. Reading option '-f' ... matched as option 'f' (force format) with argument 'rtp'. Reading option '-srtp_out_suite' ... matched as AVOption 'srtp_out_suite' with argument 'AES_CM_128_HMAC_SHA1_80'. Reading option '-srtp_out_params' ... matched as AVOption 'srtp_out_params' with argument 'wchGKPkMt8xBY0THVtIXJAuYfxWN+aF+tNemiRUD'. Reading option 'srtp://192.168.1.105:64590?rtcpport=64590&localrtcpport=64590&pkt_size=188' ... matched as output url. Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '0:1'. Reading option '-acodec' ... matched as option 'acodec' (force audio codec ('copy' to copy stream)) with argument 'libfdk_aac'. Reading option '-profile:a' ... matched as option 'profile' (set profile) with argument 'aac_eld'. Reading option '-flags' ... matched as AVOption 'flags' with argument '+global_header'. Reading option '-f' ... matched as option 'f' (force format) with argument 'null'. Reading option '-ar' ... matched as option 'ar' (set audio sampling rate (in Hz)) with argument '16k'.

Reading option '-b:a' ... matched as option 'b' (video bitrate (please use -b:v)) with argument '24k'. Reading option '-bufsize' ... matched as AVOption 'bufsize' with argument '24k'. Reading option '-ac' ... matched as option 'ac' (set number of audio channels) with argument '1'. Reading option '-payload_type' ... matched as AVOption 'payload_type' with argument '110'. Reading option '-ssrc' ... matched as AVOption 'ssrc' with argument '3755124'. Reading option '-f' ... matched as option 'f' (force format) with argument 'rtp'. Reading option '-srtp_out_suite' ... matched as AVOption 'srtp_out_suite' with argument 'AES_CM_128_HMAC_SHA1_80'. Reading option '-srtp_out_params' ... matched as AVOption 'srtp_out_params' with argument '2saPxxY5V2irgrBdErnO0yDozFtzzzEfX/qrJEYD'. Reading option 'srtp://192.168.1.105:56553?rtcpport=56553&localrtcpport=56553&pkt_size=188' ... matched as output url. Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument 'debug'.

Finished splitting the commandline. Parsing a group of options: global . Applying option loglevel (set logging level) with argument debug. Successfully parsed a group of options. Parsing a group of options: input url rtsp://USERNAME:PASSWORD@192.168.1.113:554/play1.sdp. Applying option re (read input at native frame rate) with argument 1. Successfully parsed a group of options. Opening an input file: rtsp://USERNAME:PASSWORD@192.168.1.113:554/play1.sdp. [tcp @ 0xb4fa8b80] No default whitelist set [tcp @ 0xb4fa8b80] Original list of addresses: [tcp @ 0xb4fa8b80] Address 192.168.1.113 port 554 [tcp @ 0xb4fa8b80] Interleaved list of addresses: [tcp @ 0xb4fa8b80] Address 192.168.1.113 port 554 [tcp @ 0xb4fa8b80] Starting connection attempt to 192.168.1.113 port 554

[tcp @ 0xb4fa8b80] Successfully connected to 192.168.1.113 port 554

[rtsp @ 0xb4fa85d0] SDP: v=0 o=- 1578326302887242 1 IN IP4 192.168.1.113 s=Session streamed by D-Link i=play1.sdp t=0 0 a=tool:LIVE555 Streaming Media v2016.04.01 a=type:broadcast a=control:* a=range:npt=0- a=x-qt-text-nam:Session streamed by D-Link a=x-qt-text-inf:play1.sdp m=video 0 RTP/AVP 96 c=IN IP4 0.0.0.0 b=AS:1536 a=rtpmap:96 H264/90000 a=fmtp:96 packetization-mode=1;profile-level-id=420029;sprop-parameter-sets=Z0IAKfQCgC3I,aM48gA== a=control:video m=audio 0 RTP/AVP 97 c=IN IP4 0.0.0.0 b=AS:128 a=rtpmap:97 MPEG4-GENERIC/16000 a=fmtp:97 streamtype=5;profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3;config=1408 a=control:audio

Failed to parse interval end specification ''

[rtsp @ 0xb4fa85d0] video codec set to: h264 [rtsp @ 0xb4fa85d0] RTP Packetization Mode: 1 [rtsp @ 0xb4fa85d0] RTP Profile IDC: 42 Profile IOP: 0 Level: 29 [rtsp @ 0xb4fa85d0] Extradata set to 0xb4f867c0 (size: 21) [rtsp @ 0xb4fa85d0] audio codec set to: aac [rtsp @ 0xb4fa85d0] audio samplerate set to: 16000 [rtsp @ 0xb4fa85d0] audio channels set to: 1

[rtp @ 0xb4f86e10] No default whitelist set

[udp @ 0xb4f86ee0] No default whitelist set [udp @ 0xb4f86ee0] end receive buffer size reported is 131072

[udp @ 0xb4f86f60] No default whitelist set [udp @ 0xb4f86f60] end receive buffer size reported is 131072

[rtsp @ 0xb4fa85d0] setting jitter buffer size to 500 [rtp @ 0xb4fa8d90] No default whitelist set

[udp @ 0xb4fa8e00] No default whitelist set [udp @ 0xb4fa8e00] end receive buffer size reported is 131072

[udp @ 0xb4f52e20] No default whitelist set [udp @ 0xb4f52e20] end receive buffer size reported is 131072

[rtsp @ 0xb4fa85d0] setting jitter buffer size to 500 [rtsp @ 0xb4fa85d0] hello state=0

Failed to parse interval end specification ''

[h264 @ 0xb4f863c0] nal_unit_type: 7(SPS), nal_ref_idc: 3 [h264 @ 0xb4f863c0] nal_unit_type: 8(PPS), nal_ref_idc: 3

[h264 @ 0xb4f863c0] nal_unit_type: 7(SPS), nal_ref_idc: 3 [h264 @ 0xb4f863c0] nal_unit_type: 8(PPS), nal_ref_idc: 3

[h264 @ 0xb4f863c0] nal_unit_type: 7(SPS), nal_ref_idc: 3 [h264 @ 0xb4f863c0] nal_unit_type: 8(PPS), nal_ref_idc: 3

[h264 @ 0xb4f863c0] nal_unit_type: 5(IDR), nal_ref_idc: 3

[h264 @ 0xb4f863c0] Format yuv420p chosen by get_format(). [h264 @ 0xb4f863c0] Reinit context to 1280x720, pix_fmt: yuv420p

[h264 @ 0xb4f863c0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 2

Last message repeated 5 times

[rtsp @ 0xb4fa85d0] All info found

Input #0, rtsp, from 'rtsp://USERNAME:PASSWORD@192.168.1.113:554/play1.sdp': Metadata: title : Session streamed by D-Link

comment         : play1.sdp

Duration: N/A, start: -0.024625, bitrate: N/A Stream #0:0, 28, 1/90000: Video: h264 (Baseline), 1 reference frame, yuv420p(progressive, left), 1280x720, 0/1, 90k tbr, 90k tbn, 180k tbc Stream #0:1, 16, 1/16000: Audio: aac (LC), 16000 Hz, mono, fltp Successfully opened the file.

Parsing a group of options: output url srtp://192.168.1.105:64590?rtcpport=64590&localrtcpport=64590&pkt_size=188. Applying option map (set input stream mapping) with argument 0:0. Applying option vcodec (force video codec ('copy' to copy stream)) with argument h264_omx. Applying option pix_fmt (set pixel format) with argument yuv420p. Applying option r (set frame rate (Hz value, fraction or abbreviation)) with argument 4. Applying option f (force format) with argument rawvideo. Applying option b:v (video bitrate (please use -b:v)) with argument 299k. Applying option f (force format) with argument rtp. Successfully parsed a group of options. Opening an output file: srtp://192.168.1.105:64590?rtcpport=64590&localrtcpport=64590&pkt_size=188.

Unknown encoder 'h264_omx'

[1/6/2020, 6:20:53 PM] [Camera ffmpeg] ERROR: FFmpeg exited with code 1 `

Can anyone help? I've installed the Homebridge OMX plugin but that doesn't seem to solve the problem. Do I need to add that into the docker compose file?

Thanks in advance!

SteveCohen commented 4 years ago

Why do you need OMX? Ie are you using this on a raspberry pi? Does it work at all with the non-OMX codec/encoder?

github-actions[bot] commented 4 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.