Cannot playback mp4 on jellyfin-roku 1.4.11 but works in browser #3551

Closed
opened 2025-12-21 22:22:57 +01:00 by backuprepo · 4 comments
Owner

Originally created by @asmartin on GitHub (Jan 17, 2022).

Media Info of the file

General
Complete name                            : My Video.mp4
Format                                   : MPEG-4
Format profile                           : Base Media
Codec ID                                 : isom (isom/iso2/avc1/mp41)
File size                                : 2.55 GiB
Duration                                 : 1 h 2 min
Overall bit rate                         : 5 804 kb/s
Movie name                               : Program Name
Law rating                               : 
Writing application                      : Lavf58.45.100

Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : High@L5
Format settings                          : CABAC / 5 Ref Frames
Format settings, CABAC                   : Yes
Format settings, Reference frames        : 5 frames
Codec ID                                 : avc1
Codec ID/Info                            : Advanced Video Coding
Duration                                 : 1 h 2 min
Bit rate                                 : 5 402 kb/s
Width                                    : 1 920 pixels
Height                                   : 1 080 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 29.970 (30000/1001) FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.087
Stream size                              : 2.38 GiB (93%)
Writing library                          : x264 core 155 r2917 0a84d98
Encoding settings                        : cabac=1 / ref=5 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=8 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=1 / 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=3 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=50 / rc=crf / mbtree=1 / crf=20.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00
Menus                                    : 3
Codec configuration box                  : avcC

Audio
ID                                       : 2
Format                                   : AAC LC
Format/Info                              : Advanced Audio Codec Low Complexity
Codec ID                                 : mp4a-40-2
Duration                                 : 1 h 2 min
Duration_LastFrame                       : -11 ms
Bit rate mode                            : Constant
Bit rate                                 : 394 kb/s
Channel(s)                               : 6 channels
Channel layout                           : L R C Cb Lb Rb
Sampling rate                            : 48.0 kHz
Frame rate                               : 46.875 FPS (1024 SPF)
Compression mode                         : Lossy
Stream size                              : 178 MiB (7%)
Language                                 : English
Default                                  : Yes
Alternate group                          : 1
Menus                                    : 3

Text #1
ID                                       : 1-CC1
Format                                   : EIA-608
Muxing mode                              : SCTE 128 / DTVCC Transport
Muxing mode, more info                   : Muxed in Video #1
Duration                                 : 1 h 2 min
Bit rate mode                            : Constant
Stream size                              : 0.00 Byte (0%)
CaptionServiceName                       : CC1

Text #2
ID                                       : 1-CC3
Format                                   : EIA-608
Muxing mode                              : SCTE 128 / DTVCC Transport
Muxing mode, more info                   : Muxed in Video #1
Duration                                 : 1 h 2 min
Bit rate mode                            : Constant
Stream size                              : 0.00 Byte (0%)
CaptionServiceName                       : CC3

Text #3
ID                                       : 1-T4
Format                                   : EIA-608
Muxing mode                              : SCTE 128 / DTVCC Transport
Muxing mode, more info                   : Muxed in Video #1
Duration                                 : 1 h 2 min
Bit rate mode                            : Constant
Stream size                              : 0.00 Byte (0%)
CaptionServiceName                       : T4

Text #4
ID                                       : 1-1
Format                                   : EIA-708
Muxing mode                              : SCTE 128 / DTVCC Transport
Muxing mode, more info                   : Muxed in Video #1
Duration                                 : 1 h 2 min
Bit rate mode                            : Constant
Stream size                              : 0.00 Byte (0%)

Text #5
ID                                       : 1-3
Format                                   : EIA-708
Muxing mode                              : SCTE 128 / DTVCC Transport
Muxing mode, more info                   : Muxed in Video #1
Duration                                 : 1 h 2 min
Bit rate mode                            : Constant
Stream size                              : 0.00 Byte (0%)

Menu #1
ID                                       : 3
Codec ID                                 : text
Duration                                 : 1 h 2 min
Language                                 : English
Menu For                                 : 1,2
00:00:00.000                             : Chapter 1
00:00:09.440                             : Chapter 2
00:18:59.610                             : Chapter 3
00:28:34.610                             : Chapter 4
00:43:07.320                             : Chapter 5
00:50:26.790                             : Chapter 6
00:57:37.590                             : Chapter 7

Menu #2
00:00:00.000                             : Chapter 1
00:00:09.440                             : Chapter 2
00:18:59.610                             : Chapter 3
00:28:34.610                             : Chapter 4
00:43:07.320                             : Chapter 5
00:50:26.790                             : Chapter 6
00:57:37.590                             : Chapter 7

Logs
I tried to split up the large json blob to be more readable:

[2022-01-16 22:43:25.892 +00:00] [INF] GetPostedPlaybackInfo profile: DeviceProfile { Name: null,
 Id: null,
 Identification: null,
 FriendlyName: null,
 Manufacturer: null,
 ManufacturerUrl: null,
 ModelName: null,
 ModelDescription: null,
 ModelNumber: null,
 ModelUrl: null,
 SerialNumber: null,
 EnableAlbumArtInDidl: False,
 EnableSingleAlbumArtLimit: False,
 EnableSingleSubtitleLimit: False,
 SupportedMediaTypes: "Audio,Photo,Video",
 UserId: null,
 AlbumArtPn: null,
 MaxAlbumArtWidth: 0,
 MaxAlbumArtHeight: 0,
 MaxIconWidth: null,
 MaxIconHeight: null,
 MaxStreamingBitrate: 120000000,
 MaxStaticBitrate: 100000000,
 MusicStreamingTranscodingBitrate: 192000,
 MaxStaticMusicBitrate: null,
 SonyAggregationFlags: null,
 ProtocolInfo: null,
 TimelineOffsetSeconds: 0,
 RequiresPlainVideoItems: False,
 RequiresPlainFolders: False,
 EnableMSMediaReceiverRegistrar: False,
 IgnoreTranscodeByteRangeRequests: False,
 XmlRootAttributes: [],
 DirectPlayProfiles: [DirectPlayProfile { Container: "mp4,m4v,mov",
 AudioCodec: "mp3,pcm,lpcm,wav,alac,aac",
 VideoCodec: "h264,h265,hevc,mpeg2video",
 Type: Video },
 DirectPlayProfile { Container: "mkv,webm",
 AudioCodec: "mp3,pcm,lpcm,wav,flac,alac,aac,opus,vorbis",
 VideoCodec: "h264,vp8,h265,hevc,vp9,mpeg2video",
 Type: Video },
 DirectPlayProfile { Container: "mp3,pcm,lpcm,wav,wma,flac,alac,aac,wmapro",
 AudioCodec: null,
 VideoCodec: null,
 Type: Audio }],
 TranscodingProfiles: [TranscodingProfile { Container: "aac",
 Type: Audio,
 VideoCodec: null,
 AudioCodec: "aac",
 Protocol: "http",
 EstimateContentLength: False,
 EnableMpegtsM2TsMode: False,
 TranscodeSeekInfo: Auto,
 CopyTimestamps: False,
 Context: Streaming,
 EnableSubtitlesInManifest: False,
 MaxAudioChannels: " 2",
 MinSegments: 0,
 SegmentLength: 0,
 BreakOnNonKeyFrames: False },
 TranscodingProfile { Container: "mp3",
 Type: Audio,
 VideoCodec: null,
 AudioCodec: "mp3",
 Protocol: "http",
 EstimateContentLength: False,
 EnableMpegtsM2TsMode: False,
 TranscodeSeekInfo: Auto,
 CopyTimestamps: False,
 Context: Streaming,
 EnableSubtitlesInManifest: False,
 MaxAudioChannels: "2",
 MinSegments: 0,
 SegmentLength: 0,
 BreakOnNonKeyFrames: False },
 TranscodingProfile { Container: "mp3",
 Type: Audio,
 VideoCodec: null,
 AudioCodec: "mp3",
 Protocol: "http",
 EstimateContentLength: False,
 EnableMpegtsM2TsMode: False,
 TranscodeSeekInfo: Auto,
 CopyTimestamps: False,
 Context: Static,
 EnableSubtitlesInManifest: False,
 MaxAudioChannels: "2",
 MinSegments: 0,
 SegmentLength: 0,
 BreakOnNonKeyFrames: False },
 TranscodingProfile { Container: "aac",
 Type: Audio,
 VideoCodec: null,
 AudioCodec: "aac",
 Protocol: "http",
 EstimateContentLength: False,
 EnableMpegtsM2TsMode: False,
 TranscodeSeekInfo: Auto,
 CopyTimestamps: False,
 Context: Static,
 EnableSubtitlesInManifest: False,
 MaxAudioChannels: " 2",
 MinSegments: 0,
 SegmentLength: 0,
 BreakOnNonKeyFrames: False },
 TranscodingProfile { Container: "ts",
 Type: Video,
 VideoCodec: "h264,mpeg2video",
 AudioCodec: "aac",
 Protocol: "hls",
 EstimateContentLength: False,
 EnableMpegtsM2TsMode: False,
 TranscodeSeekInfo: Auto,
 CopyTimestamps: False,
 Context: Streaming,
 EnableSubtitlesInManifest: False,
 MaxAudioChannels: " 2",
 MinSegments: 1,
 SegmentLength: 0,
 BreakOnNonKeyFrames: True },
 TranscodingProfile { Container: "mp4",
 Type: Video,
 VideoCodec: "h264",
 AudioCodec: "aac,opus,flac,vorbis",
 Protocol: "http",
 EstimateContentLength: False,
 EnableMpegtsM2TsMode: False,
 TranscodeSeekInfo: Auto,
 CopyTimestamps: False,
 Context: Static,
 EnableSubtitlesInManifest: False,
 MaxAudioChannels: null,
 MinSegments: 0,
 SegmentLength: 0,
 BreakOnNonKeyFrames: False }],
 ContainerProfiles: [],
 CodecProfiles: [CodecProfile { Type: VideoAudio,
 Conditions: [ProfileCondition { Condition: Equals,
 Property: IsSecondaryAudio,
 Value: "false",
 IsRequired: False }],
 ApplyConditions: [],
 Codec: "aac",
 Container: null },
 CodecProfile { Type: VideoAudio,
 Conditions: [ProfileCondition { Condition: LessThanEqual,
 Property: AudioChannels,
 Value: " 2",
 IsRequired: False }],
 ApplyConditions: [],
 Codec: "mp3,pcm,lpcm,wav,flac,alac,aac,opus,vorbis",
 Container: null },
 CodecProfile { Type: Video,
 Conditions: [ProfileCondition { Condition: EqualsAny,
 Property: VideoProfile,
 Value: "high|main|baseline|constrained baseline",
 IsRequired: False },
 ProfileCondition { Condition: LessThanEqual,
 Property: VideoLevel,
 Value: "51",
 IsRequired: False }],
 ApplyConditions: [],
 Codec: "h264",
 Container: null }],
 ResponseProfiles: [],
 SubtitleProfiles: [SubtitleProfile { Format: "vtt",
 Method: External,
 DidlMode: null,
 Language: null,
 Container: null },
 SubtitleProfile { Format: "srt",
 Method: External,
 DidlMode: null,
 Language: null,
 Container: null },
 SubtitleProfile { Format: "ttml",
 Method: External,
 DidlMode: null,
 Language: null,
 Container: null }] }
[2022-01-16 22:43:25.893 +00:00] [INF] User policy for "user". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2022-01-16 22:43:25.893 +00:00] [INF] Profile: "Unknown Profile", Path: "/path/to/video/My Video.mp4", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2022-01-16 22:43:25.893 +00:00] [INF] Profile: "VideoAudioCodecProfile", DirectPlay=false. Reason="Unknown Profile".AudioChannels Condition: LessThanEqual. ConditionValue: " 2". IsRequired: False. Path: "/path/to/video/My Video.mp4"
[2022-01-16 22:43:25.894 +00:00] [INF] Profile: "Unknown Profile", Path: "/path/to/video/My Video.mp4", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2022-01-16 22:43:25.894 +00:00] [INF] Profile: "VideoAudioCodecProfile", DirectPlay=false. Reason="Unknown Profile".AudioChannels Condition: LessThanEqual. ConditionValue: " 2". IsRequired: False. Path: "/path/to/video/My Video.mp4"
[2022-01-16 22:43:25.894 +00:00] [INF] Profile: "Unknown Profile", Path: "/path/to/video/My Video.mp4", isEligibleForDirectPlay: True, isEligibleForDirectStream: True
[2022-01-16 22:43:25.894 +00:00] [INF] Profile: "VideoAudioCodecProfile", DirectPlay=false. Reason="Unknown Profile".AudioChannels Condition: LessThanEqual. ConditionValue: " 2". IsRequired: False. Path: "/path/to/video/My Video.mp4"
[2022-01-16 22:43:26.085 +00:00] [DBG] AuthenticationScheme: "CustomAuthentication" was successfully authenticated.
[2022-01-16 22:43:26.085 +00:00] [DBG] AuthenticationScheme: "CustomAuthentication" was successfully authenticated.
[2022-01-16 22:43:26.112 +00:00] [DBG] AuthenticationScheme: "CustomAuthentication" was successfully authenticated.
[2022-01-16 22:43:26.112 +00:00] [DBG] AuthenticationScheme: "CustomAuthentication" was successfully authenticated.
[2022-01-16 22:43:26.186 +00:00] [DBG] AuthenticationScheme: "CustomAuthentication" was successfully authenticated.
[2022-01-16 22:43:26.186 +00:00] [DBG] AuthenticationScheme: "CustomAuthentication" was successfully authenticated.
[2022-01-16 22:43:26.201 +00:00] [DBG] AuthenticationScheme: "CustomAuthentication" was successfully authenticated.
[2022-01-16 22:43:26.201 +00:00] [DBG] AuthenticationScheme: "CustomAuthentication" was successfully authenticated.
[2022-01-16 22:43:26.201 +00:00] [DBG] ReportPlaybackStopped PlaySessionId: "f909d8236e144bc296c23ec41670878c"
[2022-01-16 22:43:26.203 +00:00] [INF] Playback stopped reported by app "Jellyfin Roku" "1.4.11" playing "My Video". Stopped at "0" ms

This video file plays fine in a Chrome browser. I created these type of mp4 files by converting from .ts files with the following ffmpeg command:

ffmpeg -i input.ts -vcodec libx264 -acodec aac -vf yadif=parity=auto -crf 20 -preset slow -movflags +faststart -hide_banner -loglevel error -max_muxing_queue_size 9999 -y -threads 1 output.mp4

Should I be using some different ffmpeg flags to produce a video that would be more natively compatible with Roku, Android, etc?

FFmpeg Logs
One wasn't generated.

Stats for Nerds Screenshots
N/A

Server System (please complete the following information):

  • OS: Ubuntu 20.04.2 LTS
  • Jellyfin Version: 10.7.5.0
  • Hardware settings & device: Hardware acceleration is None; CPU is Xeon E5520
  • Reverse proxy: nginx
  • Other hardware notes: running in LXD container

Client System (please complete the following information):

  • Device: Roku Ultra (4670X)
  • OS: Roku OS
  • Client: jellyfin-roku
  • Browser (if Web client): N/A
  • Client and Browser Version: Roku OS version 10.5.0 build 4208-46 and jellyfin-roku 1.4.11
Originally created by @asmartin on GitHub (Jan 17, 2022). **Media Info of the file** ``` General Complete name : My Video.mp4 Format : MPEG-4 Format profile : Base Media Codec ID : isom (isom/iso2/avc1/mp41) File size : 2.55 GiB Duration : 1 h 2 min Overall bit rate : 5 804 kb/s Movie name : Program Name Law rating : Writing application : Lavf58.45.100 Video ID : 1 Format : AVC Format/Info : Advanced Video Codec Format profile : High@L5 Format settings : CABAC / 5 Ref Frames Format settings, CABAC : Yes Format settings, Reference frames : 5 frames Codec ID : avc1 Codec ID/Info : Advanced Video Coding Duration : 1 h 2 min Bit rate : 5 402 kb/s Width : 1 920 pixels Height : 1 080 pixels Display aspect ratio : 16:9 Frame rate mode : Constant Frame rate : 29.970 (30000/1001) FPS Color space : YUV Chroma subsampling : 4:2:0 Bit depth : 8 bits Scan type : Progressive Bits/(Pixel*Frame) : 0.087 Stream size : 2.38 GiB (93%) Writing library : x264 core 155 r2917 0a84d98 Encoding settings : cabac=1 / ref=5 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=8 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=1 / 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=3 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=50 / rc=crf / mbtree=1 / crf=20.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00 Menus : 3 Codec configuration box : avcC Audio ID : 2 Format : AAC LC Format/Info : Advanced Audio Codec Low Complexity Codec ID : mp4a-40-2 Duration : 1 h 2 min Duration_LastFrame : -11 ms Bit rate mode : Constant Bit rate : 394 kb/s Channel(s) : 6 channels Channel layout : L R C Cb Lb Rb Sampling rate : 48.0 kHz Frame rate : 46.875 FPS (1024 SPF) Compression mode : Lossy Stream size : 178 MiB (7%) Language : English Default : Yes Alternate group : 1 Menus : 3 Text #1 ID : 1-CC1 Format : EIA-608 Muxing mode : SCTE 128 / DTVCC Transport Muxing mode, more info : Muxed in Video #1 Duration : 1 h 2 min Bit rate mode : Constant Stream size : 0.00 Byte (0%) CaptionServiceName : CC1 Text #2 ID : 1-CC3 Format : EIA-608 Muxing mode : SCTE 128 / DTVCC Transport Muxing mode, more info : Muxed in Video #1 Duration : 1 h 2 min Bit rate mode : Constant Stream size : 0.00 Byte (0%) CaptionServiceName : CC3 Text #3 ID : 1-T4 Format : EIA-608 Muxing mode : SCTE 128 / DTVCC Transport Muxing mode, more info : Muxed in Video #1 Duration : 1 h 2 min Bit rate mode : Constant Stream size : 0.00 Byte (0%) CaptionServiceName : T4 Text #4 ID : 1-1 Format : EIA-708 Muxing mode : SCTE 128 / DTVCC Transport Muxing mode, more info : Muxed in Video #1 Duration : 1 h 2 min Bit rate mode : Constant Stream size : 0.00 Byte (0%) Text #5 ID : 1-3 Format : EIA-708 Muxing mode : SCTE 128 / DTVCC Transport Muxing mode, more info : Muxed in Video #1 Duration : 1 h 2 min Bit rate mode : Constant Stream size : 0.00 Byte (0%) Menu #1 ID : 3 Codec ID : text Duration : 1 h 2 min Language : English Menu For : 1,2 00:00:00.000 : Chapter 1 00:00:09.440 : Chapter 2 00:18:59.610 : Chapter 3 00:28:34.610 : Chapter 4 00:43:07.320 : Chapter 5 00:50:26.790 : Chapter 6 00:57:37.590 : Chapter 7 Menu #2 00:00:00.000 : Chapter 1 00:00:09.440 : Chapter 2 00:18:59.610 : Chapter 3 00:28:34.610 : Chapter 4 00:43:07.320 : Chapter 5 00:50:26.790 : Chapter 6 00:57:37.590 : Chapter 7 ``` **Logs** I tried to split up the large json blob to be more readable: ``` [2022-01-16 22:43:25.892 +00:00] [INF] GetPostedPlaybackInfo profile: DeviceProfile { Name: null, Id: null, Identification: null, FriendlyName: null, Manufacturer: null, ManufacturerUrl: null, ModelName: null, ModelDescription: null, ModelNumber: null, ModelUrl: null, SerialNumber: null, EnableAlbumArtInDidl: False, EnableSingleAlbumArtLimit: False, EnableSingleSubtitleLimit: False, SupportedMediaTypes: "Audio,Photo,Video", UserId: null, AlbumArtPn: null, MaxAlbumArtWidth: 0, MaxAlbumArtHeight: 0, MaxIconWidth: null, MaxIconHeight: null, MaxStreamingBitrate: 120000000, MaxStaticBitrate: 100000000, MusicStreamingTranscodingBitrate: 192000, MaxStaticMusicBitrate: null, SonyAggregationFlags: null, ProtocolInfo: null, TimelineOffsetSeconds: 0, RequiresPlainVideoItems: False, RequiresPlainFolders: False, EnableMSMediaReceiverRegistrar: False, IgnoreTranscodeByteRangeRequests: False, XmlRootAttributes: [], DirectPlayProfiles: [DirectPlayProfile { Container: "mp4,m4v,mov", AudioCodec: "mp3,pcm,lpcm,wav,alac,aac", VideoCodec: "h264,h265,hevc,mpeg2video", Type: Video }, DirectPlayProfile { Container: "mkv,webm", AudioCodec: "mp3,pcm,lpcm,wav,flac,alac,aac,opus,vorbis", VideoCodec: "h264,vp8,h265,hevc,vp9,mpeg2video", Type: Video }, DirectPlayProfile { Container: "mp3,pcm,lpcm,wav,wma,flac,alac,aac,wmapro", AudioCodec: null, VideoCodec: null, Type: Audio }], TranscodingProfiles: [TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: " 2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "mp3", Type: Audio, VideoCodec: null, AudioCodec: "mp3", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: "2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "aac", Type: Audio, VideoCodec: null, AudioCodec: "aac", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: " 2", MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }, TranscodingProfile { Container: "ts", Type: Video, VideoCodec: "h264,mpeg2video", AudioCodec: "aac", Protocol: "hls", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: " 2", MinSegments: 1, SegmentLength: 0, BreakOnNonKeyFrames: True }, TranscodingProfile { Container: "mp4", Type: Video, VideoCodec: "h264", AudioCodec: "aac,opus,flac,vorbis", Protocol: "http", EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Static, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False }], ContainerProfiles: [], CodecProfiles: [CodecProfile { Type: VideoAudio, Conditions: [ProfileCondition { Condition: Equals, Property: IsSecondaryAudio, Value: "false", IsRequired: False }], ApplyConditions: [], Codec: "aac", Container: null }, CodecProfile { Type: VideoAudio, Conditions: [ProfileCondition { Condition: LessThanEqual, Property: AudioChannels, Value: " 2", IsRequired: False }], ApplyConditions: [], Codec: "mp3,pcm,lpcm,wav,flac,alac,aac,opus,vorbis", Container: null }, CodecProfile { Type: Video, Conditions: [ProfileCondition { Condition: EqualsAny, Property: VideoProfile, Value: "high|main|baseline|constrained baseline", IsRequired: False }, ProfileCondition { Condition: LessThanEqual, Property: VideoLevel, Value: "51", IsRequired: False }], ApplyConditions: [], Codec: "h264", Container: null }], ResponseProfiles: [], SubtitleProfiles: [SubtitleProfile { Format: "vtt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "srt", Method: External, DidlMode: null, Language: null, Container: null }, SubtitleProfile { Format: "ttml", Method: External, DidlMode: null, Language: null, Container: null }] } [2022-01-16 22:43:25.893 +00:00] [INF] User policy for "user". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True [2022-01-16 22:43:25.893 +00:00] [INF] Profile: "Unknown Profile", Path: "/path/to/video/My Video.mp4", isEligibleForDirectPlay: True, isEligibleForDirectStream: True [2022-01-16 22:43:25.893 +00:00] [INF] Profile: "VideoAudioCodecProfile", DirectPlay=false. Reason="Unknown Profile".AudioChannels Condition: LessThanEqual. ConditionValue: " 2". IsRequired: False. Path: "/path/to/video/My Video.mp4" [2022-01-16 22:43:25.894 +00:00] [INF] Profile: "Unknown Profile", Path: "/path/to/video/My Video.mp4", isEligibleForDirectPlay: True, isEligibleForDirectStream: True [2022-01-16 22:43:25.894 +00:00] [INF] Profile: "VideoAudioCodecProfile", DirectPlay=false. Reason="Unknown Profile".AudioChannels Condition: LessThanEqual. ConditionValue: " 2". IsRequired: False. Path: "/path/to/video/My Video.mp4" [2022-01-16 22:43:25.894 +00:00] [INF] Profile: "Unknown Profile", Path: "/path/to/video/My Video.mp4", isEligibleForDirectPlay: True, isEligibleForDirectStream: True [2022-01-16 22:43:25.894 +00:00] [INF] Profile: "VideoAudioCodecProfile", DirectPlay=false. Reason="Unknown Profile".AudioChannels Condition: LessThanEqual. ConditionValue: " 2". IsRequired: False. Path: "/path/to/video/My Video.mp4" [2022-01-16 22:43:26.085 +00:00] [DBG] AuthenticationScheme: "CustomAuthentication" was successfully authenticated. [2022-01-16 22:43:26.085 +00:00] [DBG] AuthenticationScheme: "CustomAuthentication" was successfully authenticated. [2022-01-16 22:43:26.112 +00:00] [DBG] AuthenticationScheme: "CustomAuthentication" was successfully authenticated. [2022-01-16 22:43:26.112 +00:00] [DBG] AuthenticationScheme: "CustomAuthentication" was successfully authenticated. [2022-01-16 22:43:26.186 +00:00] [DBG] AuthenticationScheme: "CustomAuthentication" was successfully authenticated. [2022-01-16 22:43:26.186 +00:00] [DBG] AuthenticationScheme: "CustomAuthentication" was successfully authenticated. [2022-01-16 22:43:26.201 +00:00] [DBG] AuthenticationScheme: "CustomAuthentication" was successfully authenticated. [2022-01-16 22:43:26.201 +00:00] [DBG] AuthenticationScheme: "CustomAuthentication" was successfully authenticated. [2022-01-16 22:43:26.201 +00:00] [DBG] ReportPlaybackStopped PlaySessionId: "f909d8236e144bc296c23ec41670878c" [2022-01-16 22:43:26.203 +00:00] [INF] Playback stopped reported by app "Jellyfin Roku" "1.4.11" playing "My Video". Stopped at "0" ms ``` This video file plays fine in a Chrome browser. I created these type of mp4 files by converting from .ts files with the following ffmpeg command: ``` ffmpeg -i input.ts -vcodec libx264 -acodec aac -vf yadif=parity=auto -crf 20 -preset slow -movflags +faststart -hide_banner -loglevel error -max_muxing_queue_size 9999 -y -threads 1 output.mp4 ``` Should I be using some different ffmpeg flags to produce a video that would be more natively compatible with Roku, Android, etc? **FFmpeg Logs** One wasn't generated. **Stats for Nerds Screenshots** N/A **Server System (please complete the following information):** - OS: Ubuntu 20.04.2 LTS - Jellyfin Version: 10.7.5.0 - Hardware settings & device: Hardware acceleration is None; CPU is Xeon E5520 - Reverse proxy: nginx - Other hardware notes: running in LXD container **Client System (please complete the following information):** - Device: Roku Ultra (4670X) - OS: Roku OS - Client: jellyfin-roku - Browser (if Web client): N/A - Client and Browser Version: Roku OS version 10.5.0 build 4208-46 and jellyfin-roku 1.4.11
backuprepo 2025-12-21 22:22:57 +01:00
  • closed this issue
  • added the
    stale
    label
Author
Owner

@jellyfin-bot commented on GitHub (May 18, 2022):

This issue has gone 120 days without comment. To avoid abandoned issues, it will be closed in 21 days if there are no new comments.

If you're the original submitter of this issue, please comment confirming if this issue still affects you in the latest release or master branch, or close the issue if it has been fixed. If you're another user also affected by this bug, please comment confirming so. Either action will remove the stale label.

This bot exists to prevent issues from becoming stale and forgotten. Jellyfin is always moving forward, and bugs are often fixed as side effects of other changes. We therefore ask that bug report authors remain vigilant about their issues to ensure they are closed if fixed, or re-confirmed - perhaps with fresh logs or reproduction examples - regularly. If you have any questions you can reach us on Matrix or Social Media.

@jellyfin-bot commented on GitHub (May 18, 2022): This issue has gone 120 days without comment. To avoid abandoned issues, it will be closed in 21 days if there are no new comments. If you're the original submitter of this issue, please comment confirming if this issue still affects you in the latest release or master branch, or close the issue if it has been fixed. If you're another user also affected by this bug, please comment confirming so. Either action will remove the stale label. This bot exists to prevent issues from becoming stale and forgotten. Jellyfin is always moving forward, and bugs are often fixed as side effects of other changes. We therefore ask that bug report authors remain vigilant about their issues to ensure they are closed if fixed, or re-confirmed - perhaps with fresh logs or reproduction examples - regularly. If you have any questions you can reach us on [Matrix or Social Media](https://docs.jellyfin.org/general/getting-help.html).
Author
Owner

@asmartin commented on GitHub (May 18, 2022):

This is still a problem for me

@asmartin commented on GitHub (May 18, 2022): This is still a problem for me
Author
Owner

@jellyfin-bot commented on GitHub (Apr 2, 2023):

This issue has gone 120 days without comment. To avoid abandoned issues, it will be closed in 21 days if there are no new comments.

If you're the original submitter of this issue, please comment confirming if this issue still affects you in the latest release or master branch, or close the issue if it has been fixed. If you're another user also affected by this bug, please comment confirming so. Either action will remove the stale label.

This bot exists to prevent issues from becoming stale and forgotten. Jellyfin is always moving forward, and bugs are often fixed as side effects of other changes. We therefore ask that bug report authors remain vigilant about their issues to ensure they are closed if fixed, or re-confirmed - perhaps with fresh logs or reproduction examples - regularly. If you have any questions you can reach us on Matrix or Social Media.

@jellyfin-bot commented on GitHub (Apr 2, 2023): This issue has gone 120 days without comment. To avoid abandoned issues, it will be closed in 21 days if there are no new comments. If you're the original submitter of this issue, please comment confirming if this issue still affects you in the latest release or master branch, or close the issue if it has been fixed. If you're another user also affected by this bug, please comment confirming so. Either action will remove the stale label. This bot exists to prevent issues from becoming stale and forgotten. Jellyfin is always moving forward, and bugs are often fixed as side effects of other changes. We therefore ask that bug report authors remain vigilant about their issues to ensure they are closed if fixed, or re-confirmed - perhaps with fresh logs or reproduction examples - regularly. If you have any questions you can reach us on [Matrix or Social Media](https://docs.jellyfin.org/general/getting-help.html).
Author
Owner
@zkhcohen commented on GitHub (Dec 15, 2023): > This is still a problem for me Your channel layout is invalid. See: https://github.com/HaveAGitGat/Tdarr_Plugins/issues/571 https://github.com/jellyfin/jellyfin-androidtv/issues/3227 https://github.com/jellyfin/jellyfin-androidtv/issues/1753#issuecomment-1853148550
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: starred/jellyfin#3551
No description provided.