Hi, running Ubuntu 20.04.3 32-bit on Raspberry Pi 3B+. Client is Kodi with TVH HTSP plugin running on networked PC.
The "pass" profile works. My h264_omx "webtv" profile I've created does not. The Broadcom OMX encoder seems to work OK according to TVH log, but I only get audio, no video in Kodi. Running ffprobe to inspect the output from the Rpi also shows an output with an audio stream, but no video stream.
The tvh log doesn't seem to show any problems, I see "libav: AVCodecContext: Using OMX.broadcom.video_encode". (Took a while to get to that point, was missing libs before but they're in place now).
My gpu_mem is set to 256 in /boot/firmware/config.txt and I have put libbcm_host.so and libopenmaxil.so from https://github.com/raspberrypi/firmware/tree/master/opt/vc/lib to my /opt/vc/lib directory. Ran sudo ldconfig after this, and TVH does find those libs now. I also ran chmod 777 on those libs, as well as sudo usermod -aG video hts
My build script was a small modification of one by Russell Tobin. The version I'm using is here: https://pastebin.com/qVyAqS5T
TVHeadend Details:
Configure arguments:
--build=arm-linux-gnueabihf --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libexecdir=${prefix}/lib/tvheadend --disable-maintainer-mode --disable-dependency-tracking --disable-android --enable-pie --enable-avahi --enable-libsystemd_daemon --disable-bintray_cache --enable-libav --enable-libopus --enable-libtheora --enable-libvorbis --enable-libfdkaac --enable-omx --enable-mmal --enable-vaapi --enable-drm --enable-nonfree --disable-hdhomerun_client --disable-hdhomerun_static --enable-omx-rpi --disable-libvpx_static --disable-libvpx --arch=armhf --jobs=4
Compiler:
Using C compiler: ccache cc
Using C flags: -I/opt/vc/include/IL
Using LD flags: -ldvbcsa
Build for arch: armhf
Binaries:
Using PYTHON: python
Using GZIP: gzip
Using BZIP2: bzip2
Options:
pie yes
ccdebug no
cardclient yes
cwc yes
cccam yes
capmt yes
constcw yes
linuxdvb yes
satip_server yes
satip_client yes
hdhomerun_client no
hdhomerun_static no
iptv yes
tsfile yes
dvbscan yes
timeshift yes
trace yes
avahi yes
zlib yes
libav yes
ffmpeg_static yes
libx264 yes
libx264_static yes
libx265 yes
libx265_static yes
libvpx no
libvpx_static no
libtheora yes
libtheora_static yes
libvorbis yes
libvorbis_static yes
libfdkaac yes
libfdkaac_static yes
libopus yes
libopus_static yes
nvenc no
vaapi yes
mmal yes
omx yes
inotify yes
epoll yes
pcre no
pcre2 yes
uriparser yes
ccache yes
tvhcsa yes
bundle no
pngquant no
kqueue no
dbus_1 yes
android no
gtimer_check no
slow_memoryinfo no
libsystemd_daemon yes
pcloud_cache yes
ddci yes
cclang_threadsan no
gperftools no
execinfo yes
W_unused_result yes
f_stack_protector yes
f_stack_protector_strong yes
f_stack_check yes
f_PIE yes
fdatasync yes
getloadavg yes
atomic32 yes
atomic64 yes
atomic_time_t yes
atomic_ptr yes
bitops64 yes
lockowner yes
qsort_r yes
gmtoff yes
recvmmsg yes
sendmmsg yes
ifnames yes
py_gzip yes
bin_pkg_config yes
bin_xgettext yes
bin_msgmerge yes
bin_gzip yes
bin_bzip2 yes
ssl yes
linuxdvbapi yes
linuxdvb_ca yes
upnp yes
bin_cmake yes
stdcpp yes
libogg_static yes
omx_rpi yes
hwaccels yes
inotify_h yes
inotify_init1 yes
dvbcsa yes
epoll_create1 yes
mpegts yes
mpegts_dvb yes
Packages:
openssl 1.1.1f
zlib 1.2.11
libpcre2-8 10.34
liburiparser 0.9.3
avahi-client 0.7
libva 1.7.0
libva-drm 1.7.0
dbus-1 1.12.16
libsystemd 245
Installation paths:
Prefix: /usr
Binaries: ${prefix}/bin
Libraries: ${prefix}/lib
Data files: ${prefix}/share
Man pages: /usr/share/man
TVHeadend Log (from using ffprobe, similar log when using Kodi HTSP plugin):
2022-02-18 14:21:30.756 http: 192.168.0.100: using ticket 323373bec24a210d88bb8d7c9300b9b81a3d8ea4 for /stream/channel/56f04c4a81999645a58b5a7d5c37f120
2022-02-18 14:21:30.757 mpegts: 578MHz in DVB-T Network - tuning on DiBcom 7000PC #0 : DVB-T #0
2022-02-18 14:21:30.757 subscription: 00CC: "HTTP" subscribing on channel "RTÉ One", weight: 100, adapter: "DiBcom 7000PC #0 : DVB-T #0", network: "DVB-T Network", mux: "578MHz", provider: "RTÉNL", service: "RTÉ One", profile="webtv", hostname="192.168.0.100", username="admin", client="Lavf/59.16.100"
2022-02-18 14:21:31.311 transcode: 000A: 01:H264: ==> Using profile webtv-h264-omx
2022-02-18 14:21:31.311 transcode: 000A: 02:MPEG2AUDIO: ==> Using profile webtv-aac
2022-02-18 14:21:31.311 transcode: 000A: 03:MPEG2AUDIO: ==> Filtered out
2022-02-18 14:21:31.311 transcode: 000A: 04:MPEG2AUDIO: ==> Filtered out
2022-02-18 14:21:31.311 transcode: 000A: 07:PCR: ==> Filtered out
2022-02-18 14:21:31.311 transcode: 000A: 06:TEXTSUB: ==> Filtered out
2022-02-18 14:21:32.784 transcode: 000A: 02:AAC-LATM: [mp2 => aac]: Detected framedrop in audio (35690 != 37850)
2022-02-18 14:21:32.965 libav: AVCodecContext: mmco: unref short failure
2022-02-18 14:21:32.992 libav: AVCodecContext: Using OMX.broadcom.video_encode
2022-02-18 14:21:33.071 libav: AVCodecContext: mmco: unref short failure
2022-02-18 14:21:33.369 libav: AVCodecContext: mmco: unref short failure
2022-02-18 14:21:40.878 transcode: 000A: 02:AAC-LATM: [mp2 => aac]: Detected framedrop in audio (368090 != 365930)
2022-02-18 14:21:40.879 libav: AVCodecContext: Queue input is backward in time
2022-02-18 14:21:41.399 transcode: 000A: 02:AAC-LATM: [mp2 => aac]: Detected framedrop in audio (387050 != 389210)
2022-02-18 14:21:59.442 subscription: 00CC: "HTTP" unsubscribing from "RTÉ One", hostname="192.168.0.100", username="admin", client="Lavf/59.16.100"
2022-02-18 14:21:59.576 libav: AVCodecContext: Qavg: 118.000
FFprobe:
ffprobe -i http://192.168.0.234:9981/stream/channel/56f04c4a81999645a58b5a7d5c37f120?ticket=323373bec24a210d88bb8d7c9300b9b81a3d8ea4
ffprobe version 5.0 Copyright (c) 2007-2022 the FFmpeg developers
built with gcc 10 (Debian 10.2.1-6)
configuration: --prefix=/opt/ffmpeg-builds/build/linux64/usr --extra-ldexeflags=-static --pkg-config-flags=--static --extra-cflags=-I/opt/ffmpeg-builds/lib/linux64/include --extra-ldflags=-L/opt/ffmpeg-builds/lib/linux64/lib --extra-libs='-lpthread -lm -lz' --extra-ldexeflags=-static --enable-gpl --enable-nonfree --enable-version3 --disable-debug --disable-indev=sndio --disable-outdev=sndio --enable-fontconfig --enable-frei0r --enable-openssl --enable-libaom --enable-libfribidi --enable-libass --enable-libfreetype --enable-libmp3lame --enable-libopenjpeg --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-libopus --enable-libtheora --disable-libvidstab --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libdav1d --enable-libxvid --enable-libfdk-aac --enable-ffplay --enable-pic
libavutil 57. 17.100 / 57. 17.100
libavcodec 59. 18.100 / 59. 18.100
libavformat 59. 16.100 / 59. 16.100
libavdevice 59. 4.100 / 59. 4.100
libavfilter 8. 24.100 / 8. 24.100
libswscale 6. 4.100 / 6. 4.100
libswresample 4. 3.100 / 4. 3.100
libpostproc 56. 3.100 / 56. 3.100
Input #0, matroska,webm, from 'http://192.168.0.234:9981/stream/channel/56f04c4a81999645a58b5a7d5c37f120?ticket=323373bec24a210d88bb8d7c9300b9b81a3d8ea4':
Metadata:
title : RTÉ One
encoder : Tvheadend Matroska muxer
Duration: N/A, start: 0.150000, bitrate: N/A
Stream #0:0(eng): Audio: aac (Main), 48000 Hz, stereo, fltp (default)
Any ideas or similar experience of getting "libav: AVCodecContext: Using OMX.broadcom.video_encode " from log, but no video in the output stream?
Also, tvh builds it's own ffmpeg during the make, but from my understanding, that ffmpeg can't be run as a standalone binary outside of TVH for debug, it's just the libraries (libav...) that get built, and not a binary. Is that right?
One final question: OMX is deprecated now on Raspberry Pi, with h264_v4l2m2m being preferred (and h264_v4l2m2m does work easily on Rpi3 for standalone ffmpeg builds). Will there be support for this h264_v4l2m2m added in TVH, alongside or instead of h264_omx? I can have a look at the TVH source and see if might be easy to add.