Git Product home page Git Product logo

Comments (9)

ralph-irving avatar ralph-irving commented on August 16, 2024

That error is usually caused by a corrupt aac stream or bug in the encoder that was used to create it. This is the first time I've received a report of this.
Are you using one of my builds? If so, which exact one?

from squeezelite.

richardhenwood avatar richardhenwood commented on August 16, 2024

Yes, I thought is was something to do with aac, so I've started trying to build squeezelite with my own build of the aac so I can debug further (I would not be surprised if the stream provider injected a non-standard bit or two).

I have observed this problem with these versions:
an old statically linked version that I find handy: Squeezelite v1.8-589, Copyright 2012-2015 Adrian Smith.

the version included in the latest pycoreplayer: Squeezelite v1.8.7-1052, Copyright 2012-2015 Adrian Smith, 2015-2017 Ralph Irving.

I will chip away at building my own aac for debug.

from squeezelite.

ralph-irving avatar ralph-irving commented on August 16, 2024

The current pcp squeezelite uses the original unpatched 2.7 source.
I've rebuilt the libfaad and squeezelite tcz packages for pcp 3.5 using my patched faad2 repository for you to try.
Login to pcp and run these commands to update.
cd /mnt/mmcblk0p2/tce/optional
wget -O newaac.tar.gz https://www.dropbox.com/s/chjshtesudfwu59/newaac.tar.gz?dl=1
tar -xvzf newaac.tar.gz
rm newaac.tar.gz
pcp bu
pcp rb

from squeezelite.

richardhenwood avatar richardhenwood commented on August 16, 2024

Ah! Many thanks - I will try and give this a trial when I get home this evening - or tomorrow at the latest.

from squeezelite.

richardhenwood avatar richardhenwood commented on August 16, 2024

I installed the build you made, by following your instructions. I did not do a reboot afterwards, but I still had the same experience with the mix stopping ~20 minutes in.

My investigation so far points to the stream triggering 'return 15; /* should not be possible */', line 15 here:
https://github.com/gypified/libfaad/blob/master/libfaad/pulse.c
If this is accurate, this is certainly consistent with your thought this is a bug in the steam.

An example of a stream that triggers this bug is: http://stream3.mixcloud.com/secure/c/m4a/64/9/3/1/0/ab7e-a4db-48db-8483-2540cbfa1bd2.m4a?sig=77r6Dh4MPO4sbD-KUUFveQ
NOTE: This stream stopped playing after ~14 minutes on my squeeze player today, but playing it in my browser didn't stop. Of course, this could be something that the mixcloud plugin is doing as well.... I'll continue to investigate.

from squeezelite.

ralph-irving avatar ralph-irving commented on August 16, 2024

If you didn't reboot then the old squeezelite would still be using the old libfaad. picoreplayer only loads the updated tcz files when you reboot.

If you're using the updated builds you should have these details for each file.
$ ls -l /tmp/tcloop/pcp-libfaad2/usr/local/lib/libfaad.so.2.0.0
-rwxr-xr-x 1 root root 412964 Apr 19 13:56 /tmp/tcloop/pcp-libfaad2/usr/local/lib/libfaad.so.2.0.0
ls -l /tmp/tcloop/pcp-squeezelite/usr/local/bin/squeezelite
-rwxr-xr-x 1 root root 142072 Apr 19 12:16 /tmp/tcloop/pcp-squeezelite/usr/local/bin/squeezelite

if you are going to build libfaad to investigate further, please use the faad2 repository from my github. It has security and bug fixes not in the original faad2-2.7 source.

Thanks for the test stream, I'm downloading it in case the url becomes stale.

from squeezelite.

ralph-irving avatar ralph-irving commented on August 16, 2024

The m4a file I downloaded from the URL plays the entire 1.5hr mix on a stock pcp 3.5 without interruption. So it does appear to be related to the plugin and not libfaad.
From ffmpeg -i
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'mixcloud.m4a':
Metadata:
major_brand : M4A
minor_version : 1
compatible_brands: M4A mp42isom
creation_time : 2017-10-19T11:14:01.000000Z
iTunSMPB : 00000000 00000920 00000221 00000000073250BF 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
encoder : Nero AAC codec / 1.5.4.0
Duration: 01:31:15.78, start: 0.052971, bitrate: 69 kb/s
Chapter #0:0: start 0.105941, end 5475.829115
Metadata:
title :
Stream #0:0(und): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 69 kb/s (default)
Metadata:
creation_time : 2017-10-19T11:14:01.000000Z
handler_name : Sound Media Handler

faad decodes the file without error.

HE AAC 5473.103 secs, 2 ch, 44100 Hz

cdec: ndaudio 1.5.4.0 / -q 0.25
iTunSMPB: 00000000 00000920 00000221 00000000073250BF 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
tool: Nero AAC codec / 1.5.4.0

Decoding mixcloud.m4a took: 62.21 sec. 87.98x real-time.

from squeezelite.

richardhenwood avatar richardhenwood commented on August 16, 2024

I have been considering the issue as it still exists for me. Watching a download with wget, it looks like Mixcloud provides the first ~20minutes or so as fast as possible, and then trickles in the remainder of the track after that. This coincides with the problem I have where squeezelite stops playing after a duration of about 20minutes (recorded above).

Can you think of a quick way that I could put a proxy in front of squeezelite on my RPi to see if that resolves my issue?

from squeezelite.

ralph-irving avatar ralph-irving commented on August 16, 2024

Have you tried changing the streaming method to proxied in the player settings of LMS?

from squeezelite.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.