我们创建了一个简单,紧凑且便宜的互联网广播电台

Linux将成为软件平台,为简单起见,如果出现问题,最好在Internet上使用一些常用信息和大量信息。 互联网广播电台的熨斗可以是任何东西,可以是配备有项目的功能强大的服务器,旧笔记本电脑或上网本,我们希望便宜,而且不需要熨斗的特殊性能。

如果您手边没有任何东西,或者我们需要一台完全静音的服务器,为什么不尝试使用小型计算机呢?

像Raspberry Pi 3一样?

不,我们想要便宜一些,所以我们需要像Orange Pi这样的东西。 我找到了配备1GB DDR3 RAM和8GB EMMC闪存的Orange Pi Pc Plus型号。



UPD:昨天,每个人都以某种方式对这篇文章太重视了,但实际上,实验是为了让支持者着迷,看它是否奏效。 自然地,没有任何“工业”用途的谈论,就像试图用普通的音乐中心为体育场发声。

我们还需要什么?

我想尝试以一种简单的方式配置所有内容,因此仍然需要双绞线连接到路由器和Micro SD存储卡,因为我无法直接在微型计算机上安装操作系统。 我发现一张8 GB的存储卡,这个容量已经足够了。

因此,首先,您需要将操作系统的映像写入存储卡。
对于服务器,我更喜欢使用经过时间考验的Debian(是的,年轻一代最可能喜欢CentOS,但是灰胡子的人会同意我的观点,即Debian仍然非常出色)。

通常,可以在www.orangepi.org/downloadresources上找到许多用于Orange Pi的现成图像,但是我仍然转到www.armbian.com/download并从dl.armbian.com/orangepipcplus(来自我的公司)从armbian 下载 torrent文件。 (Debian_stretch_next.7z)。

我有Orange Pi Pc Plus,您可以有任何其他小型计算机,因此请寻找合适的图像。

下载后,解压缩存档,并以img格式查看图像。 任何想要使用图像填充内容的人,我个人都喜欢Etcher(https://etcher.io)。 我们插入了一个存储卡,如果您连接了多种媒体,请选择存储卡,如果您的台式机或笔记本电脑也装有Linux,请单击“缝制”按钮,输入密码。



带有图像的卡已准备就绪,您可以开始连接所有设备。
我们需要什么来启动和开始设置服务器?
小型计算机本身,通过以太网线和电源进行Internet连接。
就是这样。

不,当然,您可能会感到困惑,连接显示器和键盘并直接配置所有内容,但是我更喜欢笔记本电脑的键盘,因此我将通过SSH远程配置微型计算机。

因此,让我们开始吧,我们将以太网电缆插入带有Armbian映像的Micro SD卡中。
它仅能为小型计算机供电。

但是有了Orange Pi的电源,一切都很难过。 普通微型计算机上有什么? 是的,Micro-USB,但是我该如何给Orange Pi供电? 仅通过引脚连接器(单独购买)提供5V电源。

具有合适连接器的电源适配器,其成本不只是末端带有标准USB的电缆,因此您可以购买。

如果没有带USB的免费电源(无论如何我们都不需要,只需要2安培),那么我们就会在包装盒中翻阅计算机的电线,适配器和板(您有这样的包装盒,对吗?),然后从一些旧的,长时间被儿童平板电脑折断的电线,焊接电缆,我们服务器的电源已准备就绪。

好吧,或者只是从旧的iRiver磁盘mp3播放器中取出充电器(它只有4.7伏和1.2安,但它也可以工作)。

我们正在提供食物,事实上,我们已经准备好转移到一切开始的地方,并创建互联网广播电台。

如果像我一样,您打算使用最少的外围设备,那么我们需要找出迷你计算机获得的IP地址。 找到它的最简单方法是转到您的路由器,然后查看路由器为我们的服务器提供的IP地址(您的路由器可以进行DHCP,对吗?)。

现在,您可以通过SSH登录到我们的服务器。 使用SSH客户端的人都是谁(您没有Windows,但我不知道SSH客户端的用途)。
以我为例,我只是敲入控制台ssh root@192.168.0.88,我同意添加ECDSA密钥,root的默认密码设置为“ 1234”,登录后,我们发现自己在微型计算机的控制台中,这会立即建议更改root密码。



之后,建议创建一个非特权用户帐户,然后创建它。
与以前版本的OS相比,当前版本在设置上有所简化,并且许多事情已经自动配置。

Armbian有一个非常方便的配置工具: armbian-config将命令复制到控制台,看看有什么用处。



我们尚不需要系统设置,但是稍后可能需要使用它们,例如,将配置的系统从Micro SD传输到微型计算机的内置8GB EMMC闪存中。

“网络”部分对我们很有用,但是最好为服务器提供一个静态IP地址。 我们的Internet广播电台甚至可以通过Wi-Fi连接到网络。 每个人都为自己设置反常水平,但是如果您纯粹是为自己构建互联网广播,并且没有计划同时容纳10个以上的听众,那么为什么不让我们的服务器使用Wi-Fi? 在极端情况下,您可以随时插入以太网电缆。

因此,我们确定了连接的类型,现在我们需要配置一个静态IP地址,为此,我们转到IP设置并选择所需的网络接口,然后说我们想要一个静态地址,启动它并保存设置。 无需更改掩码和网关,因为它们是通过DHCP从路由器收到的。



输入新的IP地址并按Enter后,由于设备将立即具有新的IP地址,因此SSH会话将立即冻结。 因此,我们只需要关闭终端窗口,然后使用新IP地址通过SSH进入我们的小型计算机即可。

顺便说一句,由于我们拥有的所有功能都是管理性的,因此为了避免在每个sudo命令之前不停地写,我只是以root用户身份登录到小型计算机。

通过再次运行armbian-config ,我们可以看到还有什么可以配置的吗? 在“个人”部分,我们可以配置时区,语言环境和主机名。 我添加了ru_RU.UTF-8 UTF-8语言环境,它将派上用场。

要应用设置,您需要退出配置实用程序,注销并再次登录,或使用reboot命令重新引导服务器。

我使用重新启动命令来确保已保存设置,并且服务器已成功使用它们启动。

已经完成了服务器的基本配置,为什么不在内部EMMC闪存上安装带有MicroSD OS的操作系统? 当然,如果您的小型计算机带有此内存。

为此,请转至armbian-config系统-安装,选择可用的驱动器,按Enter,获取过去的问候,同意并选择ext4文件系统类型。



现在我们可以坐下来等到操作系统转移到小型计算机的内部存储中。



复制完成后,选择关闭电源。 我们等待几秒钟,直到微型计算机上的LED熄灭,拔出电源,取出MicroSD卡,重新插入电源并打开计算机。

是的,如果您没有内部存储器并且没有将操作系统转移到该存储器,则拔出MicroSD可能不是一个好主意。

通过SSH登录到我们的小型计算机并确保一切正常后,您就可以开始调整广播电台本身了。

首先,我们通过将apt update驱动到服务器控制台来更新软件包信息。

是的,我很喜欢舒适,所以我使用apt install mc命令apt install mc
我喜欢在mc之下进行所有操作,如果需要查看控制台,只需按ctrl + o。

首先,安装恶魔音乐播放器本身: apt install mpd
一堆依赖项将随它一起安装。

让我们继续进行设置。 /etc/mpd.conf文件负责守护程序的配置,请使用nano /etc/mpd.conf其打开。

我的用户名没有hzs特权,我的配置文件如下所示:

 music_directory "/home/hzs/music" playlist_directory "/home/hzs/.mpd/playlists" db_file "/home/hzs/.mpd/tag_cache" log_file "/home/hzs/.mpd.log" pid_file "/home/hzs/.mpd/pid" state_file "/home/hzs/.mpd/state" sticker_file "/var/lib/mpd/sticker.sql" user "hzs" bind_to_address "localhost" restore_paused "yes" metadata_to_use "artist,title" auto_update "yes" audio_output { type "httpd" name "My New Internet Radio Station!!!" encoder "lame" # optional, vorbis or lame port "8000" bind_to_address "0.0.0.0" # optional, IPv4 or IPv6 bitrate "256" # do not define if quality is defined format "44100:16:2" } volume_normalization "yes" filesystem_charset "UTF-8" id3v1_encoding "UTF-8" 

这里的一切都很清楚,没有特别的评论。

要工作,您需要从设置的顶部创建目录结构。 请注意,这些目录的所有者应为非特权用户,所有用户均可从中使用所有特权,在我的情况下为hzs。

从根目录执行以下命令:

chown -cR hzs:hzs /home/hzs/music
chown -cR hzs:hzs /home/hzs/.mpd

现在该上传音乐了,我们在服务器上使用SSH,以便我们可以将喜欢的FTP客户端连接到我们的服务器。

我们知道IP地址,端口22,用户名和密码是您在创建非特权用户(SSH连接类型)时指定的地址。 将测试用的音乐倒入配置中指定的音乐目录中。



现在,播放器以错误的配置启动,因此我们停止守护程序,然后重新启动它:

service mpd stop
service mpd start

为了最简单地控制守护程序,我们将使用apt install mpc命令apt install mpc控制台实用程序。

安装后,我们将对播放器进行一些配置:

mpc random on
mpc repeat on

现在,您需要添加曲目和播放列表,在控制台中它有点像gimmorro,但是什么也做不了。

我们查看可用的文件,这些文件可以添加到播放列表中:

mpc ls

要将文件添加到播放列表,在mpc add命令中,我们必须指定要添加的文件的全名,按掩码选择不起作用:

mpc add "01 Lost in Your Eyes.mp3"

我们查看生成的播放列表:

mpc playlist

现在是时候启动我们的广播电台了:

mpc play



为此,让我们尝试在任何音频播放器中打开广播电台的音频流。 为此,请输入流http://ip:port ,我将其设置为http://192.168.0.90:8000

Audacious间歇性地播放,缓存存在问题,但SMPlayer和VLC并未感到任何问题。







原则上,在此阶段,我们的Internet广播电台已经在工作,您需要将音乐添加到播放列表并转发路由器上的端口,以便我们的Internet广播电台成为Internet广播电台,而不是本地网络中的广播电台。

我有多个域,因此在DNS设置中要做的第一件事是使用testradio和路由器的静态外部IP地址创建“ A”记录。 您不必这样做。

接下来,在我的路由器上,配置端口转发。

由于我已经在大型服务器上拥有自己的广播电台,因此我指定了外部源端口9000和内部本地端口8000,因此从广播http://_ip:9000将通过http://_ip:9000广播。



就是这样,现在我们有了一个“真正的”互联网广播电台。

如果您不想在此停留,请继续。

我们不会播放DJ的声音,但可以在需要时实施,但真正需要的是方便的播放列表管理界面。

有大量的管理控制台,一些可以在这里查看 ,但是我将使用Pitchfork MPD Client

这是一个成熟的网络枪口,是的,我们将用枪射击麻雀,并通过我们的广播电台在一台小型计算机上举起一个成熟的http服务器:

apt install apache2

我们还将需要PHP:

apt-get install php

还需要

apt install php7.0-xml



apt install php-pear

我们在home文件夹中创建目录/ home / hzs / wwwroot / pf,然后将以前通过SSH加载的Pitchfork MPD Client解压缩到其中。



在apache2 Web服务器配置文件中/etc/apache2/sites-available/000-default.conf
nano /etc/apache2/sites-available/000-default.conf
我们修剪所有内容并编写(不要忘记将“ hzs”更改为您的用户名):

 <VirtualHost *:80> ServerName localhost ServerAdmin webmaster@localhost DocumentRoot /home/hzs/wwwroot <Directory /home/hzs/wwwroot/> Options All AllowOverride All DirectoryIndex index.php index.html index.htm Order Allow,Deny Allow from All Require all granted </Directory> </VirtualHost> 

然后我们重启http服务器

service apache2 restart

通过转到您的IP / pf服务器的地址(在我的情况下: http://192.168.0.90/pf : http://192.168.0.90/pf

我们将看到控制面板:



一切都非常简单直观。

接下来,单击右侧的文件夹图标和“文件系统”选项卡。

要更新文件列表,请单击“更新数据库”按钮,然后选择播放列表中我们仍然没有的剩余文件,然后单击“添加”按钮。

我们刷新页面,看到已添加到播放列表的所有文件:



如果需要使用密码隐藏播放器控件,则可以编辑配置文件:

nano /home/hzs/wwwroot/pf/config/config.xml

有一个完全可以理解的配置结构。

因此,我们拥有功能齐全的Internet广播服务器服务器,其尺寸为10 * 7 * 3厘米。 当然,使用过的低功耗服务器不会吸引数百名听众,但是,如果附近有互联网,无论您身在何处,至少它不会让您没有喜欢的音乐。

原则上,您不能继续阅读,但是对于那些特别执着的人,我们继续。
我们有完整的Web服务器,为什么...
好了,您已经了解了。

在我们的Web服务器的根目录中创建目录testradio,在其中创建文件"index.php"

 <!DOCTYPE html> <html xmlns="https://www.w3.org/1999/xhtml" xml:lang="ru-ru" lang="ru-ru" dir="ltr"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>My Test Radio</title> <script src="jquery-3.3.1.min.js"></script> </head> <body> <h1>My Test Radio</h1> <div id="song"> now playing:<br> <div id="title">now playing</div> <br> <div> <span id="play" type="button">Play</span> <span id="pause" type="button">Pause</span> </div> <br> <div> vol:<br> <input id="volume" type="range" min="0" max="10" value="5" /> </div> <span id="duration"></span> <br> <div>256 kbps</div> </div> <script language="JavaScript"> var audio = new Audio('http://testradio.nisel.ru:9000'); var play = document.getElementById('play'); play.addEventListener('click', function() { audio.play(); }, false); var pause = document.getElementById('pause'); pause.addEventListener('click', function() { audio.pause(); }, false); var volume = document.getElementById('volume'); volume.addEventListener('change', function(){ audio.volume = parseFloat(this.value / 10); }, false); audio.addEventListener("timeupdate", function() { var duration = document.getElementById('duration'); var s = parseInt(audio.currentTime % 60); var m = parseInt((audio.currentTime / 60) % 60); var h = parseInt((audio.currentTime / 3600) % 60); if (s < 10) s = '0' + s; if (m < 10) m = '0' + m; if (h < 10) h = '0' + h; duration.innerHTML = h + ':' + m + ':' + s; }, false); </script> <script language="JavaScript"> function show() { $.ajax({ url: "trackname.php", cache: false, success: function(html){ $("#title").html(html); } }); } $(document).ready(function(){ show(); setInterval('show()',5000); }); </script> </body> </html> 

这是为网站创建播放器的最简单示例,它还可以显示当前作品的名称,该名称每5秒用ajax更新一次。

可以使用CSS完成外观品尝。

该代码显示音频流已经到达我的域的DNS中指定的地址。
不要忘记将jquery文件放入目录(在我的情况下为jquery-3.3.1.min.js)。 通常,当然,这里的jquery太多了,没有它就可以发出ajax请求,但是事实证明它太懒了,我使用了现成的代码。

接下来,创建文件"trackname.php"

 <?php echo file_get_contents('http://192.168.0.90/mpc');?> 

同样在Web服务器的根目录中,我们创建“ mpc”目录和其中的文件"index.php"

 <?php echo exec('mpc current');?> 

为什么有人会提出这样的要求,事实是,在我的军事广播电台中,播放器的服务器位于一台服务器上,而网站的网络界面位于物理上不同的Web服务器上。



由于您需要使用播放器询问正在服务器上直接播放的曲目,因此应在其网站上放置mpc Web服务器目录,并且文件"trackname.php"位于站点本身的Web服务器上,并将带有曲目说明的文件从另一台服务器"trackname.php"其IP地址。

播放器本身和广播电台的站点可能相距很远,并且可以通过外部IP地址和DNS阻塞的地址进行通信。 为了使一切正常,您只需要正确转发端口即可。

您可以根据自己的喜好修改项目,好吧,我周六下午很愉快。
所有成功的实验!

UPD2:为期一周的实验得出了合理的结论,我关闭了带有广播电台的小型服务器。

Source: https://habr.com/ru/post/zh-CN426349/


All Articles