jellyfin / jellyfin-web

Web Client for Jellyfin
https://jellyfin.org
GNU General Public License v2.0
2.27k stars 1.2k forks source link

HLS Error (bufferFullError) at 5m29s with some lossless AIFF music tracks on Firefox #2677

Closed ChickenSupreme closed 1 year ago

ChickenSupreme commented 3 years ago

Describe The Bug

When playing back some lossless AIFF music tracks on Firefox the progress bar initially loads up to 5m29s. As playback approaches this point or upon seeking to a point just before it, the progress bar finishes loading the track. However, when playback reaches 5m29s the music stalls and no further seeking, pausing, or resuming will restart the music. The only fix is to skip to a different track.

Media Information

transcode.txt

Screenshots

jellyfin-firefox-redacted

System (please complete the following information):

Additional Context

This has been a problem for awhile (probably months, I'm not sure exactly when I first noticed it).

Jellyfin is running in Docker with the official jellyfin/jellyfin image behind an nginx reverse proxy.

The track is being transcoded by Jellyfin. I've attached the transcode log above.

Only lossless AIFF's are affected (MP3's work properly) but oddly enough some AIFF's work properly as well. If a track has this issue then it will always have it and if a track doesn't then it will always work properly.

It's possible to work around this issue by seeking to a point after 5m29s then seeking to a point before it. Then playback will no longer stall (for this particular playback).

ChickenSupreme commented 3 years ago

I did some more testing today and this is still a problem with Firefox 90.0.2 and Jellyfin 10.7.6. I also tested with Chromium 90.0.4430.85 and had the same issue except the stall point was at 4m20s instead. It seems like the buffer is a different size in different browsers.

I also noticed that it was more intermittent this time around. Some files would work at first then stop working later then start working again, as long as I switched tracks between playbacks.

I think the bufferFullError is a red herring and that the relevant message in the first screenshot is actually the "FFmpeg audio error:-1313558101" which according to a google search is a generic unknown error. There's something wrong with the audio data being streamed to the browser which is causing it to fail to decode it.

I grabbed all the *.ts files out of the transcode directory during a failed playback and was able to play each one in a standalone player back to back. I also ran ffprobe on each of them and didn't get any errors so I don't think there's anything wrong with the transcode itself.

My best guess is that the audio data is sometimes getting corrupted when appending to a previously full buffer but I'm not sure how to troubleshoot further from here.

ChickenSupreme commented 3 years ago

I wanted to try to compare the browser's buffered audio data with the transcoded *.ts files but I don't know how to get the browser to dump the buffer. In the meantime I captured this log from the Chromium media console when the issue occurs:

chromemediaconsole

ChickenSupreme commented 2 years ago

For anyone else who comes across this in the future I gave up and just converted all my AIFF's to FLAC. Turns out Firefox natively supports FLAC so now there's no transcoding and no problem. As an upside I get higher quality audio as well!

thornbill commented 2 years ago

Has anyone tested this on unstable recently? I believe there was a change merged that increases the buffer size.

mihawk90 commented 2 years ago

Getting this with video files (ripped straight from CD with makemkv, direct playback video, AAC transcoded audio) on Chromium (well, Vivaldi). This is on Jellyfin 10.7.7. Haven't tried the 10.8 alpha yet.

Vivaldi | 4.4.2490.3 (Official Build) snapshot (64-bit)
OS | Linux
JavaScript | V8 9.6.180.12
User Agent | Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.51 Safari/537.36

Happened with a couple files already, but this was the first time I saw the error because there's nothing in the Terminal jellyfin is running in. On the server side it looks like the stream is still running. The is the end of the log:

[05:22:46] [INF] [55] Jellyfin.Api.Helpers.TranscodingJobHelper: /usr/bin/ffmpeg -fflags +genpts -f matroska,webm -i file:"/home/tarulia/Videos/TV Shows/House MD/Season 1/S01E22.mkv" -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 copy -start_at_zero -vsync -1 -codec:a:0 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 mpegts -start_number 0 -hls_segment_filename "/home/tarulia/.local/share/jellyfin/transcodes/2736478714312c5199628114b0489e8d%d.ts" -hls_playlist_type vod -hls_list_size 0 -y "/home/tarulia/.local/share/jellyfin/transcodes/2736478714312c5199628114b0489e8d.m3u8"
[05:22:47] [INF] [55] Jellyfin.Plugin.KodiSyncQueue.EntryPoints.UserSyncNotification: Starting User Changes Sync...
[05:22:47] [INF] [55] Jellyfin.Plugin.KodiSyncQueue.EntryPoints.UserSyncNotification: "USERSYNC" User 1fddb11a788c450a9e0e247866ad63d5(Tarulia) posted 2 Updates: fb691fca5b42e0c25b7e24cab2168d12,73551cb8e8974cbceb22c855f311c430
[05:22:47] [INF] [55] Jellyfin.Plugin.KodiSyncQueue.EntryPoints.UserSyncNotification: User Changes Sync Finished Taking 00:00:00.0430824
[05:22:47] [WRN] [114] Jellyfin.Server.Middleware.ResponseTimeMiddleware: Slow HTTP Response from http://localhost:8096/videos/2efe962e-9545-7c8f-b1d8-dde4cae3b40c/hls1/main/0.ts?DeviceId=TW96aWxsYS81LjAgKFgxMTsgTGludXggeDg2XzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvOTIuMC40NTE1Ljc2IFNhZmFyaS81MzcuMzZ8MTYyNzI2NDU5MzkzNw11&MediaSourceId=2efe962e95457c8fb1d8dde4cae3b40c&VideoCodec=h264&AudioCodec=aac,mp3&AudioStreamIndex=1&VideoBitrate=139360000&AudioBitrate=640000&PlaySessionId=a942c75242984b7fbfb572e0a6f1c740&api_key=fa5719ea36d648de803efac7dffaeddf&TranscodingMaxAudioChannels=6&RequireAvc=false&Tag=09d848cbaa4a67b6470619a8edff7023&SegmentContainer=ts&MinSegments=1&BreakOnNonKeyFrames=True&h264-profile=high,main,baseline,constrainedbaseline,high10&h264-level=51&h264-deinterlace=true&TranscodeReasons=VideoCodecNotSupported,AudioCodecNotSupported to 127.0.0.1 in 0:00:00.8003417 with Status Code 200
[05:22:48] [INF] [64] Jellyfin.Plugin.KodiSyncQueue.EntryPoints.UserSyncNotification: Starting User Changes Sync...
[05:22:48] [INF] [64] Jellyfin.Plugin.KodiSyncQueue.EntryPoints.UserSyncNotification: "USERSYNC" User 1fddb11a788c450a9e0e247866ad63d5(Tarulia) posted 2 Updates: 2efe962e95457c8fb1d8dde4cae3b40c,73551cb8e8974cbceb22c855f311c430
[05:22:48] [INF] [64] Jellyfin.Plugin.KodiSyncQueue.EntryPoints.UserSyncNotification: User Changes Sync Finished Taking 00:00:00.0115071
[05:22:49] [INF] [60] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app Jellyfin Web 10.7.6 playing Three Stories. Stopped at 2643093 ms
[05:22:49] [WRN] [60] Jellyfin.Server.Middleware.ResponseTimeMiddleware: Slow HTTP Response from http://localhost:8096/Sessions/Playing/Stopped to 127.0.0.1 in 0:00:02.3699694 with Status Code 204
[05:22:49] [INF] [64] Jellyfin.Plugin.KodiSyncQueue.EntryPoints.UserSyncNotification: Starting User Changes Sync...
[05:22:49] [INF] [64] Jellyfin.Plugin.KodiSyncQueue.EntryPoints.UserSyncNotification: "USERSYNC" User 1fddb11a788c450a9e0e247866ad63d5(Tarulia) posted 2 Updates: fb691fca5b42e0c25b7e24cab2168d12,73551cb8e8974cbceb22c855f311c430
[05:22:49] [INF] [64] Jellyfin.Plugin.KodiSyncQueue.EntryPoints.UserSyncNotification: User Changes Sync Finished Taking 00:00:00.0189054
[05:24:51] [INF] [118] Jellyfin.Api.Helpers.TranscodingJobHelper: FFmpeg exited with code 0

Here's an ffprobe and mediainfo on the file in question:

% ffprobe S01E22.mkv                        
ffprobe version 4.3.3 Copyright (c) 2007-2021 the FFmpeg developers
  built with gcc 10 (GCC)
  configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --docdir=/usr/share/doc/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --optflags='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' --extra-ldflags='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld ' --extra-cflags=' -I/usr/include/rav1e' --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvo-amrwbenc --enable-version3 --enable-bzlib --disable-crystalhd --enable-fontconfig --enable-frei0r --enable-gcrypt --enable-gnutls --enable-ladspa --enable-libaom --enable-libdav1d --enable-libass --enable-libbluray --enable-libcdio --enable-libdrm --enable-libjack --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-liblensfun --enable-libmp3lame --enable-libmysofa --enable-nvenc --enable-openal --enable-opencl --enable-opengl --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librav1e --enable-libsmbclient --enable-version3 --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libvorbis --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-version3 --enable-vapoursynth --enable-libvpx --enable-vulkan --enable-libglslang --enable-libx264 --enable-libx265 --enable-libxvid --enable-libxml2 --enable-libzimg --enable-libzvbi --enable-lv2 --enable-avfilter --enable-avresample --enable-libmodplug --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-lto --enable-libmfx --enable-runtime-cpudetect
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
Input #0, matroska,webm, from 'S01E22.mkv':
  Metadata:
    title           : House - Season 1 Disc 5
    encoder         : libmakemkv v1.16.5 (1.3.10/1.5.2) x86_64-redhat-linux
    creation_time   : 2021-11-21T08:34:32.000000Z
  Duration: 00:44:11.07, start: 0.000000, bitrate: 30644 kb/s
    Chapter #0:0: start 0.000000, end 205.371833
    Metadata:
      title           : Chapter 01
    Chapter #0:1: start 205.371833, end 666.082083
    Metadata:
      title           : Chapter 02
    Chapter #0:2: start 666.082083, end 1197.154292
    Metadata:
      title           : Chapter 03
    Chapter #0:3: start 1197.154292, end 1667.457458
    Metadata:
      title           : Chapter 04
    Chapter #0:4: start 1667.457458, end 2614.028083
    Metadata:
      title           : Chapter 05
    Chapter #0:5: start 2614.028083, end 2651.065083
    Metadata:
      title           : Chapter 06
    Stream #0:0(eng): Video: h264 (High), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc
    Metadata:
      BPS-eng         : 29807705
      DURATION-eng    : 00:44:11.065083333
      NUMBER_OF_FRAMES-eng: 63562
      NUMBER_OF_BYTES-eng: 9877770619
      SOURCE_ID-eng   : 001011
      _STATISTICS_WRITING_APP-eng: MakeMKV v1.16.5 linux(x64-release)
      _STATISTICS_WRITING_DATE_UTC-eng: 2021-11-21 08:34:32
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES SOURCE_ID
    Stream #0:1(eng): Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 768 kb/s (default)
    Metadata:
      title           : Surround 5.1
      BPS-eng         : 768000
      DURATION-eng    : 00:44:11.072000000
      NUMBER_OF_FRAMES-eng: 248538
      NUMBER_OF_BYTES-eng: 254502912
      SOURCE_ID-eng   : 001101
      _STATISTICS_WRITING_APP-eng: MakeMKV v1.16.5 linux(x64-release)
      _STATISTICS_WRITING_DATE_UTC-eng: 2021-11-21 08:34:32
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES SOURCE_ID
    Stream #0:2(eng): Subtitle: hdmv_pgs_subtitle, 1920x1080
    Metadata:
      BPS-eng         : 69335
      DURATION-eng    : 00:41:57.535854166
      NUMBER_OF_FRAMES-eng: 1341
      NUMBER_OF_BYTES-eng: 21819355
      SOURCE_ID-eng   : 001201
      _STATISTICS_WRITING_APP-eng: MakeMKV v1.16.5 linux(x64-release)
      _STATISTICS_WRITING_DATE_UTC-eng: 2021-11-21 08:34:32
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES SOURCE_ID
% mediainfo S01E22.mkv 
General
Unique ID                                : 324368442425620230799512442529945254122 (0xF40716F1DF4008527C3113F31E0C78EA)
Complete name                            : S01E22.mkv
Format                                   : Matroska
Format version                           : Version 2
File size                                : 9.46 GiB
Duration                                 : 44 min 11 s
Overall bit rate mode                    : Variable
Overall bit rate                         : 30.6 Mb/s
Movie name                               : House - Season 1 Disc 5
Encoded date                             : UTC 2021-11-21 08:34:32
Writing application                      : MakeMKV v1.16.5 linux(x64-release)
Writing library                          : libmakemkv v1.16.5 (1.3.10/1.5.2) x86_64-redhat-linux

Video
ID                                       : 1
ID in the original source medium         : 4113 (0x1011)
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : High@L4.1
Format settings                          : CABAC / 4 Ref Frames
Format settings, CABAC                   : Yes
Format settings, Reference frames        : 4 frames
Codec ID                                 : V_MPEG4/ISO/AVC
Duration                                 : 44 min 11 s
Bit rate mode                            : Variable
Bit rate                                 : 29.8 Mb/s
Maximum bit rate                         : 33.0 Mb/s
Width                                    : 1 920 pixels
Height                                   : 1 080 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 23.976 (24000/1001) FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.600
Stream size                              : 9.20 GiB (97%)
Language                                 : English
Default                                  : No
Forced                                   : No
Original source medium                   : Blu-ray

Audio
ID                                       : 2
ID in the original source medium         : 4353 (0x1101)
Format                                   : DTS
Format/Info                              : Digital Theater Systems
Codec ID                                 : A_DTS
Duration                                 : 44 min 11 s
Bit rate mode                            : Constant
Bit rate                                 : 768 kb/s
Channel(s)                               : 6 channels
Channel layout                           : C L R Ls Rs LFE
Sampling rate                            : 48.0 kHz
Frame rate                               : 93.750 FPS (512 SPF)
Bit depth                                : 16 bits
Compression mode                         : Lossy
Stream size                              : 243 MiB (3%)
Title                                    : Surround 5.1
Language                                 : English
Default                                  : Yes
Forced                                   : No
Original source medium                   : Blu-ray

Text
ID                                       : 3
ID in the original source medium         : 4609 (0x1201)
Format                                   : PGS
Codec ID                                 : S_HDMV/PGS
Codec ID/Info                            : Picture based subtitle format used on BDs/HD-DVDs
Duration                                 : 41 min 57 s
Bit rate                                 : 69.3 kb/s
Count of elements                        : 1341
Stream size                              : 20.8 MiB (0%)
Language                                 : English
Default                                  : No
Forced                                   : No
Original source medium                   : Blu-ray

Menu
00:00:00.000                             : en:Chapter 01
00:03:25.371                             : en:Chapter 02
00:11:06.082                             : en:Chapter 03
00:19:57.154                             : en:Chapter 04
00:27:47.457                             : en:Chapter 05
00:43:34.028                             : en:Chapter 06

And Media console gets me this:

ChunkDemuxer
Effective playback rate changed from 0 to 1
Selected FFmpegAudioDecoder for audio decoding, config: codec: aac, profile: unknown, bytes_per_channel: 2, channel_layout: 5.1_BACK, channels: 6, samples_per_second: 48000, sample_format: Signed 16-bit, bytes_per_frame: 12, seek_preroll: 0us, codec_delay: 0, has extra data: false, encryption scheme: Unencrypted, discard decoder delay: false, target_output_channel_layout: STEREO, has aac extra data: true
Failed to initialize DecryptingVideoDecoder
Failed to initialize VpxVideoDecoder
Failed to initialize Dav1dVideoDecoder
Selected FFmpegVideoDecoder for video decoding, config: codec: h264, profile: h264 high, level: not available, alpha_mode: is_opaque, coded size: [1920,1080], visible rect: [0,0,1920,1080], natural size: [1920,1080], has extra data: false, encryption scheme: Unencrypted, rotation: 0°, flipped: 0, color space: {primaries:BT709, transfer:BT709, matrix:BT709, range:LIMITED}
ISO-BMFF container metadata for video frame indicates that the frame is a keyframe, but the video frame contents indicate the opposite.
ISO-BMFF container metadata for video frame indicates that the frame is a keyframe, but the video frame contents indicate the opposite.
ISO-BMFF container metadata for video frame indicates that the frame is a keyframe, but the video frame contents indicate the opposite.
ISO-BMFF container metadata for video frame indicates that the frame is a keyframe, but the video frame contents indicate the opposite.
ISO-BMFF container metadata for video frame indicates that the frame is a keyframe, but the video frame contents indicate the opposite.
ISO-BMFF container metadata for video frame indicates that the frame is a keyframe, but the video frame contents indicate the opposite.
ISO-BMFF container metadata for video frame indicates that the frame is a keyframe, but the video frame contents indicate the opposite.
ISO-BMFF container metadata for video frame indicates that the frame is a keyframe, but the video frame contents indicate the opposite.
ISO-BMFF container metadata for video frame indicates that the frame is a keyframe, but the video frame contents indicate the opposite.
(Log limit reached. Further similar entries may be suppressed): ISO-BMFF container metadata for video frame indicates that the frame is a keyframe, but the video frame contents indicate the opposite.
Selected video track: []
Selected video track: [18]
Selected FFmpegAudioDecoder for audio decoding, config: codec: aac, profile: unknown, bytes_per_channel: 2, channel_layout: 5.1_BACK, channels: 6, samples_per_second: 48000, sample_format: Signed 16-bit, bytes_per_frame: 12, seek_preroll: 0us, codec_delay: 0, has extra data: false, encryption scheme: Unencrypted, discard decoder delay: false, target_output_channel_layout: STEREO, has aac extra data: true
Failed to initialize DecryptingVideoDecoder
Failed to initialize VpxVideoDecoder
Failed to initialize Dav1dVideoDecoder
Selected FFmpegVideoDecoder for video decoding, config: codec: h264, profile: h264 high, level: not available, alpha_mode: is_opaque, coded size: [1920,1080], visible rect: [0,0,1920,1080], natural size: [1920,1080], has extra data: false, encryption scheme: Unencrypted, rotation: 0°, flipped: 0, color space: {primaries:BT709, transfer:BT709, matrix:BT709, range:LIMITED}

Should also be noted this was reported before:

2223

And thought to be fixed:

2224

jellyfin-bot commented 2 years ago

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.

mihawk90 commented 2 years ago

There was no new release, so still valid

mihawk90 commented 2 years ago

Just tested on 10.8.0~beta2, and it's still happening.

Although there seems to be an improvement. When the video stops and the error shows up, I can just click play again. It will restart the stream and while it drops out every couple seconds, it is functioning..(-ish). Refreshing the page sends me back to home and I can just resume from where it stopped and it's playing fine.

jellyfin-bot commented 2 years ago

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.