GithubHelp home page GithubHelp logo

kevinjil / jellyfin.xtream Goto Github PK

View Code? Open in Web Editor NEW
94.0 8.0 8.0 307 KB

The Jellyfin.Xtream plugin can be used to integrate the content provided by an Xtream-compatible API in your Jellyfin instance.

License: GNU General Public License v3.0

C# 86.46% HTML 4.00% JavaScript 9.12% CSS 0.42%
jellyfin-plugin xtream-codes

jellyfin.xtream's People

Contributors

dependabot[bot] avatar kevinjil avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

jellyfin.xtream's Issues

[BUG] Plugin isn't closing LiveTV sessions

JF 10.8
Plugin 0.2.1.0
Windows 10

On my Dashboard, a LiveTV session started 2 days ago appears to still be active. The activity log has it stopping and starting repeatedly over and over again. I close the window playing the TV stream 2 mins after is started, but it still shows as active. It says it's transcoding but there is nothing in my transcode directory.

Dashboard activity (notice the time, which continues to tick up)

image

Activity log (notice how it keeps stopping and restarting - this is happening without me interacting at all.

  • JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 3:30 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 3:25 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 3:20 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 3:15 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 3:10 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 3:05 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 3:00 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 2:55 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 2:50 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 2:45 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 2:40 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 2:35 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 2:30 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 2:25 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 2:20 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 2:15 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 2:10 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 2:05 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 2:00 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 1:55 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 1:50 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 1:45 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 1:40 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 1:35 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 1:30 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 1:25 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 1:20 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 1:15 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 1:10 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 1:05 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 1:00 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 12:54 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 12:49 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 12:44 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 12:39 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 12:34 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 12:29 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 12:24 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 12:19 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 12:14 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 12:09 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 12:04 PM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 11:59 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 11:54 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 11:49 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 11:44 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 11:39 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 11:34 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 11:29 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 11:24 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 11:19 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 11:14 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 11:09 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 11:04 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 10:59 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 10:54 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 10:49 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 10:44 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 10:39 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 10:34 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 10:29 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 10:24 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 10:19 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 10:14 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 10:09 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 10:04 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 9:59 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 9:54 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 9:49 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 9:44 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 9:39 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 9:34 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 9:29 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 9:24 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 9:19 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 9:14 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 9:09 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 9:04 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 8:59 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 8:54 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 8:49 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 8:44 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 8:39 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 8:34 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 8:29 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 8:24 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 8:19 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 8:14 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 8:09 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 8:04 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 7:59 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 7:54 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 7:48 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 7:43 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 7:38 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 7:33 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 7:28 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 7:23 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 7:18 AM
    JellyfinUser has finished playing USA Starz Encore East on Firefox
    today at 7:13 AM

Multiple Sources

A feature to use multiple sources/xtream codes accounts instead of just 1 at a time.

That way one can combine providers and choose channels from each

only plays for a couple seconds

Is there an "Auto-loop live streams" like feature for this plugin? Right now it plays the stream for a few seconds then stops, presumably because the stream is chunked into multiple files. (i'm not familiar with the terminology / technology here)

Native Live TV

Currently, the plugin uses channels for Live TV instead of the native Live TV. This choice has been made to ensure that Jellyfin can handle the amount of TV channels that some Xtream APIs provide. Until Live TV grouping has been implemented, this seems the best way forward.

However, in the settings panel a selection list can be added to include a limited set of IPTV categories in the native Live TV section.

Some series content returns empty folders despite it being found in the plugin setup

Sorry my C knowledge is really lacking these. days so I can't quite work out what's happening on my own.

I just got Xtream working amazingly for most of the content from the server, but when it comes to Series I'm having no luck getting them all to work.

LiveTV & Movies work perfectly but Jellyfin appears to struggle parsing most of the series returning;

[15:32:33] [DBG] [16] Jellyfin.Api.ModelBinders.CommaDelimitedArrayModelBinder: Error converting value.
System.FormatException: SongCount is not a valid value for ItemFields.
 ---> System.ArgumentException: Requested value 'SongCount' was not found.
   at System.Enum.TryParseByName(RuntimeType enumType, ReadOnlySpan`1 value, Boolean ignoreCase, Boolean throwOnFailure, UInt64& result)
   at System.Enum.TryParseInt32Enum(RuntimeType enumType, ReadOnlySpan`1 value, Int32 minInclusive, Int32 maxInclusive, Boolean ignoreCase, Boolean throwOnFailure, TypeCode type, Int32& result)
   at System.Enum.TryParse(Type enumType, ReadOnlySpan`1 value, Boolean ignoreCase, Boolean throwOnFailure, Object& result)
   at System.Enum.TryParse(Type enumType, String value, Boolean ignoreCase, Boolean throwOnFailure, Object& result)
   at System.ComponentModel.EnumConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
   --- End of inner exception stack trace ---
   at System.ComponentModel.EnumConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
   at Jellyfin.Api.ModelBinders.CommaDelimitedArrayModelBinder.GetParsedResult(IReadOnlyList`1 values, Type elementType, TypeConverter converter)

When trying to enter one of the subfolders of the channel, the rough folder structure appears to be /series/genre/serial_name/seasons/episodes

Any help would be appreciated in case I'm just missing something obvious 🙈

Implement local cache database

Implement a local sqlite cache database to solve provider-related issues and an indexed database for faster querying.

Goal:

  • Provide multiple provider support
  • Provide multple credentials per provider support
  • Provide indexed search for channels and content
  • Do not cause timeouts in content queries
  • (Hopefully) Fix issues #87 #85 #71 #56 #42

DB Scheme:
TODO (post sqlite scheme here)

[Feature Request] Allows Xtreme Codecs To Be Disabled By Default

Maybe I missed it, but a setting that would change the default access for new users to false would be useful. I allow people on my server to invite friends, but often time those people don't need access to xtreme codes.

Currently, I am just looking for new users each day and turning off their access. Occasionally one will slip through and someone who shouldn't have live TV access is using it.

Only search/index on movies and liveTV channels and not series

Hi there..

I love the plugin and it is so great compared to what I have tried before.. but Ian missing that I can search on series as well..

Seems it is only movies and channels and I get when I search in the top of jellyfin. Let me know if I should provide screenshot or logs.

EPG override

It would be amazing to have the option to override the EPG from the xtream API to use the XMLTV from LiveTV. Sometimes the source only has EPG for some channels and can be incomplete. An XMLTV file can give the flexibility to customize program pictures and adds more information.

It probably needs to override the channel id, so the XMLTV EPG works.

Does not appear in the repo

once the repo linked to jellyfin version 6.0 does not appear contrary to others and in manual installation jellyfin indicates that the plugin has no configuration so impossible to change the settings

Rename entries

A lot of providers prefix entries with tags such as country, language, and stream quality. Allowing the plugin to rename these would clean up the interface.

The tags can also be parsed and stored as tags in the library data.

Options:

  1. Manual renaming + tagging
  2. Automatic renaming + tagging

No channels play

Hello!

New Jellyfin user here. I have everything working except for my IPTV. The plugin is setup, authentication works, I can see my EPG and all the channels, but when I click on a show to watch it...nothing happens for about 3-4 minutes, then I get this popup:

"Playback Failed
Playback failed with error "loading failed". Retry with transcode? (Note this may hang the player.)" And I also get this error:

"This client isn't compatible with the media and the server isn't sending a compatible media format."

Any ideas??

TV Channels not organised

Hi all,
When i add channel selections they all show up under the channels section in live tv. Is there a way to seperate them based on the categories given by the provider.
For example currentely if i add a news and then a gaming category they are all bunched up together in the channels section, is there a way to have subsections i.e News , Games .... etc ? and within these subsections have the relevant shows.
All this without having to manually create categories?
Thanks

Missing items

There a currently a lot of missing content from my list, in series I have 1000+ items in the categories, but only one item when I visit the categories.
Screenshot 2023-08-23 at 15 54 51
Screenshot 2023-08-23 at 15 54 33

Category display + EPG

Hi,

Thanks for this awesome plugin, when I enable on specific categories in the plugin settings, all categories still show and it doesn't seem to still show. Also, I cant seem to find how the EPG is integrated? The default "Live TV" library is also still showing and has nothing inside of it? Is this correct?

Thanks

No subtitles and media library not visible to other users

Everything is in the title.
Concerning the subtitles, isn't there a way to engrave them or extract them? I don't really know how it works.
And for the users the mediatheques appear only for my main user, strangely enough .
thanks.

Can't switch accounts. cached list

When i enter in an account A login it works ok.

but when i delete account A login details and enter Account B

the channels from account A remain in the GUI.

the only way to remove them is to uninstall the plugin

Recording

Hi, first thanks for this plugin, really simplifies things for me.

Is recording using this plugin supposed to work? When I setup this plugin I can watch Live TV fine but if I try to record just get the circle going around and around.

If I setup the normal JF live TV section with M3U tuner and EPG manually set recording works fine

Thanks

Multiple accounts linked to user

Can you add a feature where the Xtream account can be linked to specific users?

I can modify the code myself but I would like an over view on how I can do that. Even if it is like a "hack" to modify a file manually without any UI it would be amazing.

I have an error putting the url

I get an error, when I load the channels and choose them, the url they give me hangs and it doesn't work for 20 minutes. Can someone tell me why?

As you will see in the image, it stays loading and no longer works for 20 minutes.

Sin título

Treat Live TV like a Channel

Feature Request to assign live TV like a Channel under the plugin, so that user access may be selected that way

Logic being that if the Catchup, Series and Movies come from 1 xtream playlist, the other things that don't fall under those sections may be classified as a Live channel.

Currently i can select users that have access to catchup, VOD channels, so maybe its possible to do same with Live TV?

support 10.8

with Jellyfin 10.8 now released. It would be nice to support that as well

Missing unicode parsing in EPG

image

As you can see in the EPG there are \uXXXX codes instead of the right characters.

In this case instead of this:

"U\u017dIVO: U\u017eivo: NFL: DIVISIONAL PLAYOFF G3: DETROIT - TAMPA BAY, ameri\u010dki nogomet"

It should display:

"UŽIVO: Uživo: NFL: DIVISIONAL PLAYOFF G3: DETROIT - TAMPA BAY, američki nogomet"

The encodings for EPG seem to have the C/C++ format, so they don't render in the Jellyfin UI and need to be transformed into HTML entities: https://www.fileformat.info/info/unicode/char/17d/index.htm

This code seems to accomplish it:

// A function to convert a hexadecimal number to a decimal number
function hexToDec(hex) {
  return parseInt(hex, 16);
}

// A function to convert a C style unicode escape sequence to a HTML entity
function unicodeToHtml(unicode) {
  // Remove the backslash and the u from the sequence
  var hex = unicode.slice(2);
  // Convert the hexadecimal number to a decimal number
  var dec = hexToDec(hex);
  // Return the HTML entity using the decimal number as the character code
  return "&#" + dec + ";";
}

// A function to parse a string with C style unicode escape sequences into HTML entities
function parseUnicodeToHtml(str) {
  // Use a regular expression to match all C style unicode escape sequences in the string
  var regex = /\u[0-9a-fA-F]{4}/g;
  // Replace each match with the corresponding HTML entity using the unicodeToHtml function
  var result = str.replace(regex, unicodeToHtml);
  // Return the result
  return result;
}

// A sample string with C style unicode escape sequences
var sample = "U\u017dIVO: U\u017eivo: NFL: DIVISIONAL PLAYOFF G3: DETROIT - TAMPA BAY, ameri\u010dki nogomet";

// Parse the sample string into HTML entities
var parsed = parseUnicodeToHtml(sample);

// Print the result
console.log(parsed);

The string could also contain a double escaped version with two backslashes instead of one.
Probably it would be better to try replacing those first, it is just an additional backslash in the regex above.

Ability to default numbering to 1-1xxx

Is it possible to add option to default the numbering of channels so they are grouped together. For example, Group 1 is channels 1-20, Group 2 is channels 21-40, Group 3 is channels 41-60 and so on instead of every group starting with 1. For whatever reason, the override option never works for me.

anonymous connection

HI.
Is it possible to add a proxy or openvpn system to the plugin?
IPTV services are not to be trusted, it is better to keep your IP address hidden, and why not, even the user-agent.
Thank you.

Can not play any channel or content

Playback Error
This client isn't compatible with the media and the server isn't sending a compatible media format.

the plugin is installed on a synology DS218+ NAS on docker. All movies work just fine. Any idea what might be the issue?

EPG Time zone adjustment

Hi, First of all, Thanks you for your amazing plugin :)

It is possible to add an option to change the EPD time zone.

I mean, all my channel epg are 1 hours late because I can't change the time zone of my shared VPS.

Simple option as +1 hour ou -1 hour would be enough, If possible for sure ;)

Thanks

[Question] Catch UP / Rewind?

Hello does this plugin allow me to rewind like 7 Days back if my provider allow me 7 Days for e.g?

Or is there a planed feature for that?

Other question this plugin works for emby?

Remove the Xtream Live section

The Live TV integration has matured enough to remove the need for the (sort-of duplicate) Xtream Live section with less features.

Loadingscreen on Samsung TV with Jellyfin.Xtream

Hello,

i have a Samsung Tizen TV with the Jellyfin App, and installed Jellyfin.Xtream AddOn.
I can watch IPTV over my Windows Jellyfin App and Browser, but over my Samsung TV i have always a Loadingscreen if i play a TV Channel.

Can any help me?

WhatsApp.Video.2023-09-19.at.07.12.01.mp4

[REQUEST] Better channel customization

Wish list for channels:

  • renumber/reorder channels and groups
  • change logos
  • assign a EPG guide NOT provided by Xtream (one that is added in the live tv interface?)
  • add custom "dummy" guide data for when no guide data is available

VOD and Series are being software transcoded

Thank you for the work. It is very useful to have Xtream API working with Jellyfin.

I noticed that VOD and Series are always being transcoded, despite the codec being fully supported on the client side. The transcoding is also software-based and not taking advantage of the hardware. The LiveTV is working as expected and direct plays on the client.

Here is a snippet of the log generated during transcoding:

/videos/8529e4ee-612e-1588-eee8-16703a294115/hls1/main/0.ts

{"Protocol":1,"Id":"831599","Path":"http://..................","EncoderPath":null,"EncoderProtocol":1,"Type":0,"Container":null,"Size":null,"Name":"default","IsRemote":true,"ETag":null,"RunTimeTicks":33998400000,"ReadAtNativeFramerate":false,"IgnoreDts":false,"IgnoreIndex":false,"GenPtsInput":false,"SupportsTranscoding":true,"SupportsDirectStream":true,"SupportsDirectPlay":true,"IsInfiniteStream":false,"RequiresOpening":false,"OpenToken":null,"RequiresClosing":false,"LiveStreamId":null,"BufferMs":null,"RequiresLooping":false,"SupportsProbing":true,"VideoType":null,"IsoType":null,"Video3DFormat":null,"MediaStreams":[],"MediaAttachments":[],"Formats":[],"Bitrate":null,"Timestamp":null,"RequiredHttpHeaders":{},"TranscodingUrl":null,"TranscodingSubProtocol":null,"TranscodingContainer":null,"AnalyzeDurationMs":null,"DefaultAudioStreamIndex":null,"DefaultSubtitleStreamIndex":null}

/usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -init_hw_device vaapi=va:,driver=iHD,kernel_driver=i915 -init_hw_device qsv=qs@va -filter_hw_device qs -autorotate 0 -i "http://......." -map_metadata -1 -map_chapters -1 -threads 2 -sn   -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 0 -hls_segment_filename "/config/transcodes/bdbe5804cc6e346935537e30bd5f90fe%d.ts" -hls_playlist_type vod -hls_list_size 0 -y "/config/transcodes/bdbe5804cc6e346935537e30bd5f90fe.m3u8"


ffmpeg version 5.1.3-Jellyfin Copyright (c) 2000-2022 the FFmpeg developers
  built with gcc 10 (Debian 10.2.1-6)
  configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-libs=-lfftw3f --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libsvtav1 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-opencl --enable-vaapi --enable-amf --enable-libmfx --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
  libavutil      57. 28.100 / 57. 28.100
  libavcodec     59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter     8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100
Input #0, matroska,webm, from 'http://.......':
  Metadata:
    title           : 1. kapitola
    encoder         : libebml v1.4.2 + libmatroska v1.6.4
    creation_time   : 2022-11-27T18:24:58.000000Z
  Duration: 00:56:39.84, start: 0.000000, bitrate: 1692 kb/s
  Stream #0:0: Video: h264 (High), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn (default)
    Metadata:
      BPS             : 1306136
      DURATION        : 00:56:38.020000000
      NUMBER_OF_FRAMES: 81471
      NUMBER_OF_BYTES : 554784704
      _STATISTICS_WRITING_APP: mkvmerge v68.0.0 ('The Curtain') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2022-11-27 18:24:58
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:1(ger): Audio: eac3, 48000 Hz, stereo, fltp, 128 kb/s
    Metadata:
      BPS             : 128000
      DURATION        : 00:56:39.840000000
      NUMBER_OF_FRAMES: 106245
      NUMBER_OF_BYTES : 54397440
      _STATISTICS_WRITING_APP: mkvmerge v68.0.0 ('The Curtain') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2022-11-27 18:24:58
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:2(eng): Audio: eac3, 48000 Hz, stereo, fltp, 128 kb/s
    Metadata:
      BPS             : 128000
      DURATION        : 00:56:39.840000000
      NUMBER_OF_FRAMES: 106245
      NUMBER_OF_BYTES : 54397440
      _STATISTICS_WRITING_APP: mkvmerge v68.0.0 ('The Curtain') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2022-11-27 18:24:58
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:3(pol): Audio: eac3, 48000 Hz, stereo, fltp, 128 kb/s
    Metadata:
      BPS             : 128000
      DURATION        : 00:56:39.840000000
      NUMBER_OF_FRAMES: 106245
      NUMBER_OF_BYTES : 54397440
      _STATISTICS_WRITING_APP: mkvmerge v68.0.0 ('The Curtain') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2022-11-27 18:24:58
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:4(cze): Subtitle: subrip (default)
    Metadata:
      BPS             : 69
      DURATION        : 00:55:48.554000000
      NUMBER_OF_FRAMES: 852
      NUMBER_OF_BYTES : 29258
      _STATISTICS_WRITING_APP: mkvmerge v68.0.0 ('The Curtain') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2022-11-27 18:24:58
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:5(ger): Subtitle: subrip (default)
    Metadata:
      BPS             : 78
      DURATION        : 00:53:03.932000000
      NUMBER_OF_FRAMES: 761
      NUMBER_OF_BYTES : 31305
      _STATISTICS_WRITING_APP: mkvmerge v68.0.0 ('The Curtain') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2022-11-27 18:24:58
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:6(ger): Subtitle: subrip (default)
    Metadata:
      BPS             : 0
      DURATION        : 00:52:19.678000000
      NUMBER_OF_FRAMES: 7
      NUMBER_OF_BYTES : 361
      _STATISTICS_WRITING_APP: mkvmerge v68.0.0 ('The Curtain') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2022-11-27 18:24:58
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:7(eng): Subtitle: subrip (default)
    Metadata:
      BPS             : 77
      DURATION        : 00:53:18.570000000
      NUMBER_OF_FRAMES: 948
      NUMBER_OF_BYTES : 31117
      _STATISTICS_WRITING_APP: mkvmerge v68.0.0 ('The Curtain') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2022-11-27 18:24:58
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:8(hun): Subtitle: subrip (default)
    Metadata:
      BPS             : 66
      DURATION        : 00:55:48.679000000
      NUMBER_OF_FRAMES: 853
      NUMBER_OF_BYTES : 27791
      _STATISTICS_WRITING_APP: mkvmerge v68.0.0 ('The Curtain') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2022-11-27 18:24:58
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:9(pol): Subtitle: subrip (default)
    Metadata:
      BPS             : 67
      DURATION        : 00:55:46.143000000
      NUMBER_OF_FRAMES: 769
      NUMBER_OF_BYTES : 28256
      _STATISTICS_WRITING_APP: mkvmerge v68.0.0 ('The Curtain') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2022-11-27 18:24:58
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:10(slo): Subtitle: subrip (default)
    Metadata:
      BPS             : 67
      DURATION        : 00:55:46.051000000
      NUMBER_OF_FRAMES: 848
      NUMBER_OF_BYTES : 28301
      _STATISTICS_WRITING_APP: mkvmerge v68.0.0 ('The Curtain') 64-bit
      _STATISTICS_WRITING_DATE_UTC: 2022-11-27 18:24:58
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
  Stream #0:1 -> #0:1 (eac3 (native) -> aac (native))
Press [q] to stop, [?] for help
[libx264 @ 0x555b6b8eba80] using SAR=1/1
[libx264 @ 0x555b6b8eba80] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
[libx264 @ 0x555b6b8eba80] profile High, level 4.0, 4:2:0, 8-bit
[libx264 @ 0x555b6b8eba80] 264 - core 160 r3011 cde9a93 - H.264/MPEG-4 AVC codec - Copyleft 2003-2020 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=2 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=23 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, hls, to '/config/transcodes/bdbe5804cc6e346935537e30bd5f90fe.m3u8':
  Metadata:
    encoder         : Lavf59.27.100
  Stream #0:0: Video: h264, yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 23.98 fps, 90k tbn (default)
    Metadata:
      encoder         : Lavc59.37.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
  Stream #0:1: Audio: aac (LC), 48000 Hz, stereo, fltp, 128 kb/s
    Metadata:
      encoder         : Lavc59.37.100 aac
frame=    1 fps=0.0 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=   0x    
frame=   46 fps=0.0 q=0.0 size=N/A time=00:00:01.53 bitrate=N/A speed=2.53x    
frame=   54 fps= 48 q=28.0 size=N/A time=00:00:01.79 bitrate=N/A speed= 1.6x    
frame=   78 fps= 48 q=28.0 size=N/A time=00:00:02.85 bitrate=N/A speed=1.75x    
frame=  100 fps= 47 q=28.0 size=N/A time=00:00:03.88 bitrate=N/A speed=1.82x    
frame=  121 fps= 46 q=28.0 size=N/A time=00:00:04.77 bitrate=N/A speed= 1.8x    
frame=  141 fps= 45 q=28.0 size=N/A time=00:00:05.56 bitrate=N/A speed=1.76x    
frame=  161 fps= 44 q=28.0 size=N/A time=00:00:06.25 bitrate=N/A speed= 1.7x    
frame=  180 fps= 43 q=28.0 size=N/A time=00:00:07.01 bitrate=N/A speed=1.68x    
frame=  201 fps= 43 q=28.0 size=N/A time=00:00:08.55 bitrate=N/A speed=1.81x    
frame=  231 fps= 44 q=28.0 size=N/A time=00:00:09.34 bitrate=N/A speed=1.79x    
frame=  262 fps= 46 q=28.0 size=N/A time=00:00:10.60 bitrate=N/A speed=1.85x    
frame=  289 fps= 46 q=28.0 size=N/A time=00:00:11.52 bitrate=N/A speed=1.85x    
[hls @ 0x555b6b8fd400] Opening '/config/transcodes/bdbe5804cc6e346935537e30bd5f90fe0.ts' for writing
frame=  311 fps= 46 q=28.0 size=N/A time=00:00:12.54 bitrate=N/A speed=1.85x    
frame=  336 fps= 46 q=25.0 size=N/A time=00:00:13.82 bitrate=N/A speed= 1.9x    
[hls @ 0x555b6b8fd400] Opening '/config/transcodes/bdbe5804cc6e346935537e30bd5f90fe1.ts' for writing

Surprisingly, it is converting from h264 to h264 via software...

Parse media information from the API

The API provides information on resolution, codecs, audio/video tracks etc. Parse this information to allow filtering of content in Jellyfin and possibly remove the need for ffprobe.

Nothing getting loaded (Channel is completly empty)

Hi.

I try to install the plugin , provide the url and password, but nothing getting loaded, nothing appear on live tv...
Here some screenshot

image
image
image
image

Plugin version : 0.6.1.0
Jellyfin version : 10.8.10

Thanks you

[Feature Request] User control over visibility of libraries, groups, channels

Jellyfin Ubuntu 20 server
Xtream plugin v 0.1.0.0

  • After Xtream credentials are entered, it would ne nice to be able to select which libraries (VOD, Series, Live TV) we would like to display on our server.
  • After selecting which libraries we would like to display, it would be nice to be able to turn groups ON and OFF. Many providers give users thousands of channels and groups they will never watch
  • After paring down groups, it would be nice to hide certain channels within a group.

Cannot reproduce any channels

I run jellyfin server on linux.

I have reproduced this behaviour in both android client and web client.

I configure my Xtream server and credentials, it loads the channel list.

I then go to Live TV and click on a channel, I see a spinner and nothing loads.

This is the log in the backend:

[17:14:05] [INF] [74] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for user. EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[17:14:05] [INF] [74] Jellyfin.Api.Helpers.MediaInfoHelper: StreamBuilder.BuildVideoItem( Profile=Anonymous Profile, Path=Unknown path, AudioStreamIndex=null, SubtitleStreamIndex=null ) => ( PlayMethod=Transcode, TranscodeReason=ContainerNotSupported, VideoCodecNotSupported ) media:/videos/fef91c64-a356-d3c7-0d6d-b3b1a3ad194e/master.m3u8?MediaSourceId=fef91c64a356d3c70d6db3b1a3ad194e&VideoCodec=h264&AudioCodec=aac,mp3&VideoBitrate=139808000&AudioBitrate=192000&api_key=<token>&TranscodingMaxAudioChannels=2&RequireAvc=false&SegmentContainer=ts&MinSegments=1&BreakOnNonKeyFrames=True&TranscodeReasons=ContainerNotSupported,%20VideoCodecNotSupported
[17:14:05] [INF] [74] Emby.Server.Implementations.LiveTv.LiveTvManager: Opening channel stream from Xtream Live, external channel Id: 25938
[17:14:05] [INF] [74] Emby.Server.Implementations.Library.MediaSourceManager: Waiting 3000ms before probing the live stream
[17:14:08] [INF] [83] MediaBrowser.MediaEncoding.Encoder.MediaEncoder: /usr/lib/jellyfin-ffmpeg/ffprobe -analyzeduration 3000000 -i "http://<redacted>:8096/LiveTv/LiveStreamFiles/a9fcbf31-2e4a-460a-9c14-e374b737037b/stream.ts" -threads 0 -v warning -print_format json -show_streams -show_format
[17:14:08] [INF] [8] Jellyfin.Xtream.LiveTvService: Restream for channel 25938 was not opened.
[17:14:08] [INF] [8] Jellyfin.Xtream.LiveTvService: Starting restream for channel 25938.
[17:14:08] [INF] [8] Jellyfin.Xtream.LiveTvService: Opening restream 1 for channel 25938.
[17:14:38] [WRN] [10] Jellyfin.Server.Middleware.ResponseTimeMiddleware: Slow HTTP Response from http://<redacted>:8096/LiveTv/LiveStreamFiles/a9fcbf31-2e4a-460a-9c14-e374b737037b/stream.ts to <redacted> in 0:00:30.005281 with Status Code 200
http://<redacted>:8096/LiveTv/LiveStreamFiles/a9fcbf31-2e4a-460a-9c14-e374b737037b/stream.ts: Invalid data found when processing input
[17:14:38] [ERR] [10] Emby.Server.Implementations.Library.MediaSourceManager: Error probing live tv stream
MediaBrowser.Common.FfmpegException: ffprobe failed - streams and format are both null.
   at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, Boolean forceEnableLogging, CancellationToken cancellationToken)
   at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, Boolean forceEnableLogging, CancellationToken cancellationToken)
   at Emby.Server.Implementations.Library.LiveStreamHelper.AddMediaInfoWithProbe(MediaSourceInfo mediaSource, Boolean isAudio, String cacheKey, Boolean addProbeDelay, CancellationToken cancellationToken)
   at Emby.Server.Implementations.Library.MediaSourceManager.OpenLiveStreamInternal(LiveStreamRequest request, CancellationToken cancellationToken)
[17:14:38] [INF] [10] Emby.Server.Implementations.Library.MediaSourceManager: Live stream opened: {"Protocol": "Http", "Id": "25938", "Path": "http://<redacted>:8096/LiveTv/LiveStreamFiles/a9fcbf31-2e4a-460a-9c14-e374b737037b/stream.ts", "EncoderPath": "http://<redacted>:8096/LiveTv/LiveStreamFiles/a9fcbf31-2e4a-460a-9c14-e374b737037b/stream.ts", "EncoderProtocol": "Http", "Type": "Default", "Container": null, "Size": null, "Name": "default", "IsRemote": true, "ETag": null, "RunTimeTicks": null, "ReadAtNativeFramerate": false, "IgnoreDts": false, "IgnoreIndex": false, "GenPtsInput": false, "SupportsTranscoding": true, "SupportsDirectStream": true, "SupportsDirectPlay": true, "IsInfiniteStream": true, "RequiresOpening": true, "OpenToken": null, "RequiresClosing": true, "LiveStreamId": "a17c75760a04e99b68cf766e11316e1c_ee8461408bd99accf028baca3558e074_25938", "BufferMs": null, "RequiresLooping": false, "SupportsProbing": true, "VideoType": null, "IsoType": null, "Video3DFormat": null, "MediaStreams": [{"Codec": null, "CodecTag": null, "Language": null, "ColorRange": null, "ColorSpace": null, "ColorTransfer": null, "ColorPrimaries": null, "DvVersionMajor": null, "DvVersionMinor": null, "DvProfile": null, "DvLevel": null, "RpuPresentFlag": null, "ElPresentFlag": null, "BlPresentFlag": null, "DvBlSignalCompatibilityId": null, "Comment": null, "TimeBase": null, "CodecTimeBase": null, "Title": null, "VideoRange": "SDR", "VideoRangeType": "SDR", "VideoDoViTitle": null, "LocalizedUndefined": null, "LocalizedDefault": null, "LocalizedForced": null, "LocalizedExternal": null, "DisplayTitle": "SDR", "NalLengthSize": "0", "IsInterlaced": true, "IsAVC": null, "ChannelLayout": null, "BitRate": 20000000, "BitDepth": null, "RefFrames": null, "PacketLength": null, "Channels": null, "SampleRate": null, "IsDefault": false, "IsForced": false, "Height": null, "Width": null, "AverageFrameRate": null, "RealFrameRate": null, "Profile": null, "Type": "Video", "AspectRatio": null, "Index": -1, "Score": null, "IsExternal": false, "DeliveryMethod": null, "DeliveryUrl": null, "IsExternalUrl": null, "IsTextSubtitleStream": false, "SupportsExternalStream": false, "Path": null, "PixelFormat": null, "Level": null, "IsAnamorphic": null, "$type": "MediaStream"}, {"Codec": null, "CodecTag": null, "Language": null, "ColorRange": null, "ColorSpace": null, "ColorTransfer": null, "ColorPrimaries": null, "DvVersionMajor": null, "DvVersionMinor": null, "DvProfile": null, "DvLevel": null, "RpuPresentFlag": null, "ElPresentFlag": null, "BlPresentFlag": null, "DvBlSignalCompatibilityId": null, "Comment": null, "TimeBase": null, "CodecTimeBase": null, "Title": null, "VideoRange": null, "VideoRangeType": null, "VideoDoViTitle": null, "LocalizedUndefined": null, "LocalizedDefault": null, "LocalizedForced": null, "LocalizedExternal": null, "DisplayTitle": "", "NalLengthSize": null, "IsInterlaced": false, "IsAVC": null, "ChannelLayout": null, "BitRate": null, "BitDepth": null, "RefFrames": null, "PacketLength": null, "Channels": null, "SampleRate": null, "IsDefault": false, "IsForced": false, "Height": null, "Width": null, "AverageFrameRate": null, "RealFrameRate": null, "Profile": null, "Type": "Audio", "AspectRatio": null, "Index": -1, "Score": null, "IsExternal": false, "DeliveryMethod": null, "DeliveryUrl": null, "IsExternalUrl": null, "IsTextSubtitleStream": false, "SupportsExternalStream": false, "Path": null, "PixelFormat": null, "Level": null, "IsAnamorphic": null, "$type": "MediaStream"}], "MediaAttachments": [], "Formats": [], "Bitrate": 20000000, "Timestamp": null, "RequiredHttpHeaders": {}, "TranscodingUrl": null, "TranscodingSubProtocol": null, "TranscodingContainer": null, "AnalyzeDurationMs": 3000, "TranscodeReasons": "0", "DefaultAudioStreamIndex": null, "DefaultSubtitleStreamIndex": null, "VideoStream": {"Codec": null, "CodecTag": null, "Language": null, "ColorRange": null, "ColorSpace": null, "ColorTransfer": null, "ColorPrimaries": null, "DvVersionMajor": null, "DvVersionMinor": null, "DvProfile": null, "DvLevel": null, "RpuPresentFlag": null, "ElPresentFlag": null, "BlPresentFlag": null, "DvBlSignalCompatibilityId": null, "Comment": null, "TimeBase": null, "CodecTimeBase": null, "Title": null, "VideoRange": "SDR", "VideoRangeType": "SDR", "VideoDoViTitle": null, "LocalizedUndefined": null, "LocalizedDefault": null, "LocalizedForced": null, "LocalizedExternal": null, "DisplayTitle": "SDR", "NalLengthSize": "0", "IsInterlaced": true, "IsAVC": null, "ChannelLayout": null, "BitRate": 20000000, "BitDepth": null, "RefFrames": null, "PacketLength": null, "Channels": null, "SampleRate": null, "IsDefault": false, "IsForced": false, "Height": null, "Width": null, "AverageFrameRate": null, "RealFrameRate": null, "Profile": null, "Type": "Video", "AspectRatio": null, "Index": -1, "Score": null, "IsExternal": false, "DeliveryMethod": null, "DeliveryUrl": null, "IsExternalUrl": null, "IsTextSubtitleStream": false, "SupportsExternalStream": false, "Path": null, "PixelFormat": null, "Level": null, "IsAnamorphic": null, "$type": "MediaStream"}, "$type": "MediaSourceInfo"}
[17:14:38] [INF] [10] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for user. EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[17:14:38] [INF] [10] Jellyfin.Api.Helpers.MediaInfoHelper: StreamBuilder.BuildVideoItem( Profile=Anonymous Profile, Path=http://<redacted>:8096/LiveTv/LiveStreamFiles/a9fcbf31-2e4a-460a-9c14-e374b737037b/stream.ts, AudioStreamIndex=null, SubtitleStreamIndex=null ) => ( PlayMethod=Transcode, TranscodeReason=ContainerNotSupported, VideoCodecNotSupported, AudioCodecNotSupported ) media:/videos/fef91c64-a356-d3c7-0d6d-b3b1a3ad194e/master.m3u8?MediaSourceId=25938&VideoCodec=h264&AudioCodec=aac,mp3&AudioStreamIndex=-1&VideoBitrate=139616000&AudioBitrate=384000&api_key=<token>&LiveStreamId=a17c75760a04e99b68cf766e11316e1c_ee8461408bd99accf028baca3558e074_25938&TranscodingMaxAudioChannels=2&RequireAvc=false&SegmentContainer=ts&MinSegments=1&BreakOnNonKeyFrames=True&TranscodeReasons=ContainerNotSupported,%20VideoCodecNotSupported,%20AudioCodecNotSupported
[17:14:38] [WRN] [10] Jellyfin.Server.Middleware.ResponseTimeMiddleware: Slow HTTP Response from http://jellyfin.local:8096/Items/fef91c64a356d3c70d6db3b1a3ad194e/PlaybackInfo?UserId=4a9eb26aa899447c8e971cdc7b072be3&StartTimeTicks=0&IsPlayback=true&AutoOpenLiveStream=true&MaxStreamingBitrate=140000000 to 192.168.15.100 in 0:00:33.0751897 with Status Code 200
[17:14:39] [INF] [10] Jellyfin.Api.Controllers.DynamicHlsController: Current HLS implementation doesn't support non-keyframe breaks but one is requested, ignoring that request
[17:14:39] [INF] [10] Jellyfin.Api.Helpers.TranscodingJobHelper: /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 3000000 -autorotate 0 -i "http://<redacted>:8096/LiveTv/LiveStreamFiles/a9fcbf31-2e4a-460a-9c14-e374b737037b/stream.ts" -map_metadata -1 -map_chapters -1 -threads 0 -sn -codec:v:0 libx264 -preset superfast -crf 23 -maxrate 20000000 -bufsize 40000000 -x264opts:0 subme=0:me_range=4:rc_lookahead=10:me=dia:no_chroma_me:8x8dct=0:partitions=none -force_key_frames:0 "expr:gte(t,n_forced*3)" -sc_threshold:v:0 0 -vf "setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,yadif=0:-1:0,format=yuv420p" -flags -global_header -codec:a:0 libfdk_aac -ac 2 -ab 384000 -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 0 -hls_base_url "hls/6ff2f02f8001021bd813f15c762f9368/" -hls_segment_filename "/config/transcodes/6ff2f02f8001021bd813f15c762f9368%d.ts" -hls_playlist_type event -hls_list_size 0 -y "/config/transcodes/6ff2f02f8001021bd813f15c762f9368.m3u8"
[17:14:39] [INF] [86] Jellyfin.Xtream.LiveTvService: Restream for channel 25938 was not opened.
[17:14:39] [INF] [86] Jellyfin.Xtream.LiveTvService: Starting restream for channel 25938.
[17:14:39] [INF] [86] Jellyfin.Xtream.LiveTvService: Opening restream 2 for channel 25938.
[17:15:09] [WRN] [8] Jellyfin.Server.Middleware.ResponseTimeMiddleware: Slow HTTP Response from http://<redacted>:8096/LiveTv/LiveStreamFiles/a9fcbf31-2e4a-460a-9c14-e374b737037b/stream.ts to <redacted> in 0:00:30.0197311 with Status Code 200
[17:15:09] [ERR] [89] Jellyfin.Api.Helpers.TranscodingJobHelper: FFmpeg exited with code 1
[17:15:09] [INF] [8] Jellyfin.Api.Controllers.DynamicHlsController: Current HLS implementation doesn't support non-keyframe breaks but one is requested, ignoring that request
[17:15:09] [INF] [8] Jellyfin.Api.Helpers.TranscodingJobHelper: /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 3000000 -autorotate 0 -i "http://<redacted>:8096/LiveTv/LiveStreamFiles/a9fcbf31-2e4a-460a-9c14-e374b737037b/stream.ts" -map_metadata -1 -map_chapters -1 -threads 0 -sn -codec:v:0 libx264 -preset superfast -crf 23 -maxrate 20000000 -bufsize 40000000 -x264opts:0 subme=0:me_range=4:rc_lookahead=10:me=dia:no_chroma_me:8x8dct=0:partitions=none -force_key_frames:0 "expr:gte(t,n_forced*3)" -sc_threshold:v:0 0 -vf "setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,yadif=0:-1:0,format=yuv420p" -flags -global_header -codec:a:0 libfdk_aac -ac 2 -ab 384000 -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 0 -hls_base_url "hls/6ff2f02f8001021bd813f15c762f9368/" -hls_segment_filename "/config/transcodes/6ff2f02f8001021bd813f15c762f9368%d.ts" -hls_playlist_type event -hls_list_size 0 -y "/config/transcodes/6ff2f02f8001021bd813f15c762f9368.m3u8"
[17:15:09] [ERR] [89] Jellyfin.Server.Middleware.ExceptionMiddleware: Error processing request. URL GET /videos/fef91c64-a356-d3c7-0d6d-b3b1a3ad194e/live.m3u8.
MediaBrowser.Common.FfmpegException: FFmpeg exited with code 1
   at Jellyfin.Api.Helpers.TranscodingJobHelper.StartFfMpeg(StreamState state, String outputPath, String commandLineArguments, HttpRequest request, TranscodingJobType transcodingJobType, CancellationTokenSource cancellationTokenSource, String workingDirectory)
   at Jellyfin.Api.Controllers.DynamicHlsController.GetLiveHlsStream(Guid itemId, String container, Nullable`1 static, String params, String tag, String deviceProfileId, String playSessionId, String segmentContainer, Nullable`1 segmentLength, Nullable`1 minSegments, String mediaSourceId, String deviceId, String audioCodec, Nullable`1 enableAutoStreamCopy, Nullable`1 allowVideoStreamCopy, Nullable`1 allowAudioStreamCopy, Nullable`1 breakOnNonKeyFrames, Nullable`1 audioSampleRate, Nullable`1 maxAudioBitDepth, Nullable`1 audioBitRate, Nullable`1 audioChannels, Nullable`1 maxAudioChannels, String profile, String level, Nullable`1 framerate, Nullable`1 maxFramerate, Nullable`1 copyTimestamps, Nullable`1 startTimeTicks, Nullable`1 width, Nullable`1 height, Nullable`1 videoBitRate, Nullable`1 subtitleStreamIndex, Nullable`1 subtitleMethod, Nullable`1 maxRefFrames, Nullable`1 maxVideoBitDepth, Nullable`1 requireAvc, Nullable`1 deInterlace, Nullable`1 requireNonAnamorphic, Nullable`1 transcodingMaxAudioChannels, Nullable`1 cpuCoreLimit, String liveStreamId, Nullable`1 enableMpegtsM2TsMode, String videoCodec, String subtitleCodec, String transcodeReasons, Nullable`1 audioStreamIndex, Nullable`1 videoStreamIndex, Nullable`1 context, Dictionary`2 streamOptions, Nullable`1 maxWidth, Nullable`1 maxHeight, Nullable`1 enableSubtitlesInManifest)
   at lambda_method1009(Closure , Object )
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Jellyfin.Server.Middleware.ServerStartupMessageMiddleware.Invoke(HttpContext httpContext, IServerApplicationHost serverApplicationHost, ILocalizationManager localizationManager)
   at Jellyfin.Server.Middleware.WebSocketHandlerMiddleware.Invoke(HttpContext httpContext, IWebSocketManager webSocketManager)
   at Jellyfin.Server.Middleware.IpBasedAccessValidationMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager)
   at Jellyfin.Server.Middleware.LanFilteringMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager, IServerConfigurationManager serverConfigurationManager)
   at Microsoft.AspNetCore.Authorization.Policy.AuthorizationMiddlewareResultHandler.HandleAsync(RequestDelegate next, HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Jellyfin.Server.Middleware.QueryStringDecodingMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.ReDoc.ReDocMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Jellyfin.Server.Middleware.RobotsRedirectionMiddleware.Invoke(HttpContext httpContext)
   at Jellyfin.Server.Middleware.LegacyEmbyRouteRewriteMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext context)
   at Jellyfin.Server.Middleware.ResponseTimeMiddleware.Invoke(HttpContext context, IServerConfigurationManager serverConfigurationManager)
   at Jellyfin.Server.Middleware.ExceptionMiddleware.Invoke(HttpContext context)
[17:15:09] [WRN] [89] Jellyfin.Server.Middleware.ResponseTimeMiddleware: Slow HTTP Response from http://jellyfin.local:8096/videos/fef91c64-a356-d3c7-0d6d-b3b1a3ad194e/live.m3u8?DeviceId=TW96aWxsYS81LjAgKFgxMTsgTGludXggeDg2XzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTIwLjAuMC4wIFNhZmFyaS81MzcuMzZ8MTcwMjQwODYyOTAwMg11&MediaSourceId=25938&VideoCodec=h264&AudioCodec=aac,mp3&AudioStreamIndex=-1&VideoBitrate=139616000&AudioBitrate=384000&PlaySessionId=0a457f2593644d7f900d4cd717bd271b&api_key=36db08ee9fbb412db4112cdb57cfdd44&LiveStreamId=a17c75760a04e99b68cf766e11316e1c_ee8461408bd99accf028baca3558e074_25938&TranscodingMaxAudioChannels=2&RequireAvc=false&SegmentContainer=ts&MinSegments=1&BreakOnNonKeyFrames=True&TranscodeReasons=ContainerNotSupported,%20VideoCodecNotSupported,%20AudioCodecNotSupported to 192.168.15.100 in 0:00:30.2290746 with Status Code 500
[17:15:09] [INF] [39] Jellyfin.Xtream.LiveTvService: Restream for channel 25938 was not opened.
[17:15:09] [INF] [39] Jellyfin.Xtream.LiveTvService: Starting restream for channel 25938.
[17:15:09] [INF] [39] Jellyfin.Xtream.LiveTvService: Opening restream 3 for channel 25938.
[17:15:39] [WRN] [86] Jellyfin.Server.Middleware.ResponseTimeMiddleware: Slow HTTP Response from http://<redacted>:8096/LiveTv/LiveStreamFiles/a9fcbf31-2e4a-460a-9c14-e374b737037b/stream.ts to <redacted> in 0:00:30.0457271 with Status Code 200
[17:15:39] [ERR] [8] Jellyfin.Api.Helpers.TranscodingJobHelper: FFmpeg exited with code 1
[17:15:39] [INF] [86] Jellyfin.Api.Controllers.DynamicHlsController: Current HLS implementation doesn't support non-keyframe breaks but one is requested, ignoring that request
[17:15:39] [INF] [86] Jellyfin.Api.Helpers.TranscodingJobHelper: /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 3000000 -autorotate 0 -i "http://<redacted>:8096/LiveTv/LiveStreamFiles/a9fcbf31-2e4a-460a-9c14-e374b737037b/stream.ts" -map_metadata -1 -map_chapters -1 -threads 0 -sn -codec:v:0 libx264 -preset superfast -crf 23 -maxrate 20000000 -bufsize 40000000 -x264opts:0 subme=0:me_range=4:rc_lookahead=10:me=dia:no_chroma_me:8x8dct=0:partitions=none -force_key_frames:0 "expr:gte(t,n_forced*3)" -sc_threshold:v:0 0 -vf "setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,yadif=0:-1:0,format=yuv420p" -flags -global_header -codec:a:0 libfdk_aac -ac 2 -ab 384000 -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 0 -hls_base_url "hls/6ff2f02f8001021bd813f15c762f9368/" -hls_segment_filename "/config/transcodes/6ff2f02f8001021bd813f15c762f9368%d.ts" -hls_playlist_type event -hls_list_size 0 -y "/config/transcodes/6ff2f02f8001021bd813f15c762f9368.m3u8"
[17:15:39] [ERR] [8] Jellyfin.Server.Middleware.ExceptionMiddleware: Error processing request. URL GET /videos/fef91c64-a356-d3c7-0d6d-b3b1a3ad194e/live.m3u8.
MediaBrowser.Common.FfmpegException: FFmpeg exited with code 1
   at Jellyfin.Api.Helpers.TranscodingJobHelper.StartFfMpeg(StreamState state, String outputPath, String commandLineArguments, HttpRequest request, TranscodingJobType transcodingJobType, CancellationTokenSource cancellationTokenSource, String workingDirectory)
   at Jellyfin.Api.Controllers.DynamicHlsController.GetLiveHlsStream(Guid itemId, String container, Nullable`1 static, String params, String tag, String deviceProfileId, String playSessionId, String segmentContainer, Nullable`1 segmentLength, Nullable`1 minSegments, String mediaSourceId, String deviceId, String audioCodec, Nullable`1 enableAutoStreamCopy, Nullable`1 allowVideoStreamCopy, Nullable`1 allowAudioStreamCopy, Nullable`1 breakOnNonKeyFrames, Nullable`1 audioSampleRate, Nullable`1 maxAudioBitDepth, Nullable`1 audioBitRate, Nullable`1 audioChannels, Nullable`1 maxAudioChannels, String profile, String level, Nullable`1 framerate, Nullable`1 maxFramerate, Nullable`1 copyTimestamps, Nullable`1 startTimeTicks, Nullable`1 width, Nullable`1 height, Nullable`1 videoBitRate, Nullable`1 subtitleStreamIndex, Nullable`1 subtitleMethod, Nullable`1 maxRefFrames, Nullable`1 maxVideoBitDepth, Nullable`1 requireAvc, Nullable`1 deInterlace, Nullable`1 requireNonAnamorphic, Nullable`1 transcodingMaxAudioChannels, Nullable`1 cpuCoreLimit, String liveStreamId, Nullable`1 enableMpegtsM2TsMode, String videoCodec, String subtitleCodec, String transcodeReasons, Nullable`1 audioStreamIndex, Nullable`1 videoStreamIndex, Nullable`1 context, Dictionary`2 streamOptions, Nullable`1 maxWidth, Nullable`1 maxHeight, Nullable`1 enableSubtitlesInManifest)
   at lambda_method1009(Closure , Object )
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Jellyfin.Server.Middleware.ServerStartupMessageMiddleware.Invoke(HttpContext httpContext, IServerApplicationHost serverApplicationHost, ILocalizationManager localizationManager)
   at Jellyfin.Server.Middleware.WebSocketHandlerMiddleware.Invoke(HttpContext httpContext, IWebSocketManager webSocketManager)
   at Jellyfin.Server.Middleware.IpBasedAccessValidationMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager)
   at Jellyfin.Server.Middleware.LanFilteringMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager, IServerConfigurationManager serverConfigurationManager)
   at Microsoft.AspNetCore.Authorization.Policy.AuthorizationMiddlewareResultHandler.HandleAsync(RequestDelegate next, HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Jellyfin.Server.Middleware.QueryStringDecodingMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.ReDoc.ReDocMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Jellyfin.Server.Middleware.RobotsRedirectionMiddleware.Invoke(HttpContext httpContext)
   at Jellyfin.Server.Middleware.LegacyEmbyRouteRewriteMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext context)
   at Jellyfin.Server.Middleware.ResponseTimeMiddleware.Invoke(HttpContext context, IServerConfigurationManager serverConfigurationManager)
   at Jellyfin.Server.Middleware.ExceptionMiddleware.Invoke(HttpContext context)
[17:15:39] [WRN] [8] Jellyfin.Server.Middleware.ResponseTimeMiddleware: Slow HTTP Response from http://jellyfin.local:8096/videos/fef91c64-a356-d3c7-0d6d-b3b1a3ad194e/live.m3u8?DeviceId=TW96aWxsYS81LjAgKFgxMTsgTGludXggeDg2XzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTIwLjAuMC4wIFNhZmFyaS81MzcuMzZ8MTcwMjQwODYyOTAwMg11&MediaSourceId=25938&VideoCodec=h264&AudioCodec=aac,mp3&AudioStreamIndex=-1&VideoBitrate=139616000&AudioBitrate=384000&PlaySessionId=0a457f2593644d7f900d4cd717bd271b&api_key=36db08ee9fbb412db4112cdb57cfdd44&LiveStreamId=a17c75760a04e99b68cf766e11316e1c_ee8461408bd99accf028baca3558e074_25938&TranscodingMaxAudioChannels=2&RequireAvc=false&SegmentContainer=ts&MinSegments=1&BreakOnNonKeyFrames=True&TranscodeReasons=ContainerNotSupported,%20VideoCodecNotSupported,%20AudioCodecNotSupported to 192.168.15.100 in 0:00:49.5924383 with Status Code 500
[17:15:39] [INF] [8] Jellyfin.Xtream.LiveTvService: Restream for channel 25938 was not opened.
[17:15:39] [INF] [8] Jellyfin.Xtream.LiveTvService: Starting restream for channel 25938.
[17:15:39] [INF] [8] Jellyfin.Xtream.LiveTvService: Opening restream 4 for channel 25938.
[17:16:09] [WRN] [38] Jellyfin.Server.Middleware.ResponseTimeMiddleware: Slow HTTP Response from http://<redacted>:8096/LiveTv/LiveStreamFiles/a9fcbf31-2e4a-460a-9c14-e374b737037b/stream.ts to <redacted> in 0:00:30.0120574 with Status Code 200
[17:16:09] [ERR] [10] Jellyfin.Api.Helpers.TranscodingJobHelper: FFmpeg exited with code 1
[17:16:09] [INF] [38] Jellyfin.Api.Controllers.DynamicHlsController: Current HLS implementation doesn't support non-keyframe breaks but one is requested, ignoring that request
[17:16:09] [INF] [38] Jellyfin.Api.Helpers.TranscodingJobHelper: /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 3000000 -autorotate 0 -i "http://<redacted>:8096/LiveTv/LiveStreamFiles/a9fcbf31-2e4a-460a-9c14-e374b737037b/stream.ts" -map_metadata -1 -map_chapters -1 -threads 0 -sn -codec:v:0 libx264 -preset superfast -crf 23 -maxrate 20000000 -bufsize 40000000 -x264opts:0 subme=0:me_range=4:rc_lookahead=10:me=dia:no_chroma_me:8x8dct=0:partitions=none -force_key_frames:0 "expr:gte(t,n_forced*3)" -sc_threshold:v:0 0 -vf "setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,yadif=0:-1:0,format=yuv420p" -flags -global_header -codec:a:0 libfdk_aac -ac 2 -ab 384000 -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 0 -hls_base_url "hls/6ff2f02f8001021bd813f15c762f9368/" -hls_segment_filename "/config/transcodes/6ff2f02f8001021bd813f15c762f9368%d.ts" -hls_playlist_type event -hls_list_size 0 -y "/config/transcodes/6ff2f02f8001021bd813f15c762f9368.m3u8"
[17:16:09] [ERR] [10] Jellyfin.Server.Middleware.ExceptionMiddleware: Error processing request. URL GET /videos/fef91c64-a356-d3c7-0d6d-b3b1a3ad194e/live.m3u8.
MediaBrowser.Common.FfmpegException: FFmpeg exited with code 1
   at Jellyfin.Api.Helpers.TranscodingJobHelper.StartFfMpeg(StreamState state, String outputPath, String commandLineArguments, HttpRequest request, TranscodingJobType transcodingJobType, CancellationTokenSource cancellationTokenSource, String workingDirectory)
   at Jellyfin.Api.Controllers.DynamicHlsController.GetLiveHlsStream(Guid itemId, String container, Nullable`1 static, String params, String tag, String deviceProfileId, String playSessionId, String segmentContainer, Nullable`1 segmentLength, Nullable`1 minSegments, String mediaSourceId, String deviceId, String audioCodec, Nullable`1 enableAutoStreamCopy, Nullable`1 allowVideoStreamCopy, Nullable`1 allowAudioStreamCopy, Nullable`1 breakOnNonKeyFrames, Nullable`1 audioSampleRate, Nullable`1 maxAudioBitDepth, Nullable`1 audioBitRate, Nullable`1 audioChannels, Nullable`1 maxAudioChannels, String profile, String level, Nullable`1 framerate, Nullable`1 maxFramerate, Nullable`1 copyTimestamps, Nullable`1 startTimeTicks, Nullable`1 width, Nullable`1 height, Nullable`1 videoBitRate, Nullable`1 subtitleStreamIndex, Nullable`1 subtitleMethod, Nullable`1 maxRefFrames, Nullable`1 maxVideoBitDepth, Nullable`1 requireAvc, Nullable`1 deInterlace, Nullable`1 requireNonAnamorphic, Nullable`1 transcodingMaxAudioChannels, Nullable`1 cpuCoreLimit, String liveStreamId, Nullable`1 enableMpegtsM2TsMode, String videoCodec, String subtitleCodec, String transcodeReasons, Nullable`1 audioStreamIndex, Nullable`1 videoStreamIndex, Nullable`1 context, Dictionary`2 streamOptions, Nullable`1 maxWidth, Nullable`1 maxHeight, Nullable`1 enableSubtitlesInManifest)
   at lambda_method1009(Closure , Object )
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Jellyfin.Server.Middleware.ServerStartupMessageMiddleware.Invoke(HttpContext httpContext, IServerApplicationHost serverApplicationHost, ILocalizationManager localizationManager)
   at Jellyfin.Server.Middleware.WebSocketHandlerMiddleware.Invoke(HttpContext httpContext, IWebSocketManager webSocketManager)
   at Jellyfin.Server.Middleware.IpBasedAccessValidationMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager)
   at Jellyfin.Server.Middleware.LanFilteringMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager, IServerConfigurationManager serverConfigurationManager)
   at Microsoft.AspNetCore.Authorization.Policy.AuthorizationMiddlewareResultHandler.HandleAsync(RequestDelegate next, HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Jellyfin.Server.Middleware.QueryStringDecodingMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.ReDoc.ReDocMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Jellyfin.Server.Middleware.RobotsRedirectionMiddleware.Invoke(HttpContext httpContext)
   at Jellyfin.Server.Middleware.LegacyEmbyRouteRewriteMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext context)
   at Jellyfin.Server.Middleware.ResponseTimeMiddleware.Invoke(HttpContext context, IServerConfigurationManager serverConfigurationManager)
   at Jellyfin.Server.Middleware.ExceptionMiddleware.Invoke(HttpContext context)
[17:16:09] [WRN] [10] Jellyfin.Server.Middleware.ResponseTimeMiddleware: Slow HTTP Response from http://jellyfin.local:8096/videos/fef91c64-a356-d3c7-0d6d-b3b1a3ad194e/live.m3u8?DeviceId=TW96aWxsYS81LjAgKFgxMTsgTGludXggeDg2XzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTIwLjAuMC4wIFNhZmFyaS81MzcuMzZ8MTcwMjQwODYyOTAwMg11&MediaSourceId=25938&VideoCodec=h264&AudioCodec=aac,mp3&AudioStreamIndex=-1&VideoBitrate=139616000&AudioBitrate=384000&PlaySessionId=0a457f2593644d7f900d4cd717bd271b&api_key=36db08ee9fbb412db4112cdb57cfdd44&LiveStreamId=a17c75760a04e99b68cf766e11316e1c_ee8461408bd99accf028baca3558e074_25938&TranscodingMaxAudioChannels=2&RequireAvc=false&SegmentContainer=ts&MinSegments=1&BreakOnNonKeyFrames=True&TranscodeReasons=ContainerNotSupported,%20VideoCodecNotSupported,%20AudioCodecNotSupported to 192.168.15.100 in 0:01:07.8448548 with Status Code 500
[17:16:10] [INF] [10] Jellyfin.Xtream.LiveTvService: Restream for channel 25938 was not opened.
[17:16:10] [INF] [10] Jellyfin.Xtream.LiveTvService: Starting restream for channel 25938.
[17:16:10] [INF] [10] Jellyfin.Xtream.LiveTvService: Opening restream 5 for channel 25938.
[17:16:40] [WRN] [66] Jellyfin.Server.Middleware.ResponseTimeMiddleware: Slow HTTP Response from http://<redacted>:8096/LiveTv/LiveStreamFiles/a9fcbf31-2e4a-460a-9c14-e374b737037b/stream.ts to <redacted> in 0:00:30.0167986 with Status Code 200
[17:16:40] [ERR] [107] Jellyfin.Api.Helpers.TranscodingJobHelper: FFmpeg exited with code 1
[17:16:40] [INF] [33] Jellyfin.Api.Controllers.DynamicHlsController: Current HLS implementation doesn't support non-keyframe breaks but one is requested, ignoring that request
[17:16:40] [INF] [33] Jellyfin.Api.Helpers.TranscodingJobHelper: /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 3000000 -autorotate 0 -i "http://<redacted>:8096/LiveTv/LiveStreamFiles/a9fcbf31-2e4a-460a-9c14-e374b737037b/stream.ts" -map_metadata -1 -map_chapters -1 -threads 0 -sn -codec:v:0 libx264 -preset superfast -crf 23 -maxrate 20000000 -bufsize 40000000 -x264opts:0 subme=0:me_range=4:rc_lookahead=10:me=dia:no_chroma_me:8x8dct=0:partitions=none -force_key_frames:0 "expr:gte(t,n_forced*3)" -sc_threshold:v:0 0 -vf "setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,yadif=0:-1:0,format=yuv420p" -flags -global_header -codec:a:0 libfdk_aac -ac 2 -ab 384000 -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 0 -hls_base_url "hls/6ff2f02f8001021bd813f15c762f9368/" -hls_segment_filename "/config/transcodes/6ff2f02f8001021bd813f15c762f9368%d.ts" -hls_playlist_type event -hls_list_size 0 -y "/config/transcodes/6ff2f02f8001021bd813f15c762f9368.m3u8"
[17:16:40] [ERR] [107] Jellyfin.Server.Middleware.ExceptionMiddleware: Error processing request. URL GET /videos/fef91c64-a356-d3c7-0d6d-b3b1a3ad194e/live.m3u8.
MediaBrowser.Common.FfmpegException: FFmpeg exited with code 1
   at Jellyfin.Api.Helpers.TranscodingJobHelper.StartFfMpeg(StreamState state, String outputPath, String commandLineArguments, HttpRequest request, TranscodingJobType transcodingJobType, CancellationTokenSource cancellationTokenSource, String workingDirectory)
   at Jellyfin.Api.Controllers.DynamicHlsController.GetLiveHlsStream(Guid itemId, String container, Nullable`1 static, String params, String tag, String deviceProfileId, String playSessionId, String segmentContainer, Nullable`1 segmentLength, Nullable`1 minSegments, String mediaSourceId, String deviceId, String audioCodec, Nullable`1 enableAutoStreamCopy, Nullable`1 allowVideoStreamCopy, Nullable`1 allowAudioStreamCopy, Nullable`1 breakOnNonKeyFrames, Nullable`1 audioSampleRate, Nullable`1 maxAudioBitDepth, Nullable`1 audioBitRate, Nullable`1 audioChannels, Nullable`1 maxAudioChannels, String profile, String level, Nullable`1 framerate, Nullable`1 maxFramerate, Nullable`1 copyTimestamps, Nullable`1 startTimeTicks, Nullable`1 width, Nullable`1 height, Nullable`1 videoBitRate, Nullable`1 subtitleStreamIndex, Nullable`1 subtitleMethod, Nullable`1 maxRefFrames, Nullable`1 maxVideoBitDepth, Nullable`1 requireAvc, Nullable`1 deInterlace, Nullable`1 requireNonAnamorphic, Nullable`1 transcodingMaxAudioChannels, Nullable`1 cpuCoreLimit, String liveStreamId, Nullable`1 enableMpegtsM2TsMode, String videoCodec, String subtitleCodec, String transcodeReasons, Nullable`1 audioStreamIndex, Nullable`1 videoStreamIndex, Nullable`1 context, Dictionary`2 streamOptions, Nullable`1 maxWidth, Nullable`1 maxHeight, Nullable`1 enableSubtitlesInManifest)
   at lambda_method1009(Closure , Object )
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Jellyfin.Server.Middleware.ServerStartupMessageMiddleware.Invoke(HttpContext httpContext, IServerApplicationHost serverApplicationHost, ILocalizationManager localizationManager)
   at Jellyfin.Server.Middleware.WebSocketHandlerMiddleware.Invoke(HttpContext httpContext, IWebSocketManager webSocketManager)
   at Jellyfin.Server.Middleware.IpBasedAccessValidationMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager)
   at Jellyfin.Server.Middleware.LanFilteringMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager, IServerConfigurationManager serverConfigurationManager)
   at Microsoft.AspNetCore.Authorization.Policy.AuthorizationMiddlewareResultHandler.HandleAsync(RequestDelegate next, HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Jellyfin.Server.Middleware.QueryStringDecodingMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.ReDoc.ReDocMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Jellyfin.Server.Middleware.RobotsRedirectionMiddleware.Invoke(HttpContext httpContext)
   at Jellyfin.Server.Middleware.LegacyEmbyRouteRewriteMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext context)
   at Jellyfin.Server.Middleware.ResponseTimeMiddleware.Invoke(HttpContext context, IServerConfigurationManager serverConfigurationManager)
   at Jellyfin.Server.Middleware.ExceptionMiddleware.Invoke(HttpContext context)
[17:16:40] [WRN] [107] Jellyfin.Server.Middleware.ResponseTimeMiddleware: Slow HTTP Response from http://jellyfin.local:8096/videos/fef91c64-a356-d3c7-0d6d-b3b1a3ad194e/live.m3u8?DeviceId=TW96aWxsYS81LjAgKFgxMTsgTGludXggeDg2XzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTIwLjAuMC4wIFNhZmFyaS81MzcuMzZ8MTcwMjQwODYyOTAwMg11&MediaSourceId=25938&VideoCodec=h264&AudioCodec=aac,mp3&AudioStreamIndex=-1&VideoBitrate=139616000&AudioBitrate=384000&PlaySessionId=0a457f2593644d7f900d4cd717bd271b&api_key=36db08ee9fbb412db4112cdb57cfdd44&LiveStreamId=a17c75760a04e99b68cf766e11316e1c_ee8461408bd99accf028baca3558e074_25938&TranscodingMaxAudioChannels=2&RequireAvc=false&SegmentContainer=ts&MinSegments=1&BreakOnNonKeyFrames=True&TranscodeReasons=ContainerNotSupported,%20VideoCodecNotSupported,%20AudioCodecNotSupported to 192.168.15.100 in 0:01:24.1249418 with Status Code 500
[17:16:40] [INF] [66] Jellyfin.Xtream.LiveTvService: Restream for channel 25938 was not opened.
[17:16:40] [INF] [66] Jellyfin.Xtream.LiveTvService: Starting restream for channel 25938.
[17:16:40] [INF] [66] Jellyfin.Xtream.LiveTvService: Opening restream 6 for channel 25938.

Account details per Jellyfin user

Would it be possible to implement the ability for each Jellyfin account to have their own Xtream login?

The stream URL could be set by the admin in the plugin settings. However, each user could set their username and password in their local settings?

This would be ideal for limited concurrent connections and to allow multiple users to watch on the same platform.

Android TV

I setup your app successfully on JF server.
I can play channels through browser.
I can play channels through Android app.
I can see the guide and select channels in Android TV app (on FTV Max) but playing the channel errors out.

Any ideas why?

Optimise TV overrides (Channel Sorting view)

Great plugin, thanks for your efforts! @Kevinjil

One issue I have observed is once channels are selected from "Live TV" tab, the list spans 10+ pages and has multiple number 1 channels from different categories at the top of list under "TV overrides" tab.
This continues with number 2 channels and so on.......... in full list. So a sport channel numbered 1 could be next to an entertainment channel numbered 1, which is next to a music channel numbered 1.

So the need for manual channel sorting is required. It is a very manual process and as list could span 10+ pages, it would be good to optimise the experience through (all or some of the suggestions from below):

  1. Allow dynamic numbering, so that it re-sorts whole list as you enter a "number". (Currently it is hard to remember which number has been edited and which has not when scrolling through multiple pages)
  2. Manual sort by "Name" column or "Number" column (Makes similar named channels next to each other for easier manual numbering)
  3. Option to allow automatic Category sorting, so that all channels from same category are bunched together. e.g. channels 1-10 from entertainment, 1-10 from sports, 1-10 from music, etc.. (This would avoid them from mixing all into a random list, e.g. 1 sports, 1 entertainment, 1 music, all next to each other from different categories)
  4. Export list to be edited in a spreadsheet, and Import re-numbered list back into plugin. (It might me easier than using the Jellyfin plugin interface to make changes)

Thanks for you consideration.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.