finamp icon indicating copy to clipboard operation
finamp copied to clipboard

Skipping Songs While Transcoding Causes Audio Glitches

Open Epsicle opened this issue 5 months ago • 21 comments

Sorry if this shows as a duplicate, my main public account (midwesternrodent) is apparently flagged since I logged into it with a VPN so I have to wait for github support to make my contributions visible again.

Last Updated 8/30/2024

Look at the edit history of this comment to see the original issue report.

Steps to reproduce

  1. Turn on transcoded streams in finamp
  2. Shuffle your entire library and skip songs like a maniac, waiting just a second for a song to start buffering before skipping to the next one.
  3. In the Jellyfin Admin Console, look at your most recent transcoded logs until you find something like below (Note the "[q] command received. Exiting line" It will occur near the bottom. It's important that you see some files were opened for writing prior to that command being issued, and that you see one file opened for writing after it was issued.
size=       0kB time=-577014:32:22.77 bitrate=  -0.0kbits/s speed=N/A    
[hls @ 0x617991b04380] Opening '/var/lib/jellyfin/transcodes/f569acf3f179213107393728c98a234f0.ts' for writing
[hls @ 0x617991b04380] Opening '/var/lib/jellyfin/transcodes/f569acf3f179213107393728c98a234f1.ts' for writing


[q] command received. Exiting.

[hls @ 0x617991b04380] Opening '/var/lib/jellyfin/transcodes/f569acf3f179213107393728c98a234f2.ts' for writing
size=N/A time=00:00:00.00 bitrate=N/A speed=   0x    
video:0kB audio:253kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
  1. Play that song all the way through on the same device you skipped songs on. Listen for a brief cutout in the song (see example videos below)

Known to affect the following versions of Finamp

Version: 0.9.9, 0.9.8, 0.6.23, Debian Flatpak

Server Information

Jellyfin Version: 10.9.8.0

This is where things get unique. I have Jellyfin running in an unprivileged LXC on a proxmox host, I'm passing an Intel 12th gen i5 iGPU to the LXC via mount entries in the node.conf file, and I'm accessing the files for Jellyfin over an NFS share mounted to my proxmox host and passed through to the LXC in a similar manner. In case it's relevant, I've shared my conf below.

arch: amd64  
cores: 2  
features: nesting=1  
hostname: jamjar  
memory: 4096  
mp0: /mnt/pve/jellyshare,mp=/mnt/truenas/jellyshare  
nameserver: [redacted]  
net0: name=eth0,bridge=vmbr0,gw=[redacted],hwaddr=[redacted],ip=[redacted]  
/24,tag=[redacted],type=veth  
ostype: debian  
rootfs: local-lvm:vm-2010-disk-1,size=32G  
swap: 4096  
unprivileged: 1  
lxc.cgroup2.devices.allow: c 226:0 rwm  
lxc.cgroup2.devices.allow: c 226:128 rwm  
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=fi  
le 0, 0  
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir  
lxc.idmap: u 0 100000 65536  
lxc.idmap: g 0 100000 44  
lxc.idmap: g 44 44 1  
lxc.idmap: g 45 100045 61  
lxc.idmap: g 106 104 1  
lxc.idmap: g 107 100107 65429

Workarounds

  1. Turning off transcoding in finamp solves this issue if the file can be direct-played
  2. Clearing the the transcoding directory in Jellyfin resolves this problem temporarily (though it will reoccur, by default Jellyfin clears this log once daily, it can be increased to run every 15 minutes as a hacky workaround for now)

ScreenRecording on Youtube Another Example

finamp-logs.txt Jellyfin-Server-Logs-Using-Finamp.txt Jellyfin-ServerLogs-Using-Standard-App.txt

Taylor Swift - Question - Before Playing.txt Taylor Swift - Question - Second File After Playing.txt

Epsicle avatar Aug 28 '24 21:08 Epsicle