Live TV Transcode - williamthrilliam - 2024-02-12
Hello,
My live TV is transcoding when it shouldn't be. I'm using a HDHomeRun FLEX 4K and it works fine direct playing in other apps. I also have the setting to force direct play on live TV but it's not being respected. I did see this on github, but I'm running 10.8 and should be running with that fix.
Server:
Version: 10.8.13
Operating System: Linux
Architecture: X64
Client:
Nvidia Shield
Log:
Code: /videos/f0338991-ae98-e56c-7b4e-6309791c77b0/live.m3u8
{"Protocol":1,"Id":"native_7e3fb9393fa80fc2d3712f2e873550d2_9bd74ef4e6a5237225e66a53427f8dd2","Path":"http://192.168.87.128:8096/LiveTv/LiveStreamFiles/0ad61846543d41eca18f3325003f426f/stream.ts","EncoderPath":null,"EncoderProtocol":null,"Type":0,"Container":"mpegts","Size":null,"Name":null,"IsRemote":false,"ETag":null,"RunTimeTicks":null,"ReadAtNativeFramerate":false,"IgnoreDts":true,"IgnoreIndex":false,"GenPtsInput":false,"SupportsTranscoding":true,"SupportsDirectStream":true,"SupportsDirectPlay":false,"IsInfiniteStream":true,"RequiresOpening":true,"OpenToken":null,"RequiresClosing":true,"LiveStreamId":"a17c75760a04e99b68cf766e11316e1c_09efa0d56b934a82adec00a87b837fb0_native_7e3fb9393fa80fc2d3712f2e873550d2_9bd74ef4e6a5237225e66a53427f8dd2","BufferMs":0,"RequiresLooping":false,"SupportsProbing":true,"VideoType":null,"IsoType":null,"Video3DFormat":null,"MediaStreams":[{"Codec":"mpeg2video","CodecTag":null,"Language":null,"ColorRange":"tv","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":"1/90000","CodecTimeBase":null,"Title":null,"VideoRange":"SDR","VideoRangeType":"SDR","VideoDoViTitle":null,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"DisplayTitle":"1080i MPEG2VIDEO SDR","NalLengthSize":null,"IsInterlaced":true,"IsAVC":null,"ChannelLayout":null,"BitRate":20000000,"BitDepth":8,"RefFrames":1,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":false,"IsForced":false,"Height":1080,"Width":1920,"AverageFrameRate":29.97003,"RealFrameRate":29.97003,"Profile":"Main","Type":1,"AspectRatio":"16:9","Index":-1,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":"yuv420p","Level":4,"IsAnamorphic":false},{"Codec":"ac3","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":"1/90000","CodecTimeBase":null,"Title":null,"VideoRange":null,"VideoRangeType":null,"VideoDoViTitle":null,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"DisplayTitle":"Dolby Digital - 5.1","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":"5.1","BitRate":384000,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":6,"SampleRate":48000,"IsDefault":false,"IsForced":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":null,"Type":0,"AspectRatio":null,"Index":-1,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null}],"MediaAttachments":[],"Formats":[],"Bitrate":20384000,"Timestamp":null,"RequiredHttpHeaders":{},"TranscodingUrl":null,"TranscodingSubProtocol":null,"TranscodingContainer":null,"AnalyzeDurationMs":3000,"DefaultAudioStreamIndex":null,"DefaultSubtitleStreamIndex":null}
/usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 3000000 -fflags +igndts -init_hw_device vaapi=va:,kernel_driver=i915,driver=iHD -init_hw_device qsv=qs@va -filter_hw_device qs -autorotate 0 -i "http://192.168.87.128:8096/LiveTv/LiveStreamFiles/0ad61846543d41eca18f3325003f426f/stream.ts" -map_metadata -1 -map_chapters -1 -threads 0 -sn -codec:v:0 hevc_qsv -tag:v:0 hvc1 -low_power 1 -preset 7 -b:v 20000000 -maxrate 20000000 -bufsize 40000000 -g:v:0 90 -keyint_min:v:0 90 -vf "setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,yadif=0:-1:0,scale=trunc(min(max(iw\,ih*a)\,min(1920\,1080*a))/2)*2:trunc(min(max(iw/a\,ih)\,min(1920/a\,1080))/2)*2,format=yuv420p" -flags -global_header -codec:a:0 libfdk_aac -ac 6 -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/072aea80cfcbeb393ca9f655d0a967f7/" -hls_segment_filename "/var/lib/jellyfin/transcodes/072aea80cfcbeb393ca9f655d0a967f7%d.ts" -hls_playlist_type event -hls_list_size 0 -y "/var/lib/jellyfin/transcodes/072aea80cfcbeb393ca9f655d0a967f7.m3u8"
ffmpeg version 6.0.1-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 12 (Ubuntu 12.3.0-1ubuntu1~23.04)
configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --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-opencl --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-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-vaapi --enable-amf --enable-libvpl --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
libavutil 58. 2.100 / 58. 2.100
libavcodec 60. 3.100 / 60. 3.100
libavformat 60. 3.100 / 60. 3.100
libavdevice 60. 1.100 / 60. 1.100
libavfilter 9. 3.100 / 9. 3.100
libswscale 7. 1.100 / 7. 1.100
libswresample 4. 10.100 / 4. 10.100
libpostproc 57. 1.100 / 57. 1.100
libva info: VA-API version 1.20.0
libva info: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_20
libva info: va_openDriver() returns 0
libva info: VA-API version 1.20.0
libva info: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_20
libva info: va_openDriver() returns 0
[mpeg2video @ 0x55dfc82ae300] Invalid frame dimensions 0x0.
Last message repeated 16 times
Input #0, mpegts, from 'http://192.168.87.128:8096/LiveTv/LiveStreamFiles/0ad61846543d41eca18f3325003f426f/stream.ts':
Duration: N/A, start: 52063.453789, bitrate: N/A
Program 3
Stream #0:0[0x31]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, top first), 1920x1080 [SAR 1:1 DAR 16:9], Closed Captions, 29.97 fps, 29.97 tbr, 90k tbn
Side data:
cpb: bitrate max/min/avg: 13683200/0/0 buffer size: 7995392 vbv_delay: N/A
Stream #0:1[0x34](eng): Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz, 5.1(side), fltp, 384 kb/s
Stream #0:2[0x35](spa): Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz, stereo, fltp, 128 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (mpeg2video (native) -> hevc (hevc_qsv))
Stream #0:1 -> #0:1 (ac3 (native) -> aac (libfdk_aac))
Press [q] to stop, [?] for help
Output #0, hls, to '/var/lib/jellyfin/transcodes/072aea80cfcbeb393ca9f655d0a967f7.m3u8':
Metadata:
encoder : Lavf60.3.100
Stream #0:0: Video: hevc (hvc1 / 0x31637668), nv12(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 20000 kb/s, 29.97 fps, 90k tbn
Metadata:
encoder : Lavc60.3.100 hevc_qsv
Side data:
cpb: bitrate max/min/avg: 20000000/0/20000000 buffer size: 40000000 vbv_delay: N/A
Stream #0:1: Audio: aac, 48000 Hz, 5.1, s16, 384 kb/s
Metadata:
encoder : Lavc60.3.100 libfdk_aac
frame= 0 fps=0.0 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed= 0x
frame= 62 fps=0.0 q=-0.0 size=N/A time=00:00:02.30 bitrate=N/A speed=4.32x
frame= 103 fps= 99 q=-0.0 size=N/A time=00:00:03.64 bitrate=N/A speed=3.49x
[hls @ 0x55dfc8654580] Opening '/var/lib/jellyfin/transcodes/072aea80cfcbeb393ca9f655d0a967f70.ts' for writing
[hls @ 0x55dfc8654580] Opening '/var/lib/jellyfin/transcodes/072aea80cfcbeb393ca9f655d0a967f7.m3u8.tmp' for writing
RE: Live TV Transcode - tmsrxzar - 2024-02-12
that's the ffmpeg log, not specifically useful other than confirming it was transcoding
the jellyfin server log is what's needed, it will contain a line TranscodeReason to say "why" it was transcoding
RE: Live TV Transcode - TheDreadPirate - 2024-02-12
What setting are you talking about for "forcing" direct play? There is a setting to force transcoding. Some clients (Android TV) have settings to force direct play. But I don't recall seeing a "force direct play" on the server side.
FWIW, a lot of newer client devices are starting to drop hardware accelerated decoding for mpeg2.
RE: Live TV Transcode - williamthrilliam - 2024-02-24
Hi thanks all, didn't seem get notified of replies.
There is a direct stream live tv (transcoding is disabled) option under preferences > playback > live tv. This is for the jellyfin android app version 0.16.5. Here are the correct logs:
Code: [2024-02-24 09:37:47.479 -06:00] [INF] User policy for "williamthrilliam". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2024-02-24 09:37:47.480 -06:00] [INF] StreamBuilder.BuildVideoItem( Profile="AndroidTV-ExoPlayer", Path="http://192.168.87.128:8096/LiveTv/LiveStreamFiles/9f4e9a12c1004fbe97dd8a38fd3031ec/stream.ts", AudioStreamIndex=null, SubtitleStreamIndex=null ) => ( PlayMethod=Transcode, TranscodeReason=ContainerNotSupported, AudioCodecNotSupported ) "media:/videos/f0338991-ae98-e56c-7b4e-6309791c77b0/master.m3u8?MediaSourceId=native_7e3fb9393fa80fc2d3712f2e873550d2_9bd74ef4e6a5237225e66a53427f8dd2&VideoCodec=hevc,h264&AudioCodec=aac,mp3&AudioStreamIndex=-1&VideoBitrate=119616000&AudioBitrate=384000&MaxFramerate=29.97003&api_key=<token>&LiveStreamId=a17c75760a04e99b68cf766e11316e1c_09efa0d56b934a82adec00a87b837fb0_native_7e3fb9393fa80fc2d3712f2e873550d2_9bd74ef4e6a5237225e66a53427f8dd2&RequireAvc=false&SegmentContainer=ts&BreakOnNonKeyFrames=False&mpeg2video-level=4&mpeg2video-videobitdepth=8&mpeg2video-profile=main&aac-audiochannels=8&TranscodeReasons=ContainerNotSupported,%20AudioCodecNotSupported"
[2024-02-24 09:37:47.779 -06:00] [INF] "/usr/lib/jellyfin-ffmpeg/ffmpeg" "-analyzeduration 3000000 -fflags +igndts -init_hw_device vaapi=va:,kernel_driver=i915,driver=iHD -init_hw_device qsv=qs@va -filter_hw_device qs -hwaccel qsv -hwaccel_output_format qsv -c:v mpeg2_qsv -autorotate 0 -i \"http://192.168.87.128:8096/LiveTv/LiveStreamFiles/9f4e9a12c1004fbe97dd8a38fd3031ec/stream.ts\" -autoscale 0 -map_metadata -1 -map_chapters -1 -threads 0 -sn -codec:v:0 hevc_qsv -tag:v:0 hvc1 -low_power 1 -preset slow -b:v 20000000 -maxrate 20000000 -bufsize 40000000 -g:v:0 90 -keyint_min:v:0 90 -vf \"setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,deinterlace_qsv=mode=2,scale_qsv=format=nv12\" -flags -global_header -codec:a:0 libfdk_aac -ac 6 -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/47a7dfd766223929b948bf8a5ff6b384/\" -hls_segment_filename \"/var/lib/jellyfin/transcodes/47a7dfd766223929b948bf8a5ff6b384%d.ts\" -hls_playlist_type event -hls_list_size 0 -y \"/var/lib/jellyfin/transcodes/47a7dfd766223929b948bf8a5ff6b384.m3u8\""
[2024-02-24 09:37:57.929 -06:00] [WRN] Slow HTTP Response from "http://192.168.87.128:8096/videos/f0338991-ae98-e56c-7b4e-6309791c77b0/live.m3u8?DeviceId=ffbfa6ce19bb40e377a62c7ee80e73b82faafb27&MediaSourceId=native_7e3fb9393fa80fc2d3712f2e873550d2_9bd74ef4e6a5237225e66a53427f8dd2&VideoCodec=hevc,h264&AudioCodec=aac,mp3&AudioStreamIndex=-1&VideoBitrate=119616000&AudioBitrate=384000&MaxFramerate=29.97003&PlaySessionId=4cf4cd7d32374ab4aa067cb43f6c0527&api_key=b508c110a5a941b2bf69e6453db0699e&LiveStreamId=a17c75760a04e99b68cf766e11316e1c_09efa0d56b934a82adec00a87b837fb0_native_7e3fb9393fa80fc2d3712f2e873550d2_9bd74ef4e6a5237225e66a53427f8dd2&RequireAvc=false&SegmentContainer=ts&BreakOnNonKeyFrames=False&mpeg2video-level=4&mpeg2video-videobitdepth=8&mpeg2video-profile=main&aac-audiochannels=8&TranscodeReasons=ContainerNotSupported,%20AudioCodecNotSupported" to "192.168.87.49" in 0:00:10.1524101 with Status Code 200
RE: Live TV Transcode - TheDreadPirate - 2024-02-24
Strange that the video would get transcoded when only the audio was detected as needing to be transcoded. The TS container supports mpeg2 so there is no technical reason it would need to. I'm going to say that is a bug and you should submit a github ticket to the server git.
https://github.com/jellyfin/jellyfin/issues
RE: Live TV Transcode - williamthrilliam - 2024-02-24
(2024-02-24, 04:56 PM)TheDreadPirate Wrote: Strange that the video would get transcoded when only the audio was detected as needing to be transcoded. The TS container supports mpeg2 so there is no technical reason it would need to. I'm going to say that is a bug and you should submit a github ticket to the server git.
https://github.com/jellyfin/jellyfin/issues
Done: https://github.com/jellyfin/jellyfin/issues/11060
|