Streaming media: Difference between revisions

From Wildsong
Jump to navigationJump to search
Brian Wilson (talk | contribs)
mNo edit summary
Brian Wilson (talk | contribs)
 
(17 intermediate revisions by the same user not shown)
Line 1: Line 1:
__NOTOC__
I started this page when I was trying to figure out how to stream music and video around my house.
I started this page when I was trying to figure out how to stream music and video around my house.
I updated it today (April 2015) to tell you what I have come up with so far.
I updated it today (April 2015) to tell you what I have come up with so far. I updated it again when I started using [[Docker]].


[[Image:red_squeezebox.jpg|left|Logitech Squeezebox Radio]]
[[Image:red_squeezebox.jpg|left|Logitech Squeezebox Radio]]
Line 6: Line 8:
It works like a really nice clock radio, but it never gets static. :-) It can connect via wired network but we have it on WiFi.
It works like a really nice clock radio, but it never gets static. :-) It can connect via wired network but we have it on WiFi.


We also have a [[Grandstream GXV3240]] voip phone that I can use as a media playback device.
 
The phone is next to my bed right now. It's on WiFi too.
<br clear=all>
<br clear=all>
== Where is the music? ==
Currently I keep the music in a file tree rooted at /home/music which is a space on a 750GB SSD.
I keep a backup of it on the archive drive at /green/music and another copy in the cloud.


== Server ==
== Server ==
Line 19: Line 25:
=== Docker ===
=== Docker ===


This is all that migration took -  
This is all that migration took - well.. I did have to set uid 102 to be squeezeboxserver
well.. I did have to set uid 102 to be squeezeboxserver
and I had to move the playlists folder into /var/lib/squeezeboxserver
and I had to move the playlists folder into /var/lib/squeezeboxserver


  docker run -d --restart=always --name=squeezebox \
I am using a docker compose set up now, and I use a proxy so the server is visible at https://squeezebox.wildsong.biz/
          -p 9000:9000 \
Refer to source/docker/docker-squeezebox/
          -p 3483:3483 \
 
          -p 3483:3483/udp \
docker pull larsks/logitech-media-server
          -v /etc/localtime:/etc/localtime:ro \
docker volume create squeezebox_settings
          -v /var/lib/squeezeboxserver:/srv/squeezebox \
  docker run -d --name=squeezebox --restart=unless-stopped \
          -v /green/music:/srv/music \
  -p 9000:9000 -p 3483:3483 -p 3483:3483/udp \
          larsks/logitech-media-server
  -v /etc/localtime:/etc/localtime:ro -v squeezebox_settings:/srv/squeezebox -v /home/music:/srv/music \
  larsks/logitech-media-server
 
Restarts: See the [[Docker]] page section on "Docker as a service".
I used to use systemctl with docker but gave up on that, too complicated.
Now I have it set to a restart policy of "always" instead.


=== Debian (the old way) ===
'''There was a problem on reboots, dnsmasq did not listen to requests from Docker clients until it was restarted.''' I fixed this by added After=docker.service to /lib/systemd/system/dnsmasq.service


Today (Debian 8) I am trying out 7.9
== Players ==
http://downloads.slimdevices.com/nightly/7.9/sc/cc50c1b/logitechmediaserver_7.9.0~1450040158_all.deb


I keep my music in /green/music and my playlists in /green/squeezebox_playlists.
=== Custom hardware ===


2017-04 I've been running 7.9 for about a year now. Debian is at 8.7 now I think.
==== ESP32 ====
Today I brought up the page and it looked very different! For no apparent reason its settings changed.
I had to go into the System Settings page and select the "Default" interface (it was set to "Classic")
and I had to re-enable Favorites. All back to normal now! WHEW that was scary.


BTW I poked around and found references to MySQL but that I suspect is dead code.
I am working on an ESP32 based clock radio, it will probably use an  [https://adafruit.com/product/3006 Adafruit MAX98357A i2s amp] breakout board.
Look in /usr/share/squeezeboxserver. Additional files are in /usr/sbin/ and /var/lib/squeezeboxserver.
If you prefer Youtube, https://www.youtube.com/watch?v=At8PDQ3g7FQ


== Players ==
Here is a quick example of streaming to it: https://circuitdigest.com/microcontroller-projects/esp32-based-internet-radio-using-max98357a-i2s-amplifier-board
 
Squeezebox code https://github.com/bgiraut/SqueezeEsp32
 
Power: 5V/1.5A
ESP32
Adafruit MAX98357A breakout board
 
display??
 
 
==== Raspberry Pi ====
 
I have two [[Pi Zero W]] set ups that can stream music in the kitchen and living room, using a HiFiBerry Amp2 and running PiCorePlayer.


We have 2 [[Creative Zen]] players with copies of our [[Music collection]].
I have an Adafruit DAC pi zero bonnet too, not currently in use.


=== Computers ===
=== Computers ===


I use VLC on my Linux and Mac boxes for playback.
I use VLC on my Linux and Mac boxes for playback.
On Bellman I installed squeezelite so that I could stream music via the Logitech Media Server.
I run squeezelite-win.exe on [[Murre]].
=== MP3 players ===
We have 2 [[Creative Zen]] players with copies of our [[Music collection]]. Sometimes we even still use them. :-)


=== Android ===
=== Android ===


I can install Squeezeplayer (Steven Hansel Solutions, $4.99) from the Android store onto the Grandstream phone. Then it becomes a media player.
I can install Squeezeplayer (Steven Hansel Solutions, $4.99) from the Android store onto the Grandstream phone. Then it becomes a media player.
Note it's now ''just'' a player, with Squeezeplayer there are no controls. However to start music playing I can go to the web page generated by squeezeboxserver and the phone(s) running Squeezeplayer appears now in the list of players. I think this is pretty neat.
Note it's ''just'' a player, with Squeezeplayer there are no controls. However to start music playing I can go to the web page generated by squeezeboxserver and the phone(s) running Squeezeplayer appears now in the list of players. I think this is pretty neat.


== Controllers ==
== Controllers ==
Line 66: Line 93:
Squeezebox Server has a web page that lets you control any player on your network. From my network I use this link: http://bellman:9000/ (You can't see it from the Internet, sorry.)
Squeezebox Server has a web page that lets you control any player on your network. From my network I use this link: http://bellman:9000/ (You can't see it from the Internet, sorry.)
This means you can use the browser itself to play media on the computer, or you can tell it to
This means you can use the browser itself to play media on the computer, or you can tell it to
send media to either the Squeezebox Radio or the Android phone.
send media to either the Squeezebox Radio or the player on the Android phone.
 
Next up I need to get one of my Raspberry Pi's running as a player. Not today. Other stuff to do.


=== for Android ===
=== for Android ===


On my Android smartphone (a Galxy Nexus), I installed the free Logitech Squeezebox Controller.
On my Android smartphone (a Galaxy Nexus), I installed the free Logitech Squeezebox Controller.


Sure enough, it works. The display in the Logitech app is very close to what I get on the Logitech device itself. So now I can use my smartphone as a controller for both the GXV3240 and the Logitech. Handy.
Sure enough, it works. The display in the Logitech app is very close to what I get on the Logitech device itself. So now I can use my smartphone as a controller for both the GXV3240 and the Logitech. Handy.

Latest revision as of 23:54, 8 May 2024


I started this page when I was trying to figure out how to stream music and video around my house. I updated it today (April 2015) to tell you what I have come up with so far. I updated it again when I started using Docker.

Logitech Squeezebox Radio
Logitech Squeezebox Radio

We use a Logitech Squeezebox Radio media streamer. We love it. Too bad they discontinued it. It works like a really nice clock radio, but it never gets static. :-) It can connect via wired network but we have it on WiFi.



Where is the music?

Currently I keep the music in a file tree rooted at /home/music which is a space on a 750GB SSD. I keep a backup of it on the archive drive at /green/music and another copy in the cloud.

Server

When we got the Squeezebox, I installed a copy of the squeezeboxserver package on my Debian server Bellman. This drove the rest of the project, because the server works so well and there are compatible clients for computers and phones! Cool. Bellman has all our music stored on it. I can now play music that is on the server or stream radio stations from the Internet, and I can use the Squeezebox, the phone, computers and Android devices as players.

Squeezeboxserver is written in perl.

Docker

This is all that migration took - well.. I did have to set uid 102 to be squeezeboxserver and I had to move the playlists folder into /var/lib/squeezeboxserver

I am using a docker compose set up now, and I use a proxy so the server is visible at https://squeezebox.wildsong.biz/ Refer to source/docker/docker-squeezebox/

docker pull larsks/logitech-media-server
docker volume create squeezebox_settings
docker run -d --name=squeezebox --restart=unless-stopped \
  -p 9000:9000 -p 3483:3483 -p 3483:3483/udp \
  -v /etc/localtime:/etc/localtime:ro -v squeezebox_settings:/srv/squeezebox -v /home/music:/srv/music \
  larsks/logitech-media-server

Restarts: See the Docker page section on "Docker as a service". I used to use systemctl with docker but gave up on that, too complicated. Now I have it set to a restart policy of "always" instead.

There was a problem on reboots, dnsmasq did not listen to requests from Docker clients until it was restarted. I fixed this by added After=docker.service to /lib/systemd/system/dnsmasq.service

Players

Custom hardware

ESP32

I am working on an ESP32 based clock radio, it will probably use an Adafruit MAX98357A i2s amp breakout board. If you prefer Youtube, https://www.youtube.com/watch?v=At8PDQ3g7FQ

Here is a quick example of streaming to it: https://circuitdigest.com/microcontroller-projects/esp32-based-internet-radio-using-max98357a-i2s-amplifier-board

Squeezebox code https://github.com/bgiraut/SqueezeEsp32

Power: 5V/1.5A ESP32 Adafruit MAX98357A breakout board

display??


Raspberry Pi

I have two Pi Zero W set ups that can stream music in the kitchen and living room, using a HiFiBerry Amp2 and running PiCorePlayer.

I have an Adafruit DAC pi zero bonnet too, not currently in use.

Computers

I use VLC on my Linux and Mac boxes for playback.

On Bellman I installed squeezelite so that I could stream music via the Logitech Media Server.

I run squeezelite-win.exe on Murre.

MP3 players

We have 2 Creative Zen players with copies of our Music collection. Sometimes we even still use them. :-)

Android

I can install Squeezeplayer (Steven Hansel Solutions, $4.99) from the Android store onto the Grandstream phone. Then it becomes a media player. Note it's just a player, with Squeezeplayer there are no controls. However to start music playing I can go to the web page generated by squeezeboxserver and the phone(s) running Squeezeplayer appears now in the list of players. I think this is pretty neat.

Controllers

via web page

Squeezebox Server has a web page that lets you control any player on your network. From my network I use this link: http://bellman:9000/ (You can't see it from the Internet, sorry.) This means you can use the browser itself to play media on the computer, or you can tell it to send media to either the Squeezebox Radio or the player on the Android phone.

for Android

On my Android smartphone (a Galaxy Nexus), I installed the free Logitech Squeezebox Controller.

Sure enough, it works. The display in the Logitech app is very close to what I get on the Logitech device itself. So now I can use my smartphone as a controller for both the GXV3240 and the Logitech. Handy.

I tried to install it on the Nexus 7 but it won't install. I have read that Orange Squeeze is a good controller so I gave it a try. I don't like it, it feels clumsy. It might be okay if I had a small music collection or only one playback device. I uninstalled it and got my $4.99 back.

I am now trying the ad-supported "Squeeze Controller" and the free "Squeezer" and both of them seem to have fewer shortcomings. Right now it looks like "Squeeze Controller" is the winner.

Other notes

The rest of this page contains notes when I was trying to figure out how to stream media to a defunct player. Can't even remember its name anymore. I ended up getting rid of it when we moved back to California.

Source clients

Source clients read music from someplace and send it to the streamer. "Someplace" can be an Internet radio station, a live audio feed, or music files.

ices2 from Ubuntu repository. Supports only OGG format (so it's useless).

icegenerator - (built from source) streams to icecast, can handle mp3

muse

Streamer

The streamer waits for connections from a client and when it gets one, sends audio from the source to the client.

Cidero does streaming of Internet radio stations

gmediaserver GNU Project 2007 "this project is looking for a new maintainer" oh oh but it IS in the Ubuntu repository

icecast2 from Ubuntu repository -- easy to install and set up.

mediatomb

slimp3 from Ubuntu repository -- mp3 only. Supports icecast format so any icecast source client that can do mp3 should also work with slimp3

slimserver you can add the slimserver repository and then install the Debian version of slimserver which supports many more formats.

Slimserver is designed to do what I want for the Audrey goes -- you browse your music collection and select what you want it to play.

Logitech Squeezebox Server The newest version of Slimserver. Does not play well with Ubuntu! It is too old.

ushare

Video

Most of these can also stream audio formats.

Darwin

Geekast is an alternative GNOME interface for peercast.

JW FLV Player is an easy and flexible way to add video and audio to your website. It supports playback of any format the Adobe Flash Player can handle (FLV, MP4, MP3, AAC, JPG, PNG and GIF). It also supports RTMP, HTTP and live streaming, various playlists and captioning formats,

mpeg4ip-server End-to-end system to explore streaming multimedia; not in active development, last release was 9/28/2007. The mpeg4ip player supports the following :

File formats: avi, mp4, limited .mov, .mpg (transport and program streams), .wav, raw aac, raw mp3, raw mp4v, raw H.264

Video codecs: mpeg-4 (xvid, xvid-1.0, ISO reference), mpeg1/2 (libmpeg3, mpeg2dec), H.261, YUV (i420 raw) Through ffmpeg: h.263, Sorenson, some MJPEG, simple H.264

Audio Codecs: aac, mp3, celp, ac3 (with separate download), raw PCM Through ffmpeg: AMR NB, AMR WB, G.711 alaw and ulaw

Streaming capability: RTSP, SDP, RTP (rfc 1890 for raw audio, 2250 for mpeg1/2 audio and video, 3016 for mpeg4 video, 3119 for mp3, 3640 for aac/celp audio, 3267 for AMR octet-aligned only), mpeg2 transport streams (mpeg2 video, mp3 and ac3 audio), both multicast and streaming.

peercast - P2P audio and video streaming servent PeerCast is a P2P streaming server. It can stream music and video from a broad variety of formats.

vlc is the VideoLAN project's media player. It plays MPEG, MPEG2, MPEG4, DivX, MOV, WMV, QuickTime, mp3, Ogg/Vorbis files, DVDs, VCDs, and multimedia streams from various network sources.

VLC can also be used as a streaming server that duplicates the stream it reads and multicasts them through the network to other clients, or serves them through HTTP.

Utilities

mpeg4ip-utils - end-to-end system to explore streaming multimedia This package contains various utilities :

  • mp4info - display information about tracks in mp4 file
  • mp4dump - dumps contents from mp4 files
  • mp4trackdump - dumps track information
  • mp4tags - sets iTunes tag information
  • mp4art - extract iTunes cover art
  • mp4videoinfo - dump information about video tracks in mp4 files