Několik postřehů k mapování stop (streamů) v ffmpeg, které otevřel @mobilemanic v tématu http://www.xbmc-kodi.cz/prispevek-tvheadend-a-placena-iptv-idea-reseni v příspěvku http://www.xbmc-kodi.cz/prispevek-tvheadend-a-placena-iptv-idea-reseni?pid=29338#pid29338. Pokračuji o tomto tématu v tomto vláknu, kam to podle mne patří více...
Testuji O2TVGO playlist vytvořenýv @Martor v Tvheadend a narazil na potřebu mapování audio streamů. Jednotlivé streamy O2TVGO jsou ve formátu Program stream. Např. pro kanál JimJam ffmpeg bez explicitního mapování vybere program s nejlepší kvalitou videa (níže je to ve výpisu ffmpeg Program 3) a v něm audio stopu anglickou, patrně proto, že má nižší číslo než česká (obě mají stejnou kvalitu). To je samozřejmě nežádoucí (zvlášť u dětského kanálu). Myslel jsem si, že prohodím jen pořadí audio stop, ale tak to nefunguje. Pokud se zadá alespoň jeden příkaz pro mapování streamů, musí se pak explicitně zadat mapování všech streamů, v tomto případě tedy i videa! Pokud ne, tak se do výstupního TS streamu vloží pouze audio streamy, což spolu s kombinací parametru ffmpeg -mpegts_service_type digital_tv způsobí, že se služba pro tento stream vůbec nevytvoří. Proto je bezpodmínečně třeba v tomto případě explicitně mapovat i video.
Originál program stream JimJam v O2TVGO:
Aby to tedy dobře zafungovalo, je třeba do řetězce vstupních parametrů ffmpeg zadat v tomto případě sekvenci:
-map 0:10 -map 0:11 -map 0:9
Pořadí příkazů map pak v případě audio streamů určuje pořadí výstupních audio streamů, tzn. český (11) je první a anglický (9) druhý.
Zarazilo mě, proč si český stream nevybral přehrávač sám. Patrně proto, že ve vstupním Program stream není jazyk definovaný. Jazyky streamů jsou tam sice v položce comment uvedeny, ale to zřejmě pro automatickou funkci výběru jazyka nestačí. Pokusil jsem se identifikaci i název jazyků stop do streamů vnutit, použil jsem v různých kombinacích a variantách identifikace a číslování streamů příkazy typu:
-metadata:s:a:0 lang=cze -metadata:s:a:0 title="Czech"
ale na straně Kodi to nemělo žádný efekt. Stále se při přepínání audio stopy zobrazí jen správně formát (stereo), ale název jazyka stopy nebo její označení chybí.
Má někdo s tímto zkušenosti?
Testuji O2TVGO playlist vytvořenýv @Martor v Tvheadend a narazil na potřebu mapování audio streamů. Jednotlivé streamy O2TVGO jsou ve formátu Program stream. Např. pro kanál JimJam ffmpeg bez explicitního mapování vybere program s nejlepší kvalitou videa (níže je to ve výpisu ffmpeg Program 3) a v něm audio stopu anglickou, patrně proto, že má nižší číslo než česká (obě mají stejnou kvalitu). To je samozřejmě nežádoucí (zvlášť u dětského kanálu). Myslel jsem si, že prohodím jen pořadí audio stop, ale tak to nefunguje. Pokud se zadá alespoň jeden příkaz pro mapování streamů, musí se pak explicitně zadat mapování všech streamů, v tomto případě tedy i videa! Pokud ne, tak se do výstupního TS streamu vloží pouze audio streamy, což spolu s kombinací parametru ffmpeg -mpegts_service_type digital_tv způsobí, že se služba pro tento stream vůbec nevytvoří. Proto je bezpodmínečně třeba v tomto případě explicitně mapovat i video.
Originál program stream JimJam v O2TVGO:
Kód:
Input #0, hls,applehttp, from 'http://.../97-tv-tablet.m3u8':
Duration: N/A, start: 78661.406133, bitrate: N/A
Program 0
Metadata:
variant_bitrate : 400000
Stream #0:1: Video: h264 (Constrained Baseline) ([27][0][0][0] / 0x001B), yuv420p, 256x144 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
Metadata:
variant_bitrate : 400000
Stream #0:2(cs): Audio: aac (HE-AAC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 60 kb/s (default)
Metadata:
comment : Czech
variant_bitrate : 400000
Stream #0:0(en): Audio: aac (HE-AAC), 48000 Hz, stereo, fltp, 44 kb/s
Metadata:
comment : English
variant_bitrate : 400000
Program 1
Metadata:
variant_bitrate : 800000
Stream #0:4: Video: h264 (Constrained Baseline) ([27][0][0][0] / 0x001B), yuv420p, 512x288 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
Metadata:
variant_bitrate : 800000
Stream #0:5(cs): Audio: aac (HE-AAC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 60 kb/s (default)
Metadata:
comment : Czech
variant_bitrate : 800000
Stream #0:3(en): Audio: aac (HE-AAC), 48000 Hz, stereo, fltp, 44 kb/s
Metadata:
comment : English
variant_bitrate : 800000
Program 2
Metadata:
variant_bitrate : 1400000
Stream #0:7: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p, 720x404 [SAR 1:1 DAR 180:101], 25 fps, 25 tbr, 90k tbn, 50 tbc
Metadata:
variant_bitrate : 1400000
Stream #0:8(cs): Audio: aac (HE-AAC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 93 kb/s (default)
Metadata:
comment : Czech
variant_bitrate : 1400000
Stream #0:6(en): Audio: aac (HE-AAC), 48000 Hz, stereo, fltp, 57 kb/s
Metadata:
comment : English
variant_bitrate : 1400000
Program 3
Metadata:
variant_bitrate : 2450000
Stream #0:10: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p, 1024x576 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
Metadata:
variant_bitrate : 2450000
Stream #0:11(cs): Audio: aac (HE-AAC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 93 kb/s (default)
Metadata:
comment : Czech
variant_bitrate : 2450000
Stream #0:9(en): Audio: aac (HE-AAC), 48000 Hz, stereo, fltp, 57 kb/s
Metadata:
comment : English
variant_bitrate : 2450000
Aby to tedy dobře zafungovalo, je třeba do řetězce vstupních parametrů ffmpeg zadat v tomto případě sekvenci:
-map 0:10 -map 0:11 -map 0:9
Pořadí příkazů map pak v případě audio streamů určuje pořadí výstupních audio streamů, tzn. český (11) je první a anglický (9) druhý.
Zarazilo mě, proč si český stream nevybral přehrávač sám. Patrně proto, že ve vstupním Program stream není jazyk definovaný. Jazyky streamů jsou tam sice v položce comment uvedeny, ale to zřejmě pro automatickou funkci výběru jazyka nestačí. Pokusil jsem se identifikaci i název jazyků stop do streamů vnutit, použil jsem v různých kombinacích a variantách identifikace a číslování streamů příkazy typu:
-metadata:s:a:0 lang=cze -metadata:s:a:0 title="Czech"
ale na straně Kodi to nemělo žádný efekt. Stále se při přepínání audio stopy zobrazí jen správně formát (stereo), ale název jazyka stopy nebo její označení chybí.
Má někdo s tímto zkušenosti?