当前位置: 首页 > news >正文

自托管互联网广播电台Airstation

在这里插入图片描述

简介

什么是 Airstation ?

Airstation 是一个自托管的 Web 应用程序,用于通过 Internet 流式传输音乐。它具有一个简单的界面,用于上传曲目和管理播放队列,以及一个供听众使用的简约播放器。在后台,它使用 HLS 通过 HTTP 流式传输音乐,将数据存储在 SQLite 中,并利用 FFmpeg 进行音频处理 — 所有这些都打包在一个紧凑的 Docker 容器中,以便于部署。

主要特点

  1. 自托管:用户可以自行部署,完全控制音频流媒体。
  2. 简洁界面:易于使用的界面,方便上传和管理音乐。
  3. HTTP 流媒体:通过 HLSHTTP Live Streaming)技术进行音乐流媒体传输。
  4. 数据存储:使用 SQLite 存储数据,确保轻量级和高效。
  5. 音频处理:利用 FFmpeg 进行音频处理,提供高质量的音频流。

应用场景

  • 个人在线电台:用户可以创建自己的在线电台,分享音乐。
  • 活动直播:用于活动或聚会中的音乐播放。
  • 社区广播:帮助社区组织共享音乐或播客内容。

Airstation 为音乐爱好者提供了一个灵活且易于使用的平台,满足个人和小型组织的音乐流媒体需求。

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 airstation ,选择第一个 cheatsnake/airstation,版本选择 latest

本文写作时, latest 版本对应为 1.0.0-beta.4

docker 文件夹中,创建一个新文件夹 airstation,并在其中建两个子文件夹 datastatic

文件夹装载路径说明
docker/airstation/data/app/storage存放数据库
docker/airstation/static/app/static存放上传的音乐文件和 HLS 切片文件等

端口

本地端口不冲突就行,不确定的话可以用命令查一下

# 查看端口占用
netstat -tunlp | grep 端口号
本地端口容器端口
73317331

环境

可变
AIRSTATION_SECRET_KEY用来登录电台控制面板的密钥
AIRSTATION_JWT_SIGN用于签名 JWT 会话的密钥

使用长度至少为 10 个字符的随机字符串生成器来为这些变量生成值!可以使用 openssl rand -base64 32 或者 Bitwarden来生成

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

# 新建文件夹 airstation 和 子目录
mkdir -p /volume1/docker/airstation/{data,static}# 进入 airstation 目录
cd /volume1/docker/airstation# 运行容器
docker run -d \--restart unless-stopped \--name airstation \-p 7331:7331  \-v $(pwd)/data:/app/storage \-v $(pwd)/static:/app/static \-e AIRSTATION_SECRET_KEY=FSbLEAEyfNyYNLOWuijtTFK1J/t022uyHkjIp0s4laM= \-e AIRSTATION_JWT_SIGN=CG/Lnxl/TRx9KDzC/XI0IU6IaHAplJgn0YQvrLvEgL4= \cheatsnake/airstation:latest

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

services:airstation:image: cheatsnake/airstation:latestcontainer_name: airstationrestart: unless-stoppedports:- "7331:7331"volumes:- ./data:/app/storage- ./static:/app/staticenvironment:AIRSTATION_SECRET_KEY: FSbLEAEyfNyYNLOWuijtTFK1J/t022uyHkjIp0s4laM=AIRSTATION_JWT_SIGN: CG/Lnxl/TRx9KDzC/XI0IU6IaHAplJgn0YQvrLvEgL4=healthcheck:test: ["CMD", "wget", "--spider", "-q", "http://localhost:7331/"]interval: 10stimeout: 5sretries: 3start_period: 10s

然后执行下面的命令

# 新建文件夹 airstation 和 子目录
mkdir -p /volume1/docker/airstation/{data,static}# 进入 airstation 目录
cd /volume1/docker/airstation# 将 docker-compose.yml 放入当前目录# 一键启动
docker-compose up -d 

运行

后台

在浏览器中输入 http://群晖IP:7331/studio ,输入环境变量 AIRSTATION_SECRET_KEY 的值

登录成功后的主界面

Add 添加 mp3 音乐文件

处理完成后,会显示在 Library

勾选后,点 Queue

等添加到 Live queue 后,点播放按钮

播放

打开 http://192.168.0.197:7331。如果后台没有点播放按钮,你只会在下面看到 Stream offline

而后台点了播放按钮,会看到当前播放的曲名

进后台可以看到播放的进度

点中间的播放键,就可以听到音乐了

如果没声,开关扬声器试试

参考文档

cheatsnake/airstation: 🎵 Your own online radio station
地址:https://github.com/cheatsnake/airstation

Airstation: self-hosted Internet radio station : r/selfhosted
地址:https://www.reddit.com/r/selfhosted/comments/1kjyo2d/airstation_selfhosted_internet_radio_station/

http://www.xdnf.cn/news/562141.html

相关文章:

  • Docker网关冲突导致容器启动网络异常解决方案
  • Linux `cat` 命令深度解析与高阶应用指南
  • C++ - 仿 RabbitMQ 实现消息队列(3)(详解使用muduo库)
  • 物流项目第六期(短信微服务——对接阿里云第三方短信服务JAVA代码实现、策略模式 + 工厂模式的应用)
  • bitbar环境搭建(ruby 2.4 + rails 5.0.2)
  • 【寻找Linux的奥秘】第七章:虚拟地址空间
  • 第16天-使用Python Pillow库常见图像处理场景
  • javaweb-html
  • mapbox进阶,手写放大镜功能
  • C语言之预处理和宏
  • SAP-ABAP:ABAP异常处理与SAP现代技术融合—— 面向云原生、微服务与低代码场景的创新实践
  • 云原生攻防4(Kubernetes基础补充)
  • word通配符表
  • Linux上conda环境安装完全手札
  • OpenHarmony外设驱动使用 (十),Sensor
  • 企业级爬虫开发全流程指南
  • elementUI 中el-date-picker和el-select的样式调整
  • CSS 文字样式全解析:从基础排版到视觉层次设计
  • spring-boot-starter-data-redis应用详解
  • C# AI(Trae工具+claude3.5-sonnet) 写前后端
  • maven快速上手
  • AI练习:混合圆
  • 【优秀三方库研读】在 quill 开源库 LogMarcos.h 中知识点汇总及讲解
  • CVE-2018-1270源码分析与漏洞复现(spring-messaging 表达式注入)
  • Flask 路由装饰器:从 URL 到视图函数的优雅映射
  • 使用Terraform创建azure databrick
  • 每日算法 -【Swift 算法】寻找字符串中最长回文子串(三种经典解法全解析)
  • 【工具教程】图片识别内容改名,图片指定区域识别重命名,批量识别单据扫描件批量改名,基于WPF和腾讯OCR的实现方案
  • HTML5 Video (视频) 深入解析
  • WPF···