How to Configure 4K IPTV App with Perfect Player
Connect your 4K IPTV App subscription to Perfect Player (Niklabs) through the Xtream Codes API for instant category indexing and 7-day EPG synchronisation.
Required Configuration Parameters
http://line.4kiptvpanel.store:8080Your_UsernameYour_PasswordServer URL: http://line.4kiptvpanel.store:8080
Username: Your_Username
Password: Your_Password
Step-by-Step Instructions
- 1Launch Perfect Player on your streaming hardware (Android, Android TV, Fire TV, Windows).
- 2Select Add Playlist and choose Xtream Codes API (preferred over M3U for faster EPG loading).
- 3Input the Server URL, Username, and Password sent by your reseller or the official 4K IPTV App desk.
- 4Enable Include VOD to stream the 95,000+ movie and series catalog.
- 5Set the buffer to the largest option and choose .ts output for live sports.
- 6Press Connect; categories appear within 30-60 seconds and the EPG populates after the first XMLTV download.
Xtream Codes v2 REST API Deep-Dive
Every modern player connects 4K IPTV App through the same HTTP handshake. The sequence below is what TiviMate, IPTV Smarters, and XCIPTV execute on login; you can reproduce each call in a browser or with curl.
1 Authentication handshake
GET http://line.4kiptvpanel.store:8080/player_api.php?username=USERNAME&password=PASSWORD
{
"user_info": {
"username": "USERNAME",
"status": "Active",
"auth": 1,
"exp_date": "1798761600",
"is_trial": "0",
"active_cons": "1",
"max_connections": "5",
"allowed_output_formats": ["m3u8", "ts", "rtmp"]
},
"server_info": {
"url": "line.4kiptvpanel.store",
"port": "8080",
"https_port": "2086",
"server_protocol": "http",
"timezone": "UTC",
"timestamp_now": 1759795200
}
}
auth must equal 1 and status "Active". exp_date is a Unix timestamp; max_connections caps concurrent streams; https_port exposes the TLS listener used to defeat SNI-based shaping.
2 Live category indexing & stream URL construction
GET http://line.4kiptvpanel.store:8080/player_api.php?username=USERNAME&password=PASSWORD&action=get_live_categories
[
{ "category_id": "12", "category_name": "UK | SKY SPORTS", "parent_id": 0 },
{ "category_id": "18", "category_name": "USA | ESPN & FOX SPORTS", "parent_id": 0 },
{ "category_id": "41", "category_name": "24/7 | PPV EVENTS", "parent_id": 0 }
]
GET http://line.4kiptvpanel.store:8080/player_api.php?username=USERNAME&password=PASSWORD&action=get_live_streams&category_id=12
# Stream URL template returned per stream_id:
http://line.4kiptvpanel.store:8080/live/USERNAME/PASSWORD/STREAM_ID.ts
http://line.4kiptvpanel.store:8080/live/USERNAME/PASSWORD/STREAM_ID.m3u8
3 EPG XMLTV synchronisation routine
curl -sS --compressed "http://line.4kiptvpanel.store:8080/xmltv.php?username=USERNAME&password=PASSWORD" -o guide.xml
# Short-form EPG for a single channel (JSON, base64 descriptions):
GET http://line.4kiptvpanel.store:8080/player_api.php?username=USERNAME&password=PASSWORD&action=get_short_epg&stream_id=STREAM_ID&limit=4
<?xml version="1.0" encoding="UTF-8"?>
<tv generator-info-name="4K IPTV App EPG">
<channel id="skysportsmainevent.uk">
<display-name>Sky Sports Main Event</display-name>
<icon src="https://cdn.example/logos/ssme.png"/>
</channel>
<programme start="20261006190000 +0000" stop="20261006210000 +0000" channel="skysportsmainevent.uk">
<title lang="en">Premier League Live</title>
<desc lang="en">Live coverage, 50 fps.</desc>
<category lang="en">Sports</category>
</programme>
</tv>
4 M3U extended playlist equivalent
#EXTM3U
#EXTINF:-1 tvg-id="skysportsmainevent.uk" tvg-name="Sky Sports Main Event" tvg-logo="https://cdn.example/logos/ssme.png" group-title="UK | SKY SPORTS",Sky Sports Main Event FHD
http://line.4kiptvpanel.store:8080/live/USERNAME/PASSWORD/10231.ts
# Full playlist export:
http://line.4kiptvpanel.store:8080/get.php?username=USERNAME&password=PASSWORD&type=m3u_plus&output=ts
Client buffer time is the allocated buffer memory converted to bits, divided by the stream bitrate. Drag the sliders to see how much protection a given allocation gives against ISP shaping bursts:
A 15 MB allocation on an 18.5 Mbps 4K feed yields 6.49 seconds of reserve, enough to absorb a 2-4 second ISP shaping burst without a visible freeze.
4K IPTV App + Perfect Player FAQ
Does Perfect Player support catch-up and multi-view with 4K IPTV App?
Perfect Player by Niklabs offers lightweight 10-foot interface built for tv remotes and m3u and xtream playlists with xmltv and jtv epg. Catch-up works on channels where 4K IPTV App enables tv_archive, and each multi-view tile consumes one connection of your line.
What is the difference between Xtream Codes API, M3U URL, and Stalker Portal login?
All three deliver the same channels. Xtream Codes API uses player_api.php JSON endpoints so the player lazy-loads categories and EPG in seconds. An M3U URL (get.php) downloads a single text playlist of every stream, which is slow with 45,000 channels but works on any player. Stalker Portal authenticates by MAC address through a /c/ portal URL and is used by MAG receivers and some Smart TV apps.
Why is my EPG guide empty or showing programs at the wrong time?
Players fetch an XMLTV file from xmltv.php and match each channel by tvg-id. An empty guide means the player downloaded the file before the server finished its 15-minute refresh or the file exceeded the player size cap (set TiviMate EPG update to "never limit"). Wrong times are a timezone offset issue: XMLTV timestamps carry +0000 and the player must apply your local offset, so set an EPG shift of +1 or -5 hours in the channel settings rather than changing the device clock.
What buffer size should I set in TiviMate, Smarters, or XCIPTV for 4K sports?
Set the largest option (5,000 ms in TiviMate, "Large" in Smarters). Buffer time in seconds equals buffer bytes multiplied by 8, divided by the stream bitrate in Mbps: a 15 MB allocation on an 18.5 Mbps 4K feed yields 6.5 seconds of protection, which covers typical ISP shaping bursts of 2-4 seconds without a visible freeze.
How does multi-screen concurrency work and what happens if I exceed max_connections?
The Xtream Codes player_api.php handshake returns max_connections and active_cons. Each live or VOD stream request opens one session counted against that limit; a second TV, phone, or multi-view tile is a second connection. When active_cons would exceed max_connections, the server answers the new stream request with HTTP 403 / 458 and the player shows "max connections reached". Resellers should sell lines with 2-5 connections for households and enable IP-lock only for single-device subscribers.
How do I know if my ISP is throttling IPTV streams, and how do I stop it?
Run a speed test on the same device while a stream buffers. If raw throughput is above 25 Mbps but the player reports a bitrate below 8 Mbps, your ISP is applying traffic shaping to the stream flow, usually triggered by deep packet inspection of the TLS SNI or by sustained UDP/TCP flows to known hosting ASNs. Stop it by routing the player through a WireGuard tunnel (which hides destination and SNI inside ChaCha20-Poly1305 encryption), switching DNS to 1.1.1.1 over HTTPS, and keeping a 5,000 ms player buffer so short shaping bursts never reach the decoder.
What is device MAC address binding and why does my MAG box or Smart TV app ask for it?
Stalker / Ministra middleware authenticates a set-top box by its 48-bit MAC address (MAG boxes use the 00:1A:79 OUI prefix) instead of a username and password. The reseller panel binds that MAC to a subscription line; apps such as IBO Player and Smarters on Samsung or LG TVs generate a virtual MAC that must be registered the same way. If you replace the device, the panel must re-bind the new MAC or the portal returns an "unregistered device" error.
Every external citation on this page points to a primary source: telecommunications RFCs, ITU-T and ISO codec standards, manufacturer and developer documentation, national regulators, or official sports governing bodies. No commercial IPTV competitor is cited.