<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>stream &#8211; Jakub Bajzath | Senior Frontend Developer</title>
	<atom:link href="https://hello.bajzath.cloud/sk/tag/stream/feed" rel="self" type="application/rss+xml" />
	<link>https://hello.bajzath.cloud</link>
	<description></description>
	<lastBuildDate>Mon, 04 May 2026 10:47:30 +0000</lastBuildDate>
	<language>sk-SK</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://hello.bajzath.cloud/wp-content/uploads/2026/04/icon-150x150.png</url>
	<title>stream &#8211; Jakub Bajzath | Senior Frontend Developer</title>
	<link>https://hello.bajzath.cloud</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Ako som vytvoril IPTV apku Couchly (a používam ju)</title>
		<link>https://hello.bajzath.cloud/sk/ako-som-vytvoril-iptv-apku-couchly-a-pouzivam-ju</link>
					<comments>https://hello.bajzath.cloud/sk/ako-som-vytvoril-iptv-apku-couchly-a-pouzivam-ju#respond</comments>
		
		<dc:creator><![CDATA[jakub.bajzath]]></dc:creator>
		<pubDate>Mon, 04 May 2026 10:37:40 +0000</pubDate>
				<category><![CDATA[Aplikácie]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Programovanie]]></category>
		<category><![CDATA[aplikácie]]></category>
		<category><![CDATA[avp]]></category>
		<category><![CDATA[ionic]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[iptv]]></category>
		<category><![CDATA[stream]]></category>
		<category><![CDATA[vlc]]></category>
		<guid isPermaLink="false">https://hello.bajzath.cloud/?p=245</guid>

					<description><![CDATA[Občas, keď si potrebujem pozrieť niečo v telke, hoc mám Orange TV, nemôžem. Dôvodom je že tieto televízie nie sú dostupné v aplikácií napriek tomu že na TV sú dostupné. Je to v poriadku a chápem tomu. Preto som už dávnejšie zvolil možnosť používať IPTV Streams. Problém však občas nastáva v tom, že dobrá aplikácia [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Občas, keď si potrebujem pozrieť niečo v telke, hoc mám Orange TV, nemôžem. Dôvodom je že tieto televízie nie sú dostupné v aplikácií napriek tomu že na TV sú dostupné. Je to v poriadku a chápem tomu. Preto som už dávnejšie zvolil možnosť používať IPTV Streams. Problém však občas nastáva v tom, že dobrá aplikácia pre iOS, ktorá by vo verzii zdarma pokrývala všetky moje use-cases (kategórie, PIP, obľúbené, či enkodovanie contentu) &#8211; za mňa neexistuje.</p>



<p class="wp-block-paragraph">Napriek tomu uznávam, že niektoré z týchto aplikácií nemajú drahé subscriptions, či one-time payment pre lifetime prístup. Ale môj problém je v tom, že ako programátor nechcem platiť za niečo, čo si myslím že dokážem spraviť aj sám. Preto som sa rozhodol že si aplikáciu napíšem. </p>



<p class="wp-block-paragraph">Keďže už mám skúsenosti s Ionicom (framework pre hybridné apps), rozhodol som sa pre túto cestu. Stack bol celkom tradičný pre mňa &#8211; to znamená <code>Ionic v kombinácii s Vue 3 a Typescript</code> support. Bootstrap pre aplikáciu bol jednoduchý, nasetupoval som všetky potrebné views v default UX scope. Pokračoval som ďalej a začal som pátrať, ako to vlastne celé fuguje. Parsing bol relatívne jednoduchý, m3u files majú dobre pred-definovanú štruktúru a tak všetky potrebné info boli ľahko dosiahnuteľné. Takže som mal dáta a bolo potrebné vytvoriť player. Apple sám má podporu pre video-player veľmi dobrú, použil som teda <code>AVPlayer</code>. </p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped ios-screenshots wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="1181" height="2560" data-id="253" src="https://hello.bajzath.cloud/wp-content/uploads/2026/05/IMG_7020-scaled.png" alt="" class="wp-image-253" style="aspect-ratio:1" srcset="https://hello.bajzath.cloud/wp-content/uploads/2026/05/IMG_7020-scaled.png 1181w, https://hello.bajzath.cloud/wp-content/uploads/2026/05/IMG_7020-138x300.png 138w, https://hello.bajzath.cloud/wp-content/uploads/2026/05/IMG_7020-472x1024.png 472w, https://hello.bajzath.cloud/wp-content/uploads/2026/05/IMG_7020-768x1665.png 768w, https://hello.bajzath.cloud/wp-content/uploads/2026/05/IMG_7020-709x1536.png 709w, https://hello.bajzath.cloud/wp-content/uploads/2026/05/IMG_7020-945x2048.png 945w" sizes="(max-width: 1181px) 100vw, 1181px" /></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="1181" height="2560" data-id="254" src="https://hello.bajzath.cloud/wp-content/uploads/2026/05/IMG_7019-scaled.png" alt="" class="wp-image-254" style="aspect-ratio:1" srcset="https://hello.bajzath.cloud/wp-content/uploads/2026/05/IMG_7019-scaled.png 1181w, https://hello.bajzath.cloud/wp-content/uploads/2026/05/IMG_7019-138x300.png 138w, https://hello.bajzath.cloud/wp-content/uploads/2026/05/IMG_7019-472x1024.png 472w, https://hello.bajzath.cloud/wp-content/uploads/2026/05/IMG_7019-768x1665.png 768w, https://hello.bajzath.cloud/wp-content/uploads/2026/05/IMG_7019-709x1536.png 709w, https://hello.bajzath.cloud/wp-content/uploads/2026/05/IMG_7019-945x2048.png 945w" sizes="(max-width: 1181px) 100vw, 1181px" /></figure>
<figcaption class="blocks-gallery-caption wp-element-caption">Screenshoty z aplikácie Couchly</figcaption></figure>



<p class="wp-block-paragraph">Všetko fungovalo bez problémov, ale po čase (testoval som iba jeden kanál) som si všimol že niektoré streamy majú problém s prehliadačom. Zistil som, že AVPlayer nemá úplnú podporu formátov a tak dekódovanie niektorých z nich môže spôsobovať problémy. Začal som pátrať a došiel som k tomu, že je zrejme lepšie použiť <code>VLC Based</code> prehrávač, ktorý už aj zo skúseností z PC vieme, že má výbornú podporu a prehrá &#8222;prakticky všetko&#8220;. A tak aj bolo. Začali fungovať aj streamy, ktoré predtým nefungovali. Ako som tak testoval celú aplikáciu a bol šťastný že celý prehrávač funguje, minimalizoval som aplikáciu aby som zistil &#8211; že PIP (Picture in Picture) prestal fungovať.</p>



<p class="wp-block-paragraph">Toto bol logický krok. PIP podpora existuje pre AVPlayer ako natívny spôsob prehrávania obsahu, no VLC ho nepodporuje. Premýšľal som, ako viem tento problém vyriešiť, zapojil aj AI a zistil, že toto sa obíjsť jednoducho nedá. Rozhodol som sa preto ísť s dual-support. AVPlayer ako hlavný prehrávač a v prípade problémov, fallback na VLC. Toto si ale vyžadovalo systematické uvažovanie a vytvorenie pluginu pre Swift, keďže to natívne riešiť len cez Ionic je celkom problém. Zapojil som preto Claude Code (všetko bolo riešené cez <code>Claude Opus 4.6 Thinking</code> a ten spravil prácu ktorú som očakával. Vytvoril dual-support plugin, ktorý som len integtoval v XCode po builde wrapperu pre iOS a všetko fungovalo. Musel som ešte poriešiť pár issues s minimalizovaním apky, prerenderovaním a podobné maličkosti, ale gro aplikácie fungovalo. </p>



<p class="wp-block-paragraph">V tomto momente som znova odložil AI a pokračoval s integráciou funkcionality. Pridal som možnosť ukladania staníc do obľúbených, posledné videné stanice a taktiež horizontal-scroll pre kategórie, keďže nie každému sa chce listovať. Otestoval v reálnom prostredí na produkčnom builde v XCode a všetko fungovalo tak ako som potreboval. </p>



<p class="wp-block-paragraph">Aplikáciu mi trvalo vytvoriť približne dva dni a to s pomocou AI. Neviem ako dlho by som písal plugin vo Swifte ktorý by riešil dual-support pre dva video prehrávače, takže za túto časť som vďačný. </p>



<p class="wp-block-paragraph">Jeden z problémov na ktoré som narazil bol pokus o zostrenie videa. Niektoré streamy majú nízku kvalitu a preto sa mi páčila myšlienka zostrenia obrazu pomocou <code>SVG filtra</code> alebo <code>WebGL shaderu</code>. Tu som ale narazil na viacero problémov. Hlavne teda support pre oba prehrávače, alebo prípadne nemožnosť použitia vo full-screene. Skúšal som aj <code>CSS filtering</code> či <code>canvas</code>, no obe mali problémy a skôr robili aplikáciu zbytočne nestabilnou, v niektorých prípadoch s obrovskou záťažou na baterku zariadenia.</p>



<p class="wp-block-paragraph">S tým som sa ale zmieril a som rád, že môžem používať plnohodnotnú aplikáciu v iOS a sledovať streamy so všetkými výhodami ktoré potrebujem a zdarma. Ak máte záujem, build viem poskytnúť 🙃 </p>



<p class="wp-block-paragraph">A tu ešte krátke demo.</p>



<figure class="wp-block-video aligncenter ios-video"><video height="2616" style="aspect-ratio: 1290 / 2616;" width="1290" controls muted src="https://hello.bajzath.cloud/wp-content/uploads/2026/05/ScreenRecording_05-04-2026-12-02-58_1.mov"></video></figure>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://hello.bajzath.cloud/sk/ako-som-vytvoril-iptv-apku-couchly-a-pouzivam-ju/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://hello.bajzath.cloud/wp-content/uploads/2026/05/ScreenRecording_05-04-2026-12-02-58_1.mov" length="75392950" type="video/quicktime" />

			</item>
	</channel>
</rss>
