環境構築#
本文は甲骨文日本東京の AMD 無料サーバー(Debian 11)を使用して構築します。
本文は宝塔パネルをフロントエンド構築ソリューションとして使用します。
正式な構築#
環境のインストール#
宝塔のインストール#
curl -sSO https://raw.githubusercontent.com/8838/btpanel-v7.7.0/main/install/install_panel.sh && bash install_panel.sh
#1,電話番号を遮蔽
sed -i "s|bind_user == 'True'|bind_user == 'XXXX'|" /www/server/panel/BTPanel/static/js/index.js
#2,強制的に電話番号をバインドするjsファイルを削除
rm -f /www/server/panel/data/bind.pl
nginx のインストール#
注意が必要です:nginx をインストールする際は【コンパイルインストール】を選択し、カスタムモジュールを追加してください:
- モジュール名:
nginx_rtmp_module
- 説明:
nginx_rtmp_module
- パラメータ:
--add-module=/www/server/nginx/src/nginx-rtmp-module
- 前提スクリプト:
git clone https://github.com/arut/nginx-rtmp-module.git
ffmpeg のインストール#
apt-get -y install ffmpeg
Nginx 設定の変更#
**ソフトウェアストア——Nginx 1.22.1——設定——設定変更
** に入り、http
フィールドの前に以下の内容を追加します(# とその後の内容を削除することを忘れないでください):
rtmp {
server {
listen 1935; ##これはRTMPプロトコルのデフォルトポート
chunk_size 4096; ##データのチャンクサイズ
application live { ##liveという名前のプロジェクト
live on; ##これはライブプロジェクトです
hls on; ##HLS録画を有効にする
wait_key on; ##ビデオストリームをキーフレームから開始する
hls_path /www/wwwroot/site.com/hls; ##HLS録画ファイルの保存ディレクトリ、/www/wwwroot/site.com/hlsをあなたのサイトのディレクトリに変更
hls_fragment 5s; ##HLSで生成される各tsファイルの長さ
hls_playlist_length 30s; ##各tsファイルの保持時間
hls_continuous on; ##HLSの番号を前の終了位置から開始する
hls_cleanup on; ##古いtsファイルを自動的にクリーンアップ
hls_nested on; ##各HLSストリーミングプロジェクトのために新しいサブディレクトリを作成
}
}
}
そしてctrl+s
で保存し、**ソフトウェアストア——Nginx 1.22.1——設定——サービス
で設定を再読み込み
** をクリックします。
ウェブサイトの作成と関連設定の変更#
ウェブページの作成#
ドメイン名などの関連設定を入力し、SSL を有効にするかどうかを選択できます(海外サーバーでは SSL を有効にし、Cloudflare の小さな雲を開くことをお勧めします)。
設定の変更#
access_log
フィールドの前の行に以下の内容を追加します:
location /live {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
alias /www/wwwroot/site.com/hls; # 先ほど設定したhlsディレクトリと一致
add_header Cache-Control no-cache;
}
Dplayer プレーヤーの構築#
デフォルトのindex.html
を以下の内容に直接変更します:
<!DOCTYPE HTML>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>あなたのライブルームの名前</title>
<link rel="icon" type="image/x-icon" href="https://smms.app/image/7vZXEYRjOiW1Ftb">
<link class="dplayer-css" rel="stylesheet" href="https://cdn.jsdelivr.net/npm/dplayer/dist/DPlayer.min.css">
<script src="https://cdn.jsdelivr.net/npm/hls.js/dist/hls.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dplayer/dist/DPlayer.min.js"></script>
<style>
html,body{margin:0px;padding:0px;width:100%;height:100%;}#dplayer{position:absolute;width:100%;height:100%;}
</style>
</head>
<body>
<div id="dplayer" class="dplayer dplayer-no-danmaku dplayer-live dplayer-playing dplayer-loading"></div>
<script>
const dp = new DPlayer({
container: document.getElementById('dplayer'),
live: true,
danmaku: false,
autoplay: true,
video: {
url: 'hls/推流码/index.m3u8',
type: 'hls'
}
});
</script>
</body>
OBS などのソフトウェアを使用してライブ配信を開始#
設定は以下の通りです:
- サーバー:
rtmp://あなたのサーバーアドレス:1935/live/
- ストリームキー:
任意に設定しますが、HTMLコードの推流コードと一致する必要があります
ffmpeg を使用してストリームをプッシュ#
大まかなコマンドは以下の通りです:
ffmpeg -i ストリームアドレス -c:v copy -c:a aac -b:a 192k -strict -2 -f flv rtmp://127.0.0.1:1935/live/推流码
バックグラウンドで実行する必要がある場合
nohup ffmpeg -i ストリームアドレス -c:v copy -c:a aac -b:a 192k -strict -2 -f flv rtmp://127.0.0.1:1935/live/推流码 &
Streamlink を使用してストリームをプッシュ#
Streamlink と Screen のインストール#
apt-get install python3-pip screen
pip3 install streamlink
ストリーミングメディアをプッシュ(YouTube ライブの例)#
echo "YouTubeのURLを入力してください:"
read URL
streamlink $URL best -O | ffmpeg -re -i pipe:0 -c copy -bsf:a aac_adtstoasc -f flv rtmp://localhost:1935/live/youtube
YouTube の非公開(Unlisted)ライブストリームをプッシュ【淦】#
この作業は本当に大変でした。公開ライブのプッシュは非常に簡単ですが、非公開ライブは保護されているため、Streamlink ではプッシュできず、少し工夫が必要でした。
このプッシュの前提は、ライブストリームのアドレスを知っていることです。例えばhttps://youtu.be/abcdefg
Screen のインストール#
apt -y install screen
私はバックグラウンドでの実行には screen しか使えません…… 私は初心者です……
yt-dlp のダウンロードとデプロイ#
wget -O /usr/local/bin/yt-dlp https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp
Screen を使用してバックグラウンド実行を開始#
screen -S youtube
YouTube の非公開ライブをプッシュ#
この作業は本当に大変でした……
clear
echo "YouTubeのURLを入力してください:"
read URL
ffmpeg -re -i $(yt-dlp -f best -g $URL) -c copy -bsf:a aac_adtstoasc -f flv -buffer_size 256M rtmp://localhost/live/youtube
ここでは yt-dlp を使用して YouTube ライブリンクを m3u8 リンクに解析し、ffmpeg に読み込ませています。また、buffer_size
を小さく設定するとエラーが発生するようで(理由はわかりませんが、調整すると解決しました)。
感謝#
yt-dlp、Streamlink、ffmpeg の作者に感謝します。彼らがいなければ、このチュートリアルは存在しませんでした。