jellyfin / jellyfin-tizen

Jellyfin Samsung TV Client
https://jellyfin.org
928 stars 72 forks source link

No sound when transcoding DTS-HD MA #287

Open Lampan-git opened 1 month ago

Lampan-git commented 1 month ago

The problem: Playing a file with DTS-HD MA it transcodes it into AAC, but there is no sound. Regular DTS 5.1 transcoding works.

Device: S90C, which don't support DTS.

Media info:

Stream #0:0: Video: hevc (Main 10), yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 3840x2160 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn (default)
    Metadata:
      BPS             : 41522231
      BPS-eng         : 41522231
      DURATION        : 02:25:21.755000000
      DURATION-eng    : 02:25:21.755000000
      NUMBER_OF_FRAMES: 209113
      NUMBER_OF_FRAMES-eng: 209113
      NUMBER_OF_BYTES : 45268341078
      NUMBER_OF_BYTES-eng: 45268341078
      _STATISTICS_WRITING_APP: no_variable_data
      _STATISTICS_WRITING_APP-eng: no_variable_data
      _STATISTICS_WRITING_DATE_UTC: 1970-01-01 00:00:00
      _STATISTICS_WRITING_DATE_UTC-eng: 1970-01-01 00:00:00
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:1(eng): Audio: dts (DTS-HD MA), 48000 Hz, 5.1(side), s32p (24 bit) (default)
    Metadata:
      BPS             : 4000280
      BPS-eng         : 4000280
      DURATION        : 02:25:21.760000000
      DURATION-eng    : 02:25:21.760000000
      NUMBER_OF_FRAMES: 817665
      NUMBER_OF_FRAMES-eng: 817665
      NUMBER_OF_BYTES : 4361186132
      NUMBER_OF_BYTES-eng: 4361186132
      _STATISTICS_WRITING_APP: no_variable_data
      _STATISTICS_WRITING_APP-eng: no_variable_data
      _STATISTICS_WRITING_DATE_UTC: 1970-01-01 00:00:00
      _STATISTICS_WRITING_DATE_UTC-eng: 1970-01-01 00:00:00
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES

Transcoding:

Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (dts (dca) -> aac (libfdk_aac))
Press [q] to stop, [?] for help
[hls @ 0x635e55617f80] Opening '/mnt/hdds/jellyfin/transcodes/11a7148546b27e57a18d170ced8a0021-1.mp4' for writing
Output #0, hls, to '/mnt/hdds/jellyfin/transcodes/11a7148546b27e57a18d170ced8a0021.m3u8':
  Metadata:
    encoder         : Lavf60.3.100
  Stream #0:0: Video: hevc (Main 10) (hvc1 / 0x31637668), yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 3840x2160 [SAR 1:1 DAR 16:9], q=2-31, 23.98 fps, 23.98 tbr, 24k tbn (default)
  Stream #0:1: Audio: aac, 48000 Hz, 5.1, s16, 640 kb/s (default)
    Metadata:
      encoder         : Lavc60.3.100 libfdk_aac
frame=    0 fps=0.0 q=-1.0 size=       0kB time=-00:00:00.08 bitrate=  -0.0kbits/s speed=N/A    
[hls @ 0x635e55617f80] Opening '/mnt/hdds/jellyfin/transcodes/11a7148546b27e57a18d170ced8a00210.mp4' for writing
[hls @ 0x635e55617f80] Opening '/mnt/hdds/jellyfin/transcodes/11a7148546b27e57a18d170ced8a00211.mp4' for writing

The audio works if I play in my computers web browser with transcoding

testuser7 commented 1 month ago

How many audio tracks do you have in this media file? I had a problem that different audio track was played than selected: https://github.com/jellyfin/jellyfin-tizen/issues/278#issuecomment-2233752213

Lampan-git commented 3 weeks ago

There are three audio tracks:

    Metadata:
      BPS             : 4000280
      BPS-eng         : 4000280
      DURATION        : 02:25:21.760000000
      DURATION-eng    : 02:25:21.760000000
      NUMBER_OF_FRAMES: 817665
      NUMBER_OF_FRAMES-eng: 817665
      NUMBER_OF_BYTES : 4361186132
      NUMBER_OF_BYTES-eng: 4361186132
      _STATISTICS_WRITING_APP: no_variable_data
      _STATISTICS_WRITING_APP-eng: no_variable_data
      _STATISTICS_WRITING_DATE_UTC: 1970-01-01 00:00:00
      _STATISTICS_WRITING_DATE_UTC-eng: 1970-01-01 00:00:00
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:2(eng): Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
    Metadata:
      title           : Commentary
      BPS             : 192000
      BPS-eng         : 192000
      DURATION        : 02:25:21.728000000
      DURATION-eng    : 02:25:21.728000000
      NUMBER_OF_FRAMES: 272554
      NUMBER_OF_FRAMES-eng: 272554
      NUMBER_OF_BYTES : 209321472
      NUMBER_OF_BYTES-eng: 209321472
      _STATISTICS_WRITING_APP: no_variable_data
      _STATISTICS_WRITING_APP-eng: no_variable_data
      _STATISTICS_WRITING_DATE_UTC: 1970-01-01 00:00:00
      _STATISTICS_WRITING_DATE_UTC-eng: 1970-01-01 00:00:00
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:3(eng): Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
    Metadata:
      title           : Commentary
      BPS             : 192000
      BPS-eng         : 192000
      DURATION        : 02:25:21.728000000
      DURATION-eng    : 02:25:21.728000000
      NUMBER_OF_FRAMES: 272554
      NUMBER_OF_FRAMES-eng: 272554
      NUMBER_OF_BYTES : 209321472
      NUMBER_OF_BYTES-eng: 209321472
      _STATISTICS_WRITING_APP: no_variable_data
      _STATISTICS_WRITING_APP-eng: no_variable_data
      _STATISTICS_WRITING_DATE_UTC: 1970-01-01 00:00:00
      _STATISTICS_WRITING_DATE_UTC-eng: 1970-01-01 00:00:00
      _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES

The other two works fine though to play since they are ac3. How did you determine that it did play another track than it should have? From the logs it looks like it plays the correct one?


Side note after looking through the logs again, I didn't include more than one chunk in the transcoding. I realize now after reading more than one chunk that it says [mp4 @ 0x5dcf7f6a00c0] Packet duration: -16 / dts: 1533936 is out of range which looks like it might cause the error. So I'm including some more relevant log if there is something I've missed.

Larger transcoding log chunk:

frame=    0 fps=0.0 q=-1.0 size=       0kB time=-00:00:00.08 bitrate=  -0.0kbits/s speed=N/A    
[hls @ 0x5dcf7ddad380] Opening '/mnt/hdds/jellyfin/transcodes/dd5b797cfbb5383b593661127f0bdd490.mp4' for writing
[hls @ 0x5dcf7ddad380] Opening '/mnt/hdds/jellyfin/transcodes/dd5b797cfbb5383b593661127f0bdd491.mp4' for writing
frame=  546 fps=0.0 q=-1.0 size=N/A time=00:00:00.17 bitrate=N/A speed=0.357x    
[hls @ 0x5dcf7ddad380] Opening '/mnt/hdds/jellyfin/transcodes/dd5b797cfbb5383b593661127f0bdd492.mp4' for writing
[mp4 @ 0x5dcf7f6a00c0] Packet duration: -16 / dts: 1533936 is out of range
frame=  963 fps=962 q=-1.0 size=N/A time=00:00:17.45 bitrate=N/A speed=17.4x    
[hls @ 0x5dcf7ddad380] Opening '/mnt/hdds/jellyfin/transcodes/dd5b797cfbb5383b593661127f0bdd493.mp4' for writing
[hls @ 0x5dcf7ddad380] Opening '/mnt/hdds/jellyfin/transcodes/dd5b797cfbb5383b593661127f0bdd494.mp4' for writing
[mp4 @ 0x5dcf7f6a00c0] Packet duration: -16 / dts: 2134992 is out of range
[hls @ 0x5dcf7ddad380] Opening '/mnt/hdds/jellyfin/transcodes/dd5b797cfbb5383b593661127f0bdd495.mp4' for writing
[mp4 @ 0x5dcf7f6a00c0] Packet duration: -16 / dts: 2615256 is out of range
frame= 1348 fps=898 q=-1.0 size=N/A time=00:00:33.47 bitrate=N/A speed=22.3x    
[hls @ 0x5dcf7ddad380] Opening '/mnt/hdds/jellyfin/transcodes/dd5b797cfbb5383b593661127f0bdd496.mp4' for writing
[mp4 @ 0x5dcf7f6a00c0] Packet duration: -16 / dts: 2722776 is out of range
[hls @ 0x5dcf7ddad380] Opening '/mnt/hdds/jellyfin/transcodes/dd5b797cfbb5383b593661127f0bdd497.mp4' for writing

File listed at the top:

{"Protocol":0,"Id":"98b05e095469015d299f1e934183b554","Path":"/mnt/hdds/movies/TotallyLegitMovie.mkv","EncoderPath":null,"EncoderProtocol":null,"Type":0,"Container":"mkv","Size":50583155056,"Name":"TotallyLegitMovie","IsRemote":false,"ETag":"9c502bed2c68ced28a316b5554a0dbf4","RunTimeTicks":87217600000,"ReadAtNativeFramerate":false,"IgnoreDts":false,"IgnoreIndex":false,"GenPtsInput":false,"SupportsTranscoding":true,"SupportsDirectStream":true,"SupportsDirectPlay":true,"IsInfiniteStream":false,"RequiresOpening":false,"OpenToken":null,"RequiresClosing":false,"LiveStreamId":null,"BufferMs":null,"RequiresLooping":false,"SupportsProbing":true,"VideoType":0,"IsoType":null,"Video3DFormat":null,"MediaStreams":

Video codec as listed at the top:

{"Codec":"hevc","CodecTag":null,"Language":null,"ColorRange":null,"ColorSpace":"bt2020nc","ColorTransfer":"smpte2084","ColorPrimaries":"bt2020","DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":null,"VideoRange":2,"VideoRangeType":2,"VideoDoViTitle":null,"AudioSpatialFormat":0,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"LocalizedHearingImpaired":null,"DisplayTitle":"4K HEVC HDR","NalLengthSize":null,"IsInterlaced":false,"IsAVC":false,"ChannelLayout":null,"BitRate":46397199,"BitDepth":10,"RefFrames":1,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":true,"IsForced":false,"IsHearingImpaired":false,"Height":2160,"Width":3840,"AverageFrameRate":23.976025,"RealFrameRate":23.976025,"Profile":"Main 10","Type":1,"AspectRatio":"16:9","Index":1,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":"yuv420p10le","Level":153,"IsAnamorphic":false}

Audio codec as listed at the top:

{"Codec":"dts","CodecTag":null,"Language":"eng","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/1000","CodecTimeBase":null,"Title":null,"VideoRange":0,"VideoRangeType":0,"VideoDoViTitle":null,"AudioSpatialFormat":0,"LocalizedUndefined":null,"LocalizedDefault":"Default","LocalizedForced":null,"LocalizedExternal":"External","LocalizedHearingImpaired":null,"DisplayTitle":"English - DTS-HD MA - 5.1 - Default","NalLengthSize":null,"IsInterlaced":false,"IsAVC":false,"ChannelLayout":"5.1","BitRate":4000280,"BitDepth":24,"RefFrames":null,"PacketLength":null,"Channels":6,"SampleRate":48000,"IsDefault":true,"IsForced":false,"IsHearingImpaired":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":"DTS-HD MA","Type":0,"AspectRatio":null,"Index":2,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null},

FFmpeg stuff:

/usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -probesize 1G -ss 00:00:55.054 -noaccurate_seek -fflags +genpts  -i file:"/mnt/hdds/movies/TotallyLegitMovie.mkv" -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 libfdk_aac -ac 6 -ab 640000 -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 "5fd296b7c232ab63a5968f0b3669a853-1.mp4" -start_number 6 -hls_segment_filename "/mnt/hdds/jellyfin/transcodes/5fd296b7c232ab63a5968f0b3669a853%d.mp4" -hls_playlist_type vod -hls_list_size 0 -y "/mnt/hdds/jellyfin/transcodes/5fd296b7c232ab63a5968f0b3669a853.m3u8"

ffmpeg version 6.0.1-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 12 (Debian 12.2.0-14)
  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-libxml2 --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
Input #0, matroska,webm, from 'file:/mnt/hdds/movies/TotallyLegitMovie.mkv':
...
Lampan-git commented 3 weeks ago

I've managed to find a workaround to get sound. I use PGS subtitles. Without subtitles or with SRT subtitles I do not get sound. However in other movies using DTS-HD MA, both 5.1 and 7.1, it works without subs or with SRT subs. The issue seems to be this movie.

The logs for the working transcoding:

Stream mapping:
  Stream #0:0 (hevc) -> setparams:default (graph 0)
  Stream #0:15 (pgssub) -> scale:default (graph 0)
  overlay_qsv:default (graph 0) -> Stream #0:0 (hevc_qsv)
  Stream #0:1 -> #0:1 (dts (dca) -> aac (libfdk_aac))
Press [q] to stop, [?] for help
[matroska,webm @ 0x6537de19ddc0] sub2video: using 3840x2160 canvas
libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib/jellyfin-ffmpeg/lib/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
[hls @ 0x6537e144cdc0] Opening '/mnt/hdds/jellyfin/transcodes/15789d65edc93e63ece649781222e5de-1.mp4' for writing
Output #0, hls, to '/mnt/hdds/jellyfin/transcodes/15789d65edc93e63ece649781222e5de.m3u8':
  Metadata:
    encoder         : Lavf60.3.100
  Stream #0:0: Video: hevc (hvc1 / 0x31637668), qsv(tv, bt709, progressive), 3840x2160 [SAR 1:1 DAR 16:9], q=2-31, 46397 kb/s, 23.98 fps, 24k tbn
    Metadata:
      encoder         : Lavc60.3.100 hevc_qsv
    Side data:
      cpb: bitrate max/min/avg: 46397199/0/46397199 buffer size: 92794398 vbv_delay: N/A
  Stream #0:1: Audio: aac, 48000 Hz, 5.1, s16, 640 kb/s (default)
    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=   19 fps=0.0 q=-0.0 size=N/A time=00:00:01.02 bitrate=N/A speed=1.41x    
frame=   47 fps= 38 q=-0.0 size=N/A time=00:00:02.24 bitrate=N/A speed=1.82x    
frame=   68 fps= 39 q=-0.0 size=N/A time=00:00:03.07 bitrate=N/A speed=1.77x    
[hls @ 0x6537e144cdc0] Opening '/mnt/hdds/jellyfin/transcodes/15789d65edc93e63ece649781222e5de0.mp4' for writing
[mp4 @ 0x6537e51071c0] Packet duration: -16 / dts: 138192 is out of range
frame=   82 fps= 36 q=-0.0 size=N/A time=00:00:03.69 bitrate=N/A speed=1.64x    
frame=   99 fps= 36 q=-0.0 size=N/A time=00:00:04.30 bitrate=N/A speed=1.56x    
frame=  116 fps= 35 q=-0.0 size=N/A time=00:00:05.16 bitrate=N/A speed=1.58x    
frame=  133 fps= 35 q=-0.0 size=N/A time=00:00:05.78 bitrate=N/A speed=1.53x    
[hls @ 0x6537e144cdc0] Opening '/mnt/hdds/jellyfin/transcodes/15789d65edc93e63ece649781222e5de1.mp4' for writing

Here I get dts out of range as well, so that doesn't seem to be the issue...