04.8.2023, 15:59
(Tento příspěvek byl naposledy změněn: 04.8.2023, 16:26 uživatelem JiRo.
Důvod úpravy: Překlep
)
Nechtělo se mi teď kompilovat ffmpeg, tak jsem zkusil static build ze stránek ffmpeg, což je verze 6.0. Použil jsem verzi ffmpeg-release-arm64-static.tar.xz, a z něj soubory ffmpeg a qt-faststart nakopíroval do vybraného adresáře v CoreELEC. Ve scriptu pro spuštění ffmpeg, který přes pipe posílá stream na Tvheadend, jsem samozřejmě změnil cestu na tento soubor.
Jak je vidět, je ffmpeg zkompilovaná s libxml2. S pomocí klíče -formats je ostatně vidět to, co je podstatné (viz obsah, který ffmpeg vrátí po zadání ffmpeg -format | grep dash). Tedy\ ono DE dash na předposledním řádku, kde D udává, že ffmpeg umí DASH dekódovat (E pak, že kódovat).
Static build verze se v CoreELEC spustí bez problémů, ale při pokusu zpracování streamu skončí s chybou:
Ukázalo se, že je důležité číst read.me , protože tam autor uvádí, že:
Protože nsdc na CoreELEC normálně nenainstaluji, tak jsem si myslel, že na to vyzraji, a alespoň pro testovací účely ve scriptu doplním výměnu řetězce stc.o2tv.cz za aktuální IP adresu. Ale to jsem si neuvědomil, že ten překlad bude potřeba vzápětí, při zpracování obsahu manifestu. Přišla tedy stejná hláška, jen s jiným hostname:
Pokusy jsem tedy ukončil. Budu-li to potřebovat, ffmpeg si nakonec zkompiluji.
Takže resumé je stále původní, bez ohledu na mé pokusy, že pokud chceme v Tvheadend přijímat MPEG-DASH (ale pouze bez DRM!), je třeba použít verzi ffmpeg kompilované s knihovnou libxml2.
Jak je vidět, je ffmpeg zkompilovaná s libxml2. S pomocí klíče -formats je ostatně vidět to, co je podstatné (viz obsah, který ffmpeg vrátí po zadání ffmpeg -format | grep dash). Tedy\ ono DE dash na předposledním řádku, kde D udává, že ffmpeg umí DASH dekódovat (E pak, že kódovat).
Kód:
./ffmpeg -formats | grep dash
ffmpeg version 6.0-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 8 (Debian 8.3.0-6)
configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-libgme --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzimg
libavutil 58. 2.100 / 58. 2.100
libavcodec 60. 3.100 / 60. 3.100
libavformat 60. 3.100 / 60. 3.100
libavdevice 60. 1.100 / 60. 1.100
libavfilter 9. 3.100 / 9. 3.100
libswscale 7. 1.100 / 7. 1.100
libswresample 4. 10.100 / 4. 10.100
libpostproc 57. 1.100 / 57. 1.100
DE dash DASH Muxer
DE webm_dash_manifest WebM DASH Manifest
Static build verze se v CoreELEC spustí bez problémů, ale při pokusu zpracování streamu skončí s chybou:
Kód:
[tcp @ 0x3835cfd0] Failed to resolve hostname stc.o2tv.cz: System error
Ukázalo se, že je důležité číst read.me , protože tam autor uvádí, že:
Kód:
Notes: A limitation of statically linking glibc is the loss of DNS resolution. Installing
nscd through your package manager will fix this.
Protože nsdc na CoreELEC normálně nenainstaluji, tak jsem si myslel, že na to vyzraji, a alespoň pro testovací účely ve scriptu doplním výměnu řetězce stc.o2tv.cz za aktuální IP adresu. Ale to jsem si neuvědomil, že ten překlad bude potřeba vzápětí, při zpracování obsahu manifestu. Přišla tedy stejná hláška, jen s jiným hostname:
Kód:
[tcp @ 0x6c8eea0] Failed to resolve hostname vst24-3.o2tv.cz: System error
Pokusy jsem tedy ukončil. Budu-li to potřebovat, ffmpeg si nakonec zkompiluji.
Takže resumé je stále původní, bez ohledu na mé pokusy, že pokud chceme v Tvheadend přijímat MPEG-DASH (ale pouze bez DRM!), je třeba použít verzi ffmpeg kompilované s knihovnou libxml2.