Centos 6: audio streams crackling during playback

For quite some time I was trying to find out why I wasn’t able to listen audio streams in vlc, rhythmbox or any other player while i was able to listen those same streams on owner’s web page by using their flash based stream player. After listening for few minutes playback would completely stop with error “Unable to play stream” or something similar.

Finally, I’ve found out why. This particular behavior was caused by faad2 decoder available on RpmForge repo. RpmForge repo faad2 is compiled with drm (–with-drm) that is causing these problems. I am providing few easy steps that will help you recompile faad2, create rpms and reinstall it in order to get rid of this annoying problem.

1. Check your current faad2 version

[root@thinker ~]# rpm -qa | grep faad
faad2-devel-2.7-1.el6.rf.x86_64
faad2-2.7-1.el6.rf.x86_64

2. Download src.rpm

[root@thinker ~]# cd /tmp
[root@thinker tmp]# wget http://pkgs.repoforge.org/faad2/faad2-2.7-1.rf.src.rpm
--2013-07-15 09:43:46--  http://pkgs.repoforge.org/faad2/faad2-2.7-1.rf.src.rpm
Resolving pkgs.repoforge.org... 78.46.17.228
Connecting to pkgs.repoforge.org|78.46.17.228|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://rpmforge.sw.be/source/faad2-2.7-1.rf.src.rpm [following]
--2013-07-15 09:43:46--  http://rpmforge.sw.be/source/faad2-2.7-1.rf.src.rpm
Resolving rpmforge.sw.be... 78.46.17.228
Connecting to rpmforge.sw.be|78.46.17.228|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://tree.repoforge.org/source/faad2-2.7-1.rf.src.rpm [following]
--2013-07-15 09:43:46--  http://tree.repoforge.org/source/faad2-2.7-1.rf.src.rpm
Resolving tree.repoforge.org... 78.46.17.228
Connecting to tree.repoforge.org|78.46.17.228|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://apt.sw.be/source/faad2-2.7-1.rf.src.rpm [following]
--2013-07-15 09:43:47--  http://apt.sw.be/source/faad2-2.7-1.rf.src.rpm
Resolving apt.sw.be... 193.1.193.67
Connecting to apt.sw.be|193.1.193.67|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1143956 (1.1M) [application/x-redhat-package-manager]
Saving to: “faad2-2.7-1.rf.src.rpm”

100%[================================================================================================>] 1,143,956   1.30M/s   in 0.8s    

2013-07-15 09:43:48 (1.30 MB/s) - “faad2-2.7-1.rf.src.rpm” saved [1143956/1143956]

3. Install src.rpm

[root@thinker tmp]# rpm -Uvh faad2-2.7-1.rf.src.rpm 
   1:faad2                  warning: user dag does not exist - using root
warning: group dag does not exist - using root
warning: user dag does not exist - using root
warning: group dag does not exist - using root
warning: user dag does not exist - using root
warning: group dag does not exist - using root
########################################### [100%]
warning: user dag does not exist - using root
warning: group dag does not exist - using root

After you install src.rpm you will find source and spec files inside rpmbuild directory. So,

4. Modify fadd2 spec file

[root@thinker tmp]# cd /root/rpmbuild/SPECS
[root@thinker SPECS]# ls -la
total 16
drwxr-xr-x. 2 root root 4096 Jul 15 09:44 .
drwxr-xr-x. 4 root root 4096 Jul 15 09:44 ..
-rw-rw-r--. 1 root root 5569 Nov 12  2010 faad2.spec
[root@thinker SPECS]# vi faad2.spec 

Find configure line and line that says –with-drm. Change it to –without-drm. Save and exit.

5. Create new RPM’s

[root@thinker SPECS]# rpmbuild -ba faad2.spec 
error: Failed build dependencies:
	libsysfs-devel is needed by faad2-2.7-1.el6.x86_64

As you can see you will probably have some missing dependencies. Install missing dependencies until you are able to start rpmbuild procedure. For example:

[root@thinker SPECS]# yum install libsysfs-devel

After rpmbuild finishes it will tell you where are new RPM’s:

Wrote: /root/rpmbuild/RPMS/x86_64/faad2-2.7-1.el6.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/faad2-devel-2.7-1.el6.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/faad2-debuginfo-2.7-1.el6.x86_64.rpm

6. Remove current faad2 RPM’s and install new ones

[root@thinker SPECS]# rpm -e --nodeps faad2-devel-2.7-1.el6.rf.x86_64 faad2-2.7-1.el6.rf.x86_64
[root@thinker SPECS]# rpm -Uvh /root/rpmbuild/RPMS/x86_64/faad2-2.7-1.el6.x86_64.rpm
Preparing...                ########################################### [100%]
   1:faad2                  ########################################### [100%]
[root@thinker SPECS]# rpm -Uvh /root/rpmbuild/RPMS/x86_64/faad2-devel-2.7-1.el6.x86_64.rpm
Preparing...                ########################################### [100%]
   1:faad2-devel            ########################################### [100%]
[root@thinker SPECS]# rpm -qa | grep faad
faad2-2.7-1.el6.x86_64
faad2-devel-2.7-1.el6.x86_64

That’s it! You can start listening your favorite radio stations now. Enjoy!

Leave a Reply