机器我这里使用的是甲骨文的免费arm,系统我自己重装成debian11了,下面的步骤都基于这个系统。
首先安装需要用到的一些软件包:
apt -y update apt -y install nginx python3-certbot-nginx ffmpeg tmux curl
安装azuracast,这里直接用azuracast官方的docker实用脚本来安装:
mkdir -p /var/azuracast cd /var/azuracast curl -fsSL https://raw.githubusercontent.com/AzuraCast/AzuraCast/main/docker.sh > docker.sh chmod a+x docker.sh ./docker.sh install
如果你的系统上没有安装docker和docker-compose,这个脚本会在安装过程中帮你安装,同时会询问你如下问题:
Docker does not appear to be installed. Install Docker now? [Y/n] y Docker Compose does not appear to be installed. Install Docker Compose now? [Y/n] y Your current release channel is 'Rolling Release'. Switch to 'Stable' release channel? [y/N] n
除了询问上面的问题,在安装过程中还会让你选择程序使用的语言,使用的端口号等,默认情况下azuracast会占用80和443端口,这样不太方便,如果机器内有其他web服务的话会产生冲突,所以这里我把对应的80和443端口修改成10080和10443了。如果你在安装过程中没有这样做,也可以在安装完成后执行下面的命令来修改:
cd /var/azuracast ./docker.sh update-self ./docker.sh change-ports
其他的端口比如sftp的2022端口,以及电台的8000-8499端口保持默认的配置不做修改。
接下来配置反向代理,新建nginx配置文件:
nano /etc/nginx/conf.d/azuracast.conf
写入如下配置:
server { listen 80; server_name azuracast.example.com; client_max_body_size 0; location / { proxy_pass http://127.0.0.1:10080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
签发ssl证书:
certbot --nginx
打开azuracast的页面创建管理员账号登录进去,在系统设置这里,一定要勾选如图所示的选项:
然后就是创建电台什么的,这些就不多说了,创建好电台后可以在如下图所示的页面上传你的音乐文件:
现在就可以开始广播了,启动广播后,在电台的首页可以看到这个界面,:
复制这个mp3结尾的网址,待会用ffmpeg推流的时候需要用到。现在用tmux新建一个会话:
tmux new -s ffmpeg
在会话里执行如下命令开始向youtube推流:
ffmpeg \ -stream_loop -1 \ -re \ -i "example.mp4" \ -stream_loop -1 \ -re \ -thread_queue_size 512 \ -i "https://azuracast.example.com/listen/imlala/radio.mp3" \ -map 0:v -map 1:a \ -c:v libx264 -preset veryfast -b:v 3000k -maxrate 3000k -bufsize 6000k -pix_fmt yuv420p -g 50 \ -c:a aac -b:a 128k -ac 2 -ar 44100 \ -f flv rtmp://a.rtmp.youtube.com/live2/streamkey
这个命令带有很多选项和参数,这里我只说一下需要改动的位置。
首先有两个作为输入的源,第一个就是视频源,第二个就是刚才azuracast上面的音频源:
-i "example.mp4" -i "https://azuracast.example.com/listen/imlala/radio.mp3"
视频文件随便找个就行,传到机器内即可,另外视频有没有声音都无所谓,因为接下来的参数:
-map 0:v -map 1:a
把视频里面的音频替换成azuracast的了。
最后修改一下推流的地址和key即可:
rtmp://a.rtmp.youtube.com/live2/streamkey
实际上除了youtube,你也可以推流到twitch等平台,都是可行的。但是这里我不得不提醒一下的是youtube的版权真的很严格,如果你在youtube播音乐,大概率被禁播。别说音乐了就是画面上带个tvb电视台的台标,youtube也能给你禁播。。我自己就播了一会儿就收到各种版权主张的邮件了,然后就被ban了:
最后没办法就在自建的peertube上播了,效果还可以:
参考文献:
https://stackoverflow.com/questions/11779490/how-to-add-a-new-audio-not-mixing-into-a-video-using-ffmpeg
https://superuser.com/questions/1137612/ffmpeg-replace-audio-in-video
https://stackoverflow.com/questions/65041956/ffmpeg-looping-an-video-audio-stream-to-youtube-live
https://trac.ffmpeg.org/wiki/EncodingForStreamingSites
https://docs.azuracast.com/en/getting-started/installation/docker
我刚去斗鱼测试了一下 没成功
我用的是服务器2H4G的,是不是需要修改一下什么参数。比如码率 速率什么的呢。
不需要啊,你推流成功了ffmpeg会有相关显示的,可能你推流的地址和key没填对?
好久不见啊, 快两个月没更新了
正在缓慢恢复更新中。。。
您好,想问下这个问题咋解决,谷歌搜到的办法好像不行。
Can’t find a suitable configuration file in this directory or any
parent. Are you in the right directory?
Supported filenames: docker-compose.yml, docker-compose.yaml
你好,你在执行docker-compose相关命令的时候,必须要在相应的目录下执行才可以,即目录下必须存在docker-compose.yml文件。
如果你是在执行这个docker.sh安装脚本的时候遇到的错误,可以参考下这里:https://github.com/AzuraCast/AzuraCast/issues/4388