Jump to content
OGXbox.com

Jellyfin Transcode Profile for XBMC4Xbox


GoTeamScotch
 Share

Recommended Posts

I have made a profile for Jellyfin (a media streaming server similar to Plex) that transcodes videos down to a format that the Original Xbox can handle. I have tested it on a few of my own 1080p and 4K videos and it seems to work fairly well and I'm hoping to find a few testers who can try it out. At the moment, it still drops frames occasionally, but I'm going dial in the profile to smooth things out further. Once done, I plan on submitting the profile as a PR to the Jellyfin project to see if it can be bundled in with future releases.
 
FXKmVWlUEAAXCBe.thumb.jpeg.3d7a9268e085039619ed70e36c34626b.jpeg
 
FXKmXjVUIAA3qZR.thumb.jpeg.a6d4d3d90024eb44474cd1928ff7a90d.jpeg
 
This profile basically just tells Jellyfin what containers and codecs to use (and at what bitrates), then Jellyfin handles the transcoding as if it were any other device.
 
To use this, download the XML file below to your PC, then upload it to your Jellyfin server under this path: /etc/jellyfin/dlna/user/XBMC4Xbox.xml
 
You should then see this new profile under Settings > DLNA > Profiles. To try it out, open your Jellyfin client and cast a video to your Xbox as usual. The video should start playing on your Xbox. If anything goes wrong, check your log file for hints. It will tell you which profile it is using. If it doesn't say "XBMC4Xbox" and instead says "Default", then there's a problem.
Reply here with results and feedback.
 
Tested with XBMC4Xbox v3.5.3 (this profile targets this version, but this restriction will probably be removed just in case XBMC4Xbox every has a new release)
 
P.s. I also plan on making profiles for upgraded Xbox motherboards as well, including 128MB and 1.4ghz consoles.
Edited by GoTeamScotch
  • Like 3
  • Thanks 1
Link to comment
Share on other sites

  • 3 weeks later...

This looks awesome, I would like to test when my Xbox is up and running again but it will be a while I'm afraid.

 

Edit: I have been thinking about this for a few minutes and I realized I haven't used Xbmc4Xbox since 2006 or so. So how do I playback videos from Jellyfin via XBMC?

Edited by locutus2000
Link to comment
Share on other sites

  • 3 months later...
  • 3 weeks later...
On 1/12/2023 at 3:33 PM, dust08 said:

Any way to initiate a video stream from the xbox side instead of having to go to my pc?

I don't think so. I tried through upnp from my xbox and it didn't seem to find my jellyfin library, though I may have just been missing something obvious. I started trying to port the jellyfin kodi plugin to xbmc and made progress, but still a ways to go.

Did you try out the profile? Any feedback?

Link to comment
Share on other sites

  • 2 months later...
  • 10 months later...

Version 0.2b:

  • Added initial support for starting playback partway through a video. When playing a video that was already in progress, XBMC now starts playback at the correct time. This doesn't seem to affect all videos, further testing is needed to determine why and target those codecs/containers/etc.
    • XBMC now displays the correct length of the currently playing video.
    • XBMC can now fast-forward/rewind in currently playing videos.
  • Transcoded videos are delivered over TS streams (instead of MKV).
  • Changed profile identification. New builds of XBMC in the future (beyond 3.5.3) should now work with this profile.
  • Beginning to add support for Photos. Doesn't work yet.

To-do:

  • Fix thumbnails for media in XBMC. Not sure if thumbnails being sent by server are too large or what. Profile has a spot for "MaxAlbumArtWidth" and I tried setting this to 192 (the size XBMC uses for its own thumbnails), but I'm pretty sure this only affects music. I don't see an overall thumbnail size setting.
  • Figure out why DLNA folder browsing doesn't work. Jellyfin handles "special" libraries in a certain way that XBMC doesn't like, including Movies, Shows, Music. Browsing Photos directories (and other basic library types) works.
    • Settings RequiresPlainFolders and RequiresPlainVideoItems to true doesn't seem to help.
  • A lot of testing is still needed. There is a huge variety of content that JF supports. Need to dial in exactly what XBMC supports and ensure transcoding or direct-play happens properly. Need to test: HDR, high framerate videos, high bit depth videos, Atmos, and many others.
  • Create versions of profile targetting 1.4ghz / 128mb upgraded motherboards.

Testers needed!

XBMC4Xbox-v0.2b.xml

  • Like 2
Link to comment
Share on other sites

7 hours ago, GoTeamScotch said:

Version 0.2b:

  • Added initial support for starting playback partway through a video. When playing a video that was already in progress, XBMC now starts playback at the correct time. This doesn't seem to affect all videos, further testing is needed to determine why and target those codecs/containers/etc.
    • XBMC now displays the correct length of the currently playing video.
    • XBMC can now fast-forward/rewind in currently playing videos.
  • Transcoded videos are delivered over TS streams (instead of MKV).
  • Changed profile identification. New builds of XBMC in the future (beyond 3.5.3) should now work with this profile.
  • Beginning to add support for Photos. Doesn't work yet.

To-do:

  • Fix thumbnails for media in XBMC. Not sure if thumbnails being sent by server are too large or what. Profile has a spot for "MaxAlbumArtWidth" and I tried setting this to 192 (the size XBMC uses for its own thumbnails), but I'm pretty sure this only affects music. I don't see an overall thumbnail size setting.
  • Figure out why DLNA folder browsing doesn't work. Jellyfin handles "special" libraries in a certain way that XBMC doesn't like, including Movies, Shows, Music. Browsing Photos directories (and other basic library types) works.
    • Settings RequiresPlainFolders and RequiresPlainVideoItems to true doesn't seem to help.
  • A lot of testing is still needed. There is a huge variety of content that JF supports. Need to dial in exactly what XBMC supports and ensure transcoding or direct-play happens properly. Need to test: HDR, high framerate videos, high bit depth videos, Atmos, and many others.
  • Create versions of profile targetting 1.4ghz / 128mb upgraded motherboards.

Testers needed!

XBMC4Xbox-v0.2b.xml 4.08 kB · 2 downloads

For profiles targeting 1.4GHZ systems, does that mean they are more resource intensive but the upgrades can handle it?

Link to comment
Share on other sites

11 minutes ago, Bowlsnapper said:

For profiles targeting 1.4GHZ systems, does that mean they are more resource intensive but the upgrades can handle it?

Correct. Higher bitrates mostly, which leads to less macro-blocking artifacts in HD videos. It's mostly the CPU upgrade that helps with this. My 1.4ghz / 128mb Xbox still has about 70MB of RAM free when using this profile, so it's not hitting a memory limit.

  • Like 2
Link to comment
Share on other sites

  • 5 months later...

This almost seems to work, but not really.

I have DLNA set up on XBMC. I see XBMC as a streamable target.

I am able to stream old videos to my OG xbox no problem.

But for higher res videos, like 1080p, Jellyfin will not transcode the video. I only get an audio stream.

Because DLNA in Jellyfin was moved to a plugin, and they removed the ability to select different profiles, I wrote the XBMC profile over Default. (Discussion here: https://forum.jellyfin.org/t-no-more-dlna-profiles )

When I look at the Jellyfin logs, I see this:

jellyfin  | [05:23:24] [INF] [3] Jellyfin.Plugin.Dlna.Main.DlnaHost: DLNA Session created for XBMC: Media Renderer (192.168.10.113) - XBMC
jellyfin  | [05:23:57] [INF] [39] Emby.Server.Implementations.HttpServer.WebSocketManager: WS 192.168.10.1 request
jellyfin  | [05:24:11] [INF] [39] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -probesize 1G  -i file:"/bravo/video/movies/John Wick Chapter 1, 2, 3 -
 Trilogy 2014-2019 Eng Subs 1080p [H264-mp4]/John Wick Chapter 1-2-3/01 John Wick Chapter 1 - Keanu Reeves 2014 Eng Subs 1080p [H264-mp4].mp4" -vn -map 0:1 -map -0:s -codec:v:0 copy -copyts -avoid_negative_ts disable
d -start_at_zero -map_metadata -1 -map_chapters -1 -threads 0 -codec:a:0 libfdk_aac -ac 2 -ab 127798 -ar 48000 -y "/cache/transcodes/01ccd7548481f6a1f0586f3ee76a1b18.ts"



Now looking at the FFMPEG call from TranscodeManager, you can see "-vn" which means no video.

So there is some bug with Jellyfin or this profile that is keeping it from transcoding video correctly.

Edited by randy
Link to comment
Share on other sites

On 8/23/2024 at 12:30 PM, RMM said:

The original Xbox doesn't support 1080p video output.   Remember this system is over 20 years old so it doesnt support the higher resolutions or have the ability to use modern codecs that we see today.

I know that. That is why I am trying to transcode the video - so you can transcode from a high resolution to a low resolution. That is the purpose of this topic and the whole discussion. Theoretically I *should* be able to transcode my 1080p video down to 480p for the Xbox to play. But there is a bug somewhere that is preventing that from happening, and I am only getting back audio.

Link to comment
Share on other sites

Here are a little more logs:

[2024-08-28 04:14:44.611 +00:00] [DBG] [17] Jellyfin.Plugin.Dlna.DlnaManager: Found matching device profile: "XBMC4Xbox"
[2024-08-28 04:14:44.624 +00:00] [DBG] [17] Jellyfin.Plugin.Dlna.Main.DlnaHost: Bitrate exceeds limit: media bitrate: 15584071, max bitrate: 800000
[2024-08-28 04:14:44.624 +00:00] [DBG] [17] Jellyfin.Plugin.Dlna.Main.DlnaHost: Profile: "XBMC4Xbox", Path: "/bravo/video/movies/The Hobbit - M4 Book Edit (1080p).mkv", isEligibleForDirectPlay: False, isEligibleForDirectStream: False
[2024-08-28 04:14:44.641 +00:00] [DBG] [17] Jellyfin.Plugin.Dlna.Main.DlnaHost: Transcode Result for Profile: "XBMC4Xbox", Path: "/bravo/video/movies/The Hobbit - M4 Book Edit (1080p).mkv", PlayMethod: Transcode, AudioStreamIndex: 1, SubtitleStreamIndex: 5, Reasons: ContainerBitrateExceedsLimit
[2024-08-28 04:14:44.648 +00:00] [DBG] [17] Jellyfin.Plugin.Dlna.Main.DlnaHost: StreamBuilder.BuildVideoItem( Profile="XBMC4Xbox", Path="/bravo/video/movies/The Hobbit - M4 Book Edit (1080p).mkv", AudioStreamIndex=null, SubtitleStreamIndex=null ) => ( PlayMethod=Transcode, TranscodeReason=ContainerBitrateExceedsLimit ) "media:/videos/9be68357-da18-f9e1-da77-b23027e47939/stream.ts?MediaSourceId=9be68357da18f9e1da77b23027e47939&VideoCodec=mpeg4&AudioCodec=aac&AudioStreamIndex=1&SubtitleStreamIndex=5&VideoBitrate=416000&AudioBitrate=384000&MaxFramerate=23.976025&MaxWidth=1280&MaxHeight=720&api_key=<token>&SubtitleMethod=Hls&EnableSubtitlesInManifest=true&EnableMpegtsM2TsMode=true&EstimateContentLength=true&CopyTimestamps=true&RequireAvc=false&Tag=0ca27e7eab252fc371dd039d2c1ed3f1&h264-level=41&h264-videobitdepth=8&h264-profile=main&TranscodeReasons=ContainerBitrateExceedsLimit"
[2024-08-28 04:14:44.724 +00:00] [DBG] [17] Jellyfin.Plugin.Dlna.Main.DlnaHost: "XBMC: Media Renderer (192.168.10.113)" - Playlist created
[2024-08-28 04:14:44.727 +00:00] [DBG] [17] Jellyfin.Plugin.Dlna.Main.DlnaHost: "XBMC: Media Renderer (192.168.10.113)" - Playing 1 items
[2024-08-28 04:14:44.738 +00:00] [DBG] [17] Jellyfin.Plugin.Dlna.Main.DlnaHost: "XBMC: Media Renderer (192.168.10.113)" - SetAvTransport Uri: "https://jf.dylanru.sh/dlna/videos/9be68357-da18-f9e1-da77-b23027e47939/stream.ts?DeviceProfileId=a28d28be6544fa91f862212916b5019c&amp;DeviceId=4499e804-1dd4-a50d-057e-fc8e85e97e15&amp;MediaSourceId=9be68357da18f9e1da77b23027e47939&amp;VideoCodec=mpeg4&amp;AudioCodec=aac&amp;AudioStreamIndex=1&amp;SubtitleStreamIndex=5&amp;VideoBitrate=416000&amp;AudioBitrate=384000&amp;MaxFramerate=23.976025&amp;MaxWidth=1280&amp;MaxHeight=720&amp;StartTimeTicks=72460036040&amp;SubtitleMethod=Hls&amp;EnableSubtitlesInManifest=true&amp;EnableMpegtsM2TsMode=true&amp;EstimateContentLength=true&amp;CopyTimestamps=true&amp;RequireAvc=false&amp;Tag=0ca27e7eab252fc371dd039d2c1ed3f1&amp;h264-level=41&amp;h264-videobitdepth=8&amp;h264-profile=main&amp;TranscodeReasons=ContainerBitrateExceedsLimit&amp;dlnaheaders=true" DlnaHeaders: "DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_CI=1;DLNA.ORG_FLAGS=01D00000000000000000000000000000"
[2024-08-28 04:14:44.740 +00:00] [INF] [17] System.Net.Http.HttpClient.Dlna.LogicalHandler: Start processing HTTP request "POST" "http://192.168.10.113:64070/AVTransport/4499e804-1dd4-a50d-057e-fc8e85e97e15/control.xml"

I really wish there were some logs in Jellyfin that would say "I chose to skip transcoding video for XYZ reason"

Link to comment
Share on other sites

Apparently there was a bug in the DLNA plugin. Someone submitted a PR to fix the bug, but that PR has not been merged yet.

Github automatically builds the plugin for every PR that's submitted, so you can download the experimental plugin here which seems to fix it: https://github.com/jellyfin/jellyfin-plugin-dlna/actions/runs/10410418276

Well almost everything is fixed. It seems to be playing most of the video I'm giving it, but Jellyfin won't let me skip to the middle of an episode. Probably another Jellyfin bug. The video is also very choppy. I recommend bringing the bitrate down to say 4 megabits and setting a max resolution of say 720x480.

Still really cool!

  • Like 1
Link to comment
Share on other sites

Thanks for the info and testing, randy. I haven't updated my Jellyfin server in a while. I'll do that soon and check out the nightly build of that plugin.

I think what would probably make sense is to make a couple copies of this profile and let the user pick between them. For example, a 720p version (with a lower bitrate) or a 480p version (with a higher bitrate) so people can choose. I tend to prefer resolution over bitrate personally, but I understand that's not everyone's preference.

If you want to adjust the profile yourself, you can edit the XML file and change the "CodecProfiles" section. You'll see a height and a width there (currently 1280x720). Change them to 720 and 480 respectively. Change the "MaxStreamingBitrate" from 5000000 (5mbps) to 4000000 (4mbps) as well if you'd like.

Link to comment
Share on other sites

  • 2 months later...

Hi all, hoping to get this working too but running into an issue if anyone had any ideas? 

Running XBMC on my OG Xbox. Out of the box I was able to play files over DLNA from my Jellyfin server however I was getting audio and no video as @Randy mentioned above. Following the advice on that thread I updated my Jellyfin server to the latest version to overcome the transcoding bug there that was recently fixed.

But now that I'm running on the latest Jellyfin version for some reason my XBMC Media Renderer is no longer showing up under the "Play to" options in Jellyfin. I didn't change anything in XBMC or Jellyfin but I've tried turning off then on UPnP in XBMC but still no luck. 

No matter what I do XBMC no longer shows as a play as a playable device in Jellyfin since it was upgraded. Does anyone have any advice to resolve?

Link to comment
Share on other sites

4 hours ago, RDRulez said:

Hi all, hoping to get this working too but running into an issue if anyone had any ideas? 

Running XBMC on my OG Xbox. Out of the box I was able to play files over DLNA from my Jellyfin server however I was getting audio and no video as @Randy mentioned above. Following the advice on that thread I updated my Jellyfin server to the latest version to overcome the transcoding bug there that was recently fixed.

But now that I'm running on the latest Jellyfin version for some reason my XBMC Media Renderer is no longer showing up under the "Play to" options in Jellyfin. I didn't change anything in XBMC or Jellyfin but I've tried turning off then on UPnP in XBMC but still no luck. 

No matter what I do XBMC no longer shows as a play as a playable device in Jellyfin since it was upgraded. Does anyone have any advice to resolve?

EDIT: I managed to self-resolve. I noticed that the DLNA section of Jellyfin which is now a plugin had 2 versions, v5 with "Status: Restart" and a lower version with "Status: Superceded". I uninstalled both, restarted, installed DLNA fresh, restarted again and now it works.

I had to modify the profile XML a bit a more as mkv's were still direct playing with audio and no video. I removed the whole line around direct streaming for video and now everything is transcoded to 720p max and plays fine on the OG Xbox.

  • Like 1
Link to comment
Share on other sites

That explains why I couldn't see my Xbox as a target player to cast to. I installed the plugin and copied the transcode profile over to its new home:

  • /var/lib/jellyfin/plugins/configurations/dlna/user
  • C:\Users\yourUsername\AppData\Local\jellyfin\plugins\configurations\dlna\user

I dug into this for a couple hours this evening. I've learned a lot about how profiles are parsed. Jellyfin's documentation on making DLNA transcode profiles is abysmal, so it was a lot of trial and error and reading through their code. I added settings that should allow XBMC to play more files natively that it can play, without transcoding. It should also now avoid serving media that the Xbox definitely can't play more consistently. See if you still have the black screen issue with this one.

XBMC4Xbox.xml

Also including one for 1.4ghz CPU upgraded consoles.

XBMC4Xbox-14ghz.xml

Note: I'm testing these on a RAM upgraded console. Needs testing on stock RAM consoles.

Oh and I can't get seeking to work. If anyone has ideas, let me know. Otherwise, workaround is to cue your video to your desired starting point, and THEN cast it to XBMC.

Edited by GoTeamScotch
Link to comment
Share on other sites

  • 6 months later...

Take a look at your Jellyfin logs. Admin > Dashboard > Logs > {click on your most recent log}

Do a search (Ctrl+F) for "DLNA". See if Jellyfin is able to detect your Xbox on your network. If it is able to, it'll show up in the logs, even if it assigns the wrong profile to it.

Also, what version of XBMC are you using?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

Board Life Status


Board startup date: April 23, 2017 12:45:48
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.