當前位置:
首頁 > 科技 > IT之家學院:使用樹莓派搭建B站直播點歌台

IT之家學院:使用樹莓派搭建B站直播點歌台

寫在前面:

昨天我寫了篇教程(IT之家學院:利用樹莓派在B站24小時直播音樂),評論里有很多人都想要點歌功能。

點歌這個功能吧,其實想加也不算太難,可是啊…這是樹莓派啊!直播姬彈幕姬實時渲染什麼的帶不動的啊!(好像也裝不上)

可是啊…點歌這個功能好像也是很有必要的呢……

所以呢…我今天花了一個上午+一個中午的時間自己做了一個能在樹莓派上運行的點歌台,雖然很簡陋,但是能實現這個功能就已經很不錯了嘛

(不會php和python的我靠著搜索引擎用php和python實現了這個功能…不是計算機專業的我已經儘力了……)

最終效果:http://live.bilibili.com/16703

本文著重於講解如何搭建,不會涉及代碼的詳細解釋。

下面開始教程

第一步:

請先按照之前的教程裝上該裝的東西(IT之家學院:利用樹莓派在B站24小時直播音樂)

第二步:安裝python的庫

我們的python腳本需要一些必不可少的庫,依次運行下面兩個命令進行安裝:


sudo pip install eyed3

sudo pip install pathlib

第三步:安裝nginx+php環境

這一步是為了能運行點歌的網頁

安裝nginx:


sudo apt-get install nginx

啟動 nginx:


sudo /etc/init.d/nginx start

接下來修改配置文件:


sudo nano /etc/nginx/sites-available/default

在 「listen 80」 那個大括弧里,把 「index index.html index.htm」 後面加上 「index.php」,像下面這樣:


listen 80;

root /usr/share/nginx/www;

index index.html index.htm index.php;

然後再找到 php 那一段,改成下面這樣:


location ~ .php$ {

fastcgi_pass unix:/var/run/php5-fpm.sock;

fastcgi_index index.php;

include fastcgi_params;

}

改完配置文件之後,保存關閉(ctrl+o回車,ctrl+x)。

安裝 php 和必要組件:

sudo apt-get install php5-fpm php5-sqlite

重啟 nginx:


sudo /etc/init.d/nginx reload

如果你不嫌煩的話,可以再把所有php組件裝上,我也不知道後面的代碼需不需要這些東西,因為我全都裝上了??


sudo apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

第四步:內網穿透(有公網IP的各位可以跳過,你們直連ip就行了)

網站搭建好了,我們要實現別人可以訪問,可是呢,我這裡是學校的區域網(哭),所以需要內網穿透。

這裡我是用的是ngrok,水家之前有人發過nat123的,感興趣的可以去找找。

其實用法很簡單(如果你不想自己搭建伺服器的話)。

用 ngrok.cc 提供的服務舉例:

首先到後台開通一個隧道,隧道協議選擇 「http」、本地埠寫你前面設置的埠(前面配置文件里寫的是 80)「127.0.0.1:80」 其他的按照自己的需求來寫就行,

然後下載官網提供的軟體,樹莓的話要選linux arm版,

下載之後先給 777 許可權:


sudo chmod 777 xxxx#文件名

然後按教程運行就行了:


./sunny clientid xxxxxxxxxxxxxx

如果前面沒有做錯什麼的話,你的網站應該就能從ngrok.cc里獲取的鏈接里訪問了。

第五步:點歌系統所需的php文件

這裡php所需要實現的功能就是:

1.可以自動搜索歌曲;

2.可以獲取到歌曲的下載鏈接;

我網上找到一個遠古的網易雲api,所以我就拿來用了。

php代碼在水家文章里發可能被轉碼,所以我發到了這裡:glist。

php文件放置請放到/usr/share/nginx/www/這一級文件夾的下面任意位置(你要保證別人能訪問),

為了能讓腳本正常運行,建議在賦予其讀寫文件夾的許可權:


sudo chmod -R 777 /usr/share/nginx/www/

注意事項:本人的php水平不高,畢竟沒有系統性學過,這個文件是靠著必應來的代碼拼湊+模仿寫成的,可能會有漏洞(應該問題不大)。

第六步:使用python腳本實現下載歌曲、調用ffmpeg渲染視頻的功能

python腳本如下,請注意縮進和準備好遊標卡尺(筆者將php文件放到了/usr/share/nginx/www/songs/文件夾):


import os

import urllib

import eyed3

import time

while True:

for i in range(1, 30+1):

if(os.path.exists("/usr/share/nginx/www/songs/"+str(i)+".txt")): #判斷待渲染文件是否存在

f = open("/usr/share/nginx/www/songs/"+str(i)+".txt")

content = f.read #讀取文件

print("downloading "+str(i)+".mp3") #debug

urllib.urlretrieve(content, str(i)+".mp3") #下載mp3文件

print("download success") #debug

xx=eyed3.load(str(i)+".mp3")

seconds=xx.info.time_secs #獲取音樂時長,為渲染一圖流視頻做準備

os.system("ffmpeg -loop 1 -r 1 -t "+str(seconds)+" -f image2 -i "+str(i)+".png -vcodec libx264 -pix_fmt yuv420p -crf 24 -y SinglePictureVideo.mp4") #渲染一圖流視頻,參數都是我做完試出來的,尤其是-pix_fmt yuv420p這個參數,缺了它視頻就是黑屏了

os.system("ffmpeg -i SinglePictureVideo.mp4 -i "+str(i)+".mp3 -c:v copy -c:a aac -y "+str(i)+".flv") #合并視頻與音頻

os.remove(str(i)+".mp3") #刪掉臨時文件

os.remove("SinglePictureVideo.mp4")

os.remove("/usr/share/nginx/www/songs/"+str(i)+".txt")

print(str(i)+"output finished")

time.sleep(10)

注意事項:本人的python水平也不高,所以……(逃

第六步:做好視頻封面

請在py腳本的同級目錄新建三十個png圖片,文件名也要1-30,看我多麼有誠意的手繪(真難看):

IT之家學院:使用樹莓派搭建B站直播點歌台

第七步:修改ffmpeg運行腳本

因為我們是運行多個文件,所以我們需要連續推流,這時ffmpeg網站的幫助文檔就起作用了(我找了半天沒找到發現官網就有…

官網說明:https://trac.ffmpeg.org/wiki/Concatenate

下面直接說做法了,首先新建一個txt,內容類似為:


file "/home/pi/songs/1.flv"

file "/home/pi/songs/2.flv"

file "/home/pi/songs/3.flv"

file "/home/pi/songs/4.flv"

file "/home/pi/songs/5.flv"

file "/home/pi/songs/6.flv"

file "/home/pi/songs/7.flv"

file "/home/pi/songs/8.flv"

file "/home/pi/songs/9.flv"

file "/home/pi/songs/10.flv"

file "/home/pi/songs/11.flv"

file "/home/pi/songs/12.flv"

file "/home/pi/songs/13.flv"

file "/home/pi/songs/14.flv"

file "/home/pi/songs/15.flv"

file "/home/pi/songs/16.flv"

file "/home/pi/songs/17.flv"

file "/home/pi/songs/18.flv"

file "/home/pi/songs/19.flv"

file "/home/pi/songs/20.flv"

file "/home/pi/songs/21.flv"

file "/home/pi/songs/22.flv"

file "/home/pi/songs/23.flv"

file "/home/pi/songs/24.flv"

file "/home/pi/songs/25.flv"

file "/home/pi/songs/26.flv"

file "/home/pi/songs/27.flv"

file "/home/pi/songs/28.flv"

file "/home/pi/songs/29.flv"

file "/home/pi/songs/30.flv"

然後多複製粘貼十幾遍保存,免得放完又重啟,

啟動的sh腳本也不能用昨天的了,要改成下面的樣子:


#!/bin/bash

while true

do

ffmpeg -re -f concat -safe 0 -i playlist.txt -vcodec copy -acodec aac -b:a 192k -f flv "你的。。。那啥網址和碼"

done

注意本sh腳本要與playlist.txt在同級目錄(廢話)…

這樣ffmpeg就會連續按txt里的順序進行推流。

第八步:把初始視頻文件生成好

這一步非常簡單,就是把1-30.flv全部生成完就行,

我這裡全部選擇了「種太陽」,我對不起直播間的那位小夥伴(Sortana)的耳朵??

第九步:啟動。。

啟動就行了。。


screen nohup sh live.sh &

screen nohup python live.py &

教程完畢。

由於內容比較多,可能有遺漏的部分,請諒解。

想看到更多這類內容?去APP商店搜IT之家,天天都有小歡喜。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT之家 的精彩文章:

IT之家學院:將Win10任務欄改造為媒體控制欄
Win10 Mobile不死?IT之家網友發掘Win10 Build 16212內部信息
魅族Pro 7/Plus手機專利圖渲染:背面是個老式MP3
新浪微博系統升級:一大波假冒海外代購黨要被曝光

TAG:IT之家 |

您可能感興趣

IT之家學院:在樹莓派上搭建私有雲存儲
樹莓派搭建WiFi釣魚系統
ISRO成功發射新衛星 地區GPS系統搭建完成
在IIS里搭建FTP伺服器
NVIDIA英偉達免費直播課:帶你選擇、搭建AI伺服器!
菜鳥跟你一起學用樹莓派搭建NAS
NVIDIA英偉達:深度學習伺服器搭建指南
用音樂搭建維繫《UC》與《NT》的橋樑
用KPPW搭建一個BIM眾包網,打造BIM技術眾包領域的王牌!
LAMP環境搭建
中國基建NO.1中國玩家在《ATLAS》搭建城堡老外看了都服
用KPPW搭建一個威客網站,成就青年創業的新渠道!
在雲伺服器上搭建FTP
搭建大眾點評 CAT 監控平台
中國基建果然NO.1 中國玩家在《ATLAS》里搭建城堡老外看了都服
車和家股東利歐股份重組公告:車和家擬搭建VIE架構,為海外上市做準備
中國基建果然NO.1 中國玩家在《ATLAS》里搭建城堡老外看了都服!
基於阿里雲HiTSDB搭建工業物聯網平台實踐
ASP .NET入門及其環境搭建
從零學習Spring MVC框架「環境搭建和MVC架構」