Open fidoriel opened 3 months ago
This is because the client does not support that file format/client. Since the server has transcoding turned off you can't play the file on the client. This is a limitation of apple/android devices and the default supported codecs.
That is expected behavior for formats that are not supported out of the box. But imho h265 is supported out of the box on ios. With a previous version of streamyfin the same movie worked fine. Some release last week broke it.
Video
What's the container? Mkv?
Yes, MKV Container. But it should remux it? Audio works.
I don't know how Jellyfin works but I don't think it can remux if transcoding is turned off on the server. We could maybe build remuxing into the app from mkv to mp4 container (?). If that's possible.
I'm having the same issue with h265 playback on the iOS app. Except I'm using a mp4 container. I have not tested playback with previous versions of the app though.
It works fine on the official app and h265 is definitely supported on my iPhone 12...
It is also marked as supported by the Jellyfin App and SwiftFin in the docs.
That's interesting! Could you send the information about that file? @michi7801
Sure thing:
Title: 1080p HEVC SDR Codec: HEVC AVC: No Profile: Main Level: 120 Resolution: 1920x1080 Aspect Ratio: 16:9 Anamorphic: No Interlaced: No Framerate: 25 Bitrate: 1429 kbps Bit Depth: 8 bit Video Range: SDR Video Dynamic Range: SDR Color Space: bt709 Color Transfer: bt709 Primaries: bt709 Pixel Format: yuv420p Reference Frames: 1
That file seems quite small, would you mind sharing it with me? Send me an email and i'll send you an upload link. fredrik.burmester@gmail.com @michi7801
I've looked into this, it seems that iOS devices do not support MPEG-H Part 2/HEVC, not even on my iPhone 15 Pro. This is causing the video playback to fail. A solution for this is to switch to the "Old" profile in the settings, forcing the transcoding from HEVC->H264.
Now, why it works in other apps but not Streamyfin is probably because of the Device Profile we're using, even though we're using the same as the official Jellyfin app...
hevc/h265 is supported on iOS: https://support.apple.com/en-us/116944 Also safari on iOS seems to support the playback of h265. https://caniuse.com/hevc Correct me if I am wrong, but WebKit is used to render expo?
@fredrikburmester First of all: Thank you for looking into this issue so quickly.
Your findings made me retest my previous statements about what's working and what's not:
I love the look and feel of StreamyFin but my poor Synology can't handle that for multiple users.
Yeah Swiftfin uses VLC player which supports many more formats/codecs than the default iOS video player.
Anything I can do to help resolve this issue? It hurts that I can't use this gorgeous app.
With TV support upcoming and the current pace of development this could really get the default app for Jellyfin
A great way to start is to look into why some video files don't get transcoded into a supported container. It's probably because of the device profile doesn't tell the server correctly what codecs/containers are supported. But it might be some other issues.
Yes, I actually caught a difference in behavior. Thanks for the hint! You initially said that you use the same expo profile as the official Jellyfin client (and I also verified that), but the Jellyfin client actually only does direct stream (it changes the container format) while Streamyfin attempts to direct play.
This would lead me to the assumption that Streamyfin incorrectly informs that server about the clients capabilities. Does that help you in any way?
You say that Streamyfin Direct plays while JF Direct streams, what do you base that on?
The Admin interface tells you all active streams and their properties. For Jellyfin-Expo it remuxes the container while for Streamyfin it direct plays.
I was afraid you were gonna say that. Unfortunately Streamyfin does not accurately report playback information to the server. Best way to determine what is going on is by looking at the server logs.
I redid my testing with the logs:
If I start playback with JF I can observe the following log line
[2024-10-14 11:17:01.189 +02:00] [INF] [83] MediaBrowser.MediaEncoding.Transcoding.TranscodeManager: "/usr/lib/jellyfin-ffmpeg/ffmpeg" "-analyzeduration 200M -probesize 1G -fflags +genpts -i file:\"/data/media/movies/moviename/moviename.mp4\" -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 copy -tag:v:0 hvc1 -bsf:v hevc_mp4toannexb -start_at_zero -codec:a:0 copy -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 6 -hls_segment_type fmp4 -hls_fmp4_init_filename \"70c1b19b2b474ff73db3036468bec9cd-1.mp4\" -start_number 0 -hls_segment_filename \"/config/data/transcodes/70c1b19b2b474ff73db3036468bec9cd%d.mp4\" -hls_playlist_type vod -hls_list_size 0 -y \"/config/data/transcodes/70c1b19b2b474ff73db3036468bec9cd.m3u8\""
The same does not happen if I start playback through Streamyfin. Also no separate log file FFmpeg.Remux-2024-10-14_11-17-01_ead5e17198726ee10d7c6f1f56d3b7fd_d92a17bc
is created
I further investigated and found pretty unreliable behavior actually. It turns out that some of my media is remuxed and does playback on streamyfin while other doesn't. This is weird because all my media is converted to a single format through an app called unmanic (essentially an ffmpeg wrapper). So everything I own is h265, SDR, AAC, mp4...
The app actually knows about this before requesting the stream because it already tells you ahead of time "Direct Stream" or "Transcoded Stream". All videos marked with "Transcoded Stream" do playback correctly (although the loading icon does not vanish)
Any idea what is causing that?
The only thing you didn't mention was subtitles. That could definitely cause a transcode and or remux which could cause problems. All of this probably stems from an incorrect device profile, which we are working on.
Also we're very close to releasing a new integrated VLC player for iOS which will fix all of these problems.
Correct, I do not modify the original subtitles. Got it, thank you for helping me investigate this problem. Looking forward to future releases!
Could you figure out what subtitles are causing issues? @michi7801
Yes, videos with no subtitles at all seem to be the one who direct stream
Ok thanks, what are the codec/format of the subs that don't work?
I worked through my whole library (about 130 Files) and literally the only ones not working are those without any subtitles at all
Edit for clarification: With "Direct Stream" i mean the hint below the play button in Streamyfin. Videos with the hint "Direct Stream" are those without subs and don't work
Describe the bug Sometimes only audio is played. Video Shows only QuickTime symbol. I will investigate server logs to give a more precise error log.
To Reproduce Steps to reproduce the behavior:
Smartphone: