Jellyfin Forum
Transcoding - Printable Version

+- Jellyfin Forum (https://forum.jellyfin.org)
+-- Forum: Support (https://forum.jellyfin.org/f-support)
+--- Forum: Troubleshooting (https://forum.jellyfin.org/f-troubleshooting)
+--- Thread: Transcoding (/t-transcoding--4036)

Pages: 1 2


Transcoding - ramicio - 2024-01-23

Hello. I have a couple scenarios about which I am confused:

When I play something back that's 4k on my LAN with my Shield, and I restrict the bit rate (for testing), it will fail with "too many errors." Looking through the ffmpeg logs there are absolutely zero errors. It is closing the process with [q]. I notice that it's trying to transcode 4k HEVC to 4k h.264. I don't believe my client likes that. Because, if I go and play something that's 1080p and make it transcode, it works just fine. I don't see ANY options anywhere, server or client-side to alter resolution.

When a remote client plays something and has to transcode, it just plain doesn't work. There are also zero errors in the ffmpeg logs. Just the same closing with [q] thing. But I notice that ffmpeg is at least resizing their stuff to 1080p, but something on their end is still not happy. They can only play 1080p stuff and directly stream it.

What am I supposed to be looking for? Nothing I am looking at in logs is giving me any information about what is not liking what. I am testing on my server and constraining the bandwidth to test if things will work for clients. Thank you.


RE: Transcoding - tmsrxzar - 2024-01-23

first
shieldtv with the android-tv jellyfin client does not have a setting to force scale, not until this PR is accepted https://github.com/jellyfin/jellyfin-androidtv/pull/3110

second
we would need to see at least a mediainfo for the file being transcoded, audio and subs can cause failure
what is your server specs, what do you have selected in the transcoding section of the dashboard

provide your server log and an ffmpeg log via public paste site, redact any personal info

if it does have subs, you can try a remux with a single video and audio track to see if things change


RE: Transcoding - ramicio - 2024-01-23

Files did not have subs. I don't do that nonsense unless there is foreign nonsense going on. All subs are SRT. ALL my media is HEVC, level 5.1, encoded with a CRF of 19, regardless of resolution. Audio formats vary between AAC, E-AC3, AC3, DTS (lossy), and >78% are FLAC ranging from mono to 7.1. Any of those tried and failed via the remote client were FLAC. Triggering an audio transcode shouldn't make video transcode. Both bit rates of video and audio added together falling far below the 35 mbps constraint I have set up should not trigger a video transcode. Said client could play 1080p directly just fine (albeit it was AC3). Going to a 4k file with FLAC triggered a transcode (down to 1080p somehow) and their client rejected it. They tried a few, all 4k with FLAC and no subs. Their client was also android-TV, but on a Sony TV. My own client (Shield) was fine with a 1080p transcode. I don't know what redacting certain information from logs even means. I am trying to get away from plex due to bloat, privacy, and constant transcoding issues, and if this piece of software is going to even more problematic, the whole server is just gonna go in the trash. What do you want for server specs? What are you asking about what I have selected in the transcoding section of the dashboard?


RE: Transcoding - tmsrxzar - 2024-01-23

ok since you want to keep your logs

search through the server log, look for entries marked "Reason", as in TranscodeReason; this will tell you why things transcode, video, audio, subtitle not supported
ffmpeg logs will tell you if there were any errors as well as which streams were Copy and which were re-encoded giving you a clear picture of what the client is receiving

if you find the client is receiving streams that it *should* be able to play the compare on the client when using libvlc to separate server fault from client
if libvlc works then it's an issue with exoplayer, if not then the encoding settings on your server should be changed
if it's the latter then disable hevc encoding on the server to start with

if it's transcoding and you don't think it should be the log will still tell you reason

as far as the sony tv getting scaled and nvidia not, nvidia is correctly identified as capable of 4k and does not need scaled down video, since there is no setting currently to force scaling (the pr i mentioned) you will not be able to get scaled video to the shield


RE: Transcoding - ramicio - 2024-01-23

I'm not objecting to keeping them. I'm just wondering what should be erased from them.

The remote client limit is set to 35 mbps:

RemoteClientBitrateLimit: 35000000

Reason for transcode is:

TranscodeReasons=ContainerBitrateExceedsLimit

The file in question has an overall bit rate (per mediainfo) of 14.2 mbps.

Okay, so maybe they need to set their "max streaming bit rate" manually to something like 30 mbps (I see that auto is buggy?)

This doesn't change the fact that the client rejects what the transcoder is sending it. I'm seeing literally nothing in the logs that indicates why.

I see a lot "slow response" from the client warnings all over the place. Even when I test transcoding on my local network.

Server is:
- Dual Xeon Gold 6242
- 256 GB RAM
- 16x 18 TB drives connected via LSI 9201-16i, running striped RAIDz2 (RAID 60 in essence) - Where media resides
- 4x Samsung 970 Pro 1 TB on a x16 PCIe card, in RAID 0 - Where metadata and other pertinent stuff resides
- 2x U.2 960 GB Optane drives - Mirrored, for ZFS metadata
- Quadro P2000 GPU
- Mellanox 40 gigabit NIC

Network works like:
- Server connects via QSFP+ to a Brocade ICX-6610. This connects to a UDM-Pro via SFP+. Internet is cable internet with 35 mbps upload capability, connected to UDM-Pro. At my desk I have a Mikrotik switch that has 2 SFP+ ports and 8 gigabit RJ45 ports. One of the SFP+ ports goes to the Brocade switch. Shield is plugged into one of the gigabit Mikrotik ports.

Everything is plenty fast for what I'm doing, except the internet (that's out of my hands, local monopoly). I can possibly explain the LAN-side behavior because it was trying to go from 4k HEVC to 4k h.264. BUT, the remote client was getting their transcode downscaled to 1080p (don't know how).

Thank you.

Also looking through the logs, it seems the remote client was being sent both libVLC and ExoPlayer for the same session. First transcode 200M segment was for VLC and the next one was for ExoPlayer. Should I have them just set their client to use ExoPlayer?

Another thought, their TV is a 4k TV and I've seen them play 4k stuff on Plex before (when it miraculously didn't want to transcode).


RE: Transcoding - tmsrxzar - 2024-01-23

yes, "Auto" setting in the android-tv app is rather broken

the slow response messages in the log are configurable, default "slow" is 500ms to trigger
to change that go to Dashboard -> Logs and the 2 options at the top, uncheck to disable or set a value that is more acceptable
more or less useful depending on the admin's anal retentive level, i turn them off

from the ffmpeg log* where it shows "Stream mapping:" is what the client will be receiving
i have seen android-tv playback failed for client problems more often than server ones, most usually unsupported subtitles or audio


RE: Transcoding - ramicio - 2024-01-23

User policy for "dupont-harding". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True

RemoteClientBitrateLimit: 35000000, RemoteIp: "re.da.ct.ed", IsInLocalNetwork: False

StreamBuilder.BuildVideoItem( Profile="AndroidTV-ExoPlayer", Path="/mnt/storage/movies/file.mkv", AudioStreamIndex=null, SubtitleStreamIndex=null ) => ( PlayMethod=Transcode, TranscodeReason=ContainerBitrateExceedsLimit ) "mediaConfused-facevideos/64191094-ea67-4bed-70a5-698f14859ae7/master.m3u8?MediaSourceId=64191094ea674bed70a5698f14859ae7&VideoCodec=hevc,h264,hevc&AudioCodec=aac,mp3,ac3,eac3&AudioStreamIndex=1&VideoBitrate=4843699&AudioBitrate=1510550&MaxFramerate=23.976025&api_key=<token>&RequireAvc=false&Tag=0d3b32d1611ac1c152e50254d7ae13e3&SegmentContainer=ts&BreakOnNonKeyFrames=False&hevc-level=153&hevc-videobitdepth=10&hevc-profile=main10&aac-audiochannels=8&TranscodeReasons=ContainerBitrateExceedsLimit"

"/usr/lib/jellyfin-ffmpeg/ffmpeg" "-analyzeduration 200M -init_hw_device cuda=cu:0 -filter_hw_device cu -hwaccel cuda -hwaccel_output_format cuda -threads 1 -autorotate 0 -i file:\"/mnt/storage/movies/file.mkv\" -autoscale 0 -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 hevc_nvenc -tag:v:0 hvc1 -preset p1 -b:v 4843699 -maxrate 4843699 -bufsize 9687398 -profile:v:0 main -g:v:0 72 -keyint_min:v:0 72 -vf \"setparams=color_primaries=bt2020:color_trc=smpte2084:colorspace=bt2020nc,scale_cuda=w=1920:h=800,tonemap_cuda=format=yuv420p:p=bt709:t=bt709:m=bt709:tonemap=bt2390:peak=100:desat=0:range=tv\" -codec:a:0 libfdk_aac -ac 8 -ab 640000 -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 \"/dev/shm/19daf2c7d02f4a3cd3b3b84ed5fe72d8%d.ts\" -hls_playlist_type vod -hls_list_size 0 -y \"/dev/shm/19daf2c7d02f4a3cd3b3b84ed5fe72d8.m3u8\""

Yes, very weird that it wants 5 mbps as max for the video. I informed them to set their max speed to 30 mbps and change player to ExoPlayer. I will check on things this evening when they can test.


RE: Transcoding - tmsrxzar - 2024-01-23

"-codec:v:0 hevc_nvenc -tag:v:0 hvc1"

client *could be having an issue playing hevc (as in "not impossible"); compare with hevc encoding off as well as what you are already doing tonight


RE: Transcoding - ramicio - 2024-01-23

All my files are HEVC and they were able to direct play some pretty lower bit rate (around 1.5 mbps) 1080p stuff. The issue I am still having is that they are still be transcoded for the reason of "ContainerBitrateExceedsLimit." This was on a file with a 14 mbit video track. No subtitles. Only had to transcode the audio. My server is set to a 35 mbit limit. I had the client set their client to 30 mbit. We did a speed test between us and my upload is actually 41 mbit. The video they tried got encoded down to 2,718,169 bits/s (according to the ffmpeg log showing the command line used). This transcode was to h.264 (I had the allow encoding to HEVC box checked last night). Are the reasons for transcoding that it lists just nonsense?


RE: Transcoding - ramicio - 2024-01-28

Well, gonna wind up not using Jellyfin. It can't do anything right and I can't get any support. Bye.