このチュートリアルでは、CentOS 8でAVideo(旧称YouPHPTube)を使用して独自のビデオ共有Webサイトを実行する方法を説明します。AVideoは、YouTube、Vimeoなどのビデオ共有Webサイトに代わるオープンソースのセルフホスト型です。 。AVideoを使用すると、ユーザーは動画をサーバーにアップロードしてインターネットと共有できます。
AVideoの機能
- 無制限の同時ライブストリーム。各ライブストリームに無制限のユーザーを接続できます。
- インターネットから直接他のサイトからビデオをインポートしてエンコードする
- ローカルビデオディレクトリからのバルクエンコーディング
- プライベート動画を作成する
- Youtubeと完全に統合された機能、Youtubeとの動画の同期
- マルチメディアファイルの複数の形式をMP4、WebM、およびMP3ファイルにトランスコードします
- Amazon S3(シンプルストレージサービス)をサポートする
- レスポンシブサイトのレイアウト。 AVideoはどのデバイスでも信じられないほどに見えます。 (YouTubeまたはNetfilxスタイルのレイアウトを選択できます。)
- ユーザーチャンネルとユーザープレイリスト
- 好きなチャンネルに登録する
- AVideo Statisticsの最新の指標とレポートを使用して、動画のパフォーマンスを監視できます。
- プラグインを使用してサイトの機能を拡張します。
- SEO最適化
- 利用可能なiOSおよびAndroidアプリ
AVideoサーバーの要件
まず、エンコードプロセスは大量のCPUリソースを使用するため、シングルコアCPUはビデオ共有Webサイトでは実行できないことを知っておく必要があります。
次に、サイトのユーザー数に応じてサーバーの仕様を選択します。
- 自分の動画を共有するためだけに使用する場合は、少なくとも2つのCPUコアと4GBのRAMを搭載したサーバーが必要です。非常に少ないコストで、Contaboから強力なVPS(仮想プライベートサーバー)を購入できます。
- サイトに数十人のユーザーがいると予想される場合は、10個のCPUコア、60 GBのRAM、1 Gbit / sのポート速度、1.6 TBのディスク容量、無制限のトラフィック、わずか26.99のContabo特大VPSを検討できます。ユーロ/月。
- サイトがそれを超えて成長した場合は、専用サーバーを購入する必要があります。
CentOS8にAVideoをインストールするためのソフトウェア要件
AVideoにはPHPとMySQL/MariaDBが必要です。このチュートリアルに従うには、LAMPスタックまたはLEMPスタックをすでに設定している必要があります。 Apache Webサーバーを使用する場合は、LAMPスタックをインストールします。
- CentOS 8にLAMP(Apache、MariaDB、PHP)スタックをインストールする方法
Nginx Webサーバーを使用する場合は、LEMPスタックをインストールしてください。
- CentOS 8にLEMP(Nginx、MariaDB、PHP)スタックをインストールする方法
注 :NginxでのAVideoのサポートは実験的なものにすぎません。 Nginxを使用すると、サイトで問題が発生する可能性があります 。
ドメイン名も必要です。ドメイン名をNameCheapに登録したのは、価格が安く、whoisのプライバシー保護が一生無料になるからです。
AVideoは2つの部分で構成されています。
- 主要部分はフロントエンドストリームサーバーであり、ユーザーは既存の動画を視聴できます。
- もう1つの部分は、ユーザーが動画をアップロードできるようにするエンコーダーです。
パブリックエンコーダーはドメイン名https://encoder1.avideo.com
を使用します 。動画をアップロードするときにユーザーがサイトを離れたくない場合は、プライベートエンコーダーを設定する必要があります。この記事でその方法を紹介します。面倒なことはせずに、始めましょう。
ステップ1:CentOS8サーバーにAVideoをダウンロードする
SSH経由でCentOS8サーバーにログインします。次に、Webルートディレクトリに移動します。
cd /var/www/
GithubからAVideoストリーマーリポジトリのクローンを作成します。
sudo dnf install git sudo git clone https://github.com/WWBN/AVideo.git
次に、ディレクトリに移動します。
cd AVideo/
GithubからAVideoエンコーダリポジトリのクローンを作成します。
sudo git clone https://github.com/WWBN/AVideo-Encoder.git
AVideo-Encoder
として保存されます 。名前をupload
に変更します 、そのため、ユーザーは動画をアップロードするときにこのURLが何のためにあるのかをよりよく理解できます。
sudo mv AVideo-Encoder upload
次に、WebサーバーユーザーをWebルートの所有者にする必要があります。
Apache
sudo chown apache:apache /var/www/AVideo/ -R
Nginx
sudo chown nginx:nginx /var/www/AVideo/ -R
また、Webサーバーがこのディレクトリに書き込めるようにSELinuxコンテキストを変更する必要があります。
sudo chcon -t httpd_sys_rw_content_t /var/www/AVideo/ -R
ステップ2:依存関係をインストールする
AVideoはFFmpeg
を使用します ビデオをエンコードします。 RPMFusionリポジトリからFFmpegを簡単にインストールできます。
sudo dnf install epel-release sudo dnf config-manager --enable PowerTools sudo dnf install https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-8.noarch.rpm sudo dnf install ffmpeg -y
マルチメディアファイルでメタ情報を読み書きするには、 perl-Image-ExifTool
をインストールする必要があります パッケージ。
sudo dnf install perl-Image-ExifTool
また、いくつかの一般的なPHP拡張機能をインストールする必要があります。
sudo dnf install php-cli php-fpm php-mysqlnd php-common php-json php-opcache php-readline php-curl php-gd php-xml
他のサイトから動画を取得するには、YouTube-DLをインストールする必要があります。 CentOSリポジトリに含まれていますが、古くなっています。 YouTube-DLは、常に最新バージョンのYouTube-DLが含まれているPythonPackageIndexからインストールします。
sudo dnf install python3-pip sudo -H pip3 install youtube-dl
最新バージョンを使用することが非常に重要です。そうしないと、他のサイトからビデオをダウンロードできない可能性があります。最新バージョンを自動的にチェックしてインストールするCronジョブを作成できます。
sudo crontab -e
Crontabファイルの最後に次の行を追加して、YouTube-DLを毎日アップグレードしてみてください。
@daily sudo -H pip3 install --upgrade youtube-dl > /dev/null
ステップ3:MariaDBでデータベースとユーザーを作成する
次のコマンドを使用して、rootとしてMySQL/MariaDBシェルにログインします。 MySQL/MariaDBのルートパスワードを入力する必要があります。
mysql -u root -p
次に、AVideoのデータベースを作成します。このチュートリアルでは、データベースに AVideo
という名前を付けます 。好きな名前を使用できます。
create database AVideo;
データベースユーザーを作成します。この場合も、このユーザーの好みの名前を使用できます。 your-password
を置き換えます ご希望のパスワードを使用してください。
create user AVideo@localhost identified by 'your-password';
このユーザーにAVideo
に対するすべての権限を付与します データベース。
grant all privileges on AVideo.* to AVideo@localhost;
また、エンコーダー用に別のデータベースを作成する必要があります。
create database AVideoEncoder;
このデータベースのユーザーを作成します。
create user AVideoEncoder@localhost identified by 'your-password';
特権を付与します。
grant all privileges on AVideoEncoder.* to AVideoEncoder@localhost;
特権テーブルをフラッシュして終了します。
flush privileges; exit;
ステップ4:Webサーバーのセットアップ
ApacheまたはNginxWebサーバーを使用できます。
Apache
Apacheが必要な場合は、Nanoなどのコマンドラインテキストエディタを使用してAVideoの仮想ホストファイルを作成します。
sudo nano /etc/httpd/conf.d/avideo.conf
次のテキストをファイルに入れます。赤い色のテキストを実際のデータに置き換えます。このチュートリアルではサブドメインを使用します。必要に応じて、メインドメイン名を使用できます。 DNSレコードマネージャーでドメイン名のDNSAレコードを設定することを忘れないでください。また、ドキュメントのルートディレクトリでは大文字と小文字が区別されるため、末尾にスラッシュを追加しないでください。
<VirtualHost *:80> ServerName tube.yourdomain.com DocumentRoot /var/www/AVideo <Directory /var/www/AVideo> DirectoryIndex index.php Options +FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog /var/log/httpd/avideo.error.log CustomLog /var/log/httpd/avideo.access.log combined </VirtualHost>
ファイルを保存して閉じます。変更を有効にするには、Apacheを再起動します。
sudo systemctl restart httpd
次に、 tube.yourdomain.com
にアクセスします セットアップウィザードページ( tube.yourdomain.com/install/index.php
)にリダイレクトされます 。
セットアップウィザードに情報を入力する前に、HTTPSを有効にする必要があります。
Nginx
Nginxが必要な場合は、 avideo.conf
を作成します /etc/nginx/conf.d/
のファイル ディレクトリ。
sudo nano /etc/nginx/conf.d/avideo.conf
次のテキストをファイルに入れます。赤い色のテキストを実際のデータに置き換えます。このチュートリアルではサブドメインを使用します。必要に応じて、メインドメイン名を使用できます。 DNSレコードマネージャーでドメイン名のDNSAレコードを設定することを忘れないでください。また、ドキュメントのルートディレクトリでは大文字と小文字が区別されることに注意してください。
server { listen 80; listen [::]:80; server_name tube.yourdomain.com; root /var/www/AVideo; index index.php index.html index.htm; charset utf-8; client_max_body_size 2G; access_log /var/log/nginx/avideo.access.log; error_log /var/log/nginx/avideo.error.log; location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } # translating Apache rewrite rules in the .htaccess file to Nginx rewrite rules location / { rewrite ^/$ /view/ last; } location /bootstrap { rewrite ^/bootstrap/(.+)$ /view/bootstrap/$1 last; } location /js { rewrite ^/js/(.+)$ /view/js/$1 last; } location /css { rewrite ^/css/(.+)$ /view/css/$1 last; } location /img { rewrite ^/img/(.+)$ /view/img/$1 last; } location /page { rewrite ^/page/([0-9]+)/?$ /view/?page=$1 last; } location /videoOnly { rewrite ^/videoOnly/?$ /view/?type=video last; } location /audioOnly { rewrite ^/audioOnly/?$ /view/?type=audio last; } location = /download { rewrite ^(.*)$ /view/downloadExternalVideo.php last; } location = /downloadNow { rewrite ^(.*)$ /objects/downloadVideo.php last; } location = /getDownloadProgress { rewrite ^(.*)$ /objects/downloadVideoProgress.php last; } location = /about { rewrite ^(.*)$ /view/about.php last; } location = /contact { rewrite ^(.*)$ /view/contact.php last; } location = /sendEmail { rewrite ^(.*)$ /objects/sendEmail.json.php last; } location = /captcha { rewrite ^(.*)$ /objects/getCaptcha.php last; } location /monitor { rewrite ^/monitor/(.+)$ /objects/ServerMonitor/$1 last; } location /cat { rewrite ^/cat/([A-Za-z0-9-]+)/?$ /view/?catName=$1 last; } location /video { rewrite ^/video/([A-Za-z0-9-_.]+)/?$ /view/?videoName=$1 last; } location /videoEmbeded { rewrite ^/videoEmbeded/([A-Za-z0-9-_.]+)/?$ /view/videoEmbeded.php?videoName=$1 last; } location = /upload { rewrite ^(.*)$ /view/mini-upload-form/ last; } location = /fileUpload { rewrite ^(.*)$ /view/mini-upload-form/upload.php last; } location /uploadStatu { rewrite ^/uploadStatus /view/mini-upload-form/videoConversionStatus.php last; } location = /user { rewrite ^(.*)$ /view/user.php last; } location = /users { rewrite ^(.*)$ /view/managerUsers.php last; } location = /users.json { rewrite ^(.*)$ /objects/users.json.php last; } location = /updateUser { rewrite ^(.*)$ /objects/userUpdate.json.php last; } location = /savePhoto { rewrite ^(.*)$ /objects/userSavePhoto.php last; } location = /addNewUser { rewrite ^(.*)$ /objects/userAddNew.json.php last; } location = /deleteUser { rewrite ^(.*)$ /objects/userDelete.json.php last; } location = /recoverPass { rewrite ^(.*)$ /objects/userRecoverPass.php last; } location = /saveRecoverPassword { rewrite ^(.*)$ /objects/userRecoverPassSave.json.php last; } location = /signUp { rewrite ^(.*)$ /view/signUp.php last; } location = /createUser { rewrite ^(.*)$ /objects/userCreate.json.php last; } location = /usersGroups { rewrite ^(.*)$ /view/managerUsersGroups.php last; } location = /usersGroups.json { rewrite ^(.*)$ /objects/usersGroups.json.php last; } location = /addNewUserGroups { rewrite ^(.*)$ /objects/userGroupsAddNew.json.php last; } location = /deleteUserGroups { rewrite ^(.*)$ /objects/userGroupsDelete.json.php last; } location = /ads { rewrite ^(.*)$ /view/managerAds.php last; } location = /addNewAd { rewrite ^(.*)$ /objects/video_adsAddNew.json.php last; } location = /ads.json { rewrite ^(.*)$ /objects/video_ads.json.php last; } location = /deleteVideoAd { rewrite ^(.*)$ /objects/video_adDelete.json.php last; } location /adClickLo { rewrite ^/adClickLog /objects/video_adClickLog.php last; } location = /categories { rewrite ^(.*)$ /view/managerCategories.php last; } location = /categories.json { rewrite ^(.*)$ /objects/categories.json.php last; } location = /addNewCategory { rewrite ^(.*)$ /objects/categoryAddNew.json.php last; } location = /deleteCategory { rewrite ^(.*)$ /objects/categoryDelete.json.php last; } location = /orphanFiles { rewrite ^(.*)$ /view/orphanFiles.php last; } location = /mvideos { rewrite ^(.*)$ /view/managerVideos.php last; } location = /videos.json { rewrite ^(.*)$ /objects/videos.json.php last; } location = /deleteVideo { rewrite ^(.*)$ /objects/videoDelete.json.php last; } location = /addNewVideo { rewrite ^(.*)$ /objects/videoAddNew.json.php last; } location = /refreshVideo { rewrite ^(.*)$ /objects/videoRefresh.json.php last; } location = /setStatusVideo { rewrite ^(.*)$ /objects/videoStatus.json.php last; } location = /reencodeVideo { rewrite ^(.*)$ /objects/videoReencode.json.php last; } location = /addViewCountVideo { rewrite ^(.*)$ /objects/videoAddViewCount.json.php last; } location = /saveComment { rewrite ^(.*)$ /objects/commentAddNew.json.php last; } location /comments { rewrite ^/comments.json/([0-9]+)$ /objects/comments.json.php?video_id=$1 last; } location = /login { rewrite ^(.*)$ /objects/login.json.php last; } location = /logoff { rewrite ^(.*)$ /objects/logoff.php last; } location = /like { rewrite ^(.*)$ /objects/like.json.php?like=1 last; } location = /dislike { rewrite ^(.*)$ /objects/like.json.php?like=-1 last; } location /update { rewrite ^/update/?$ /update/update.php last; } location = /siteConfigurations { rewrite ^(.*)$ /view/configurations.php last; } location = /updateConfig { rewrite ^(.*)$ /objects/configurationUpdate.json.php last; } location = /charts { rewrite ^(.*)$ /view/charts.php last; } location = /upload/index.php { rewrite ^(.*)$ /upload/view/index.php last; } location = /upload/isAdmin { rewrite ^(.*)$ /upload/view/isAdmin.php last; } location = /upload/removeStreamer { rewrite ^(.*)$ /upload/view/removeStreamer.php last; } location = /upload/priority { rewrite ^(.*)$ /upload/view/priority.php last; } location = /upload/status { rewrite ^(.*)$ /upload/view/status.php last; } location = /upload/serverStatus { rewrite ^(.*)$ /upload/view/status.php?serverStatus=1 last; } location = /upload/upload { rewrite ^(.*)$ /upload/view/upload.php last; } location = /upload/listFiles.json { rewrite ^(.*)$ /upload/view/listFiles.json.php last; } location = /upload/deleteQueue { rewrite ^(.*)$ /upload/view/deleteQueue.php last; } location = /upload/saveConfig { rewrite ^(.*)$ /upload/view/saveConfig.php last; } location = /upload/youtubeDl.json { rewrite ^(.*)$ /upload/view/youtubeDl.json.php last; } location = /upload/send.json { rewrite ^(.*)$ /upload/view/send.json.php last; } location = /upload/streamers.json { rewrite ^(.*)$ /upload/view/streamers.json.php last; } location = /upload/queue.json { rewrite ^(.*)$ /upload/view/queue.json.php last; } location = /upload/queue { rewrite ^(.*)$ /upload/view/queue.php last; } location = /upload/login { rewrite ^(.*)$ /upload/objects/login.json.php last; } location = /upload/logoff { rewrite ^(.*)$ /upload/objects/logoff.json.php last; } location /upload/ { rewrite "^/getImage/([A-Za-z0-9=/]+)/([A-Za-z0-9]{3})$" /upload/objects/getImage.php?base64Url=$1&format=$2 last; rewrite "^/getImageMP4/([A-Za-z0-9=/]+)/([A-Za-z0-9]{3})/([0-9.]+)$" /upload/objects/getImageMP4.php?base64Url=$1&format=$2&time=$3 last; } location /upload/getSpiritsFromVideo { rewrite ^/getSpiritsFromVideo/([A-Za-z0-9=/]+)/([0-9]+)/([0-9]+)$ /upload/objects/getSpiritsFromVideo.php?base64Url=$1&tileWidth=$2&totalClips=$3 last; } location /upload/getLinkInfo { rewrite ^/getLinkInfo/([A-Za-z0-9=/]+)$ /upload/objects/getLinkInfo.json.php?base64Url=$1 last; } }
ファイルを保存して閉じます。次に、Nginx構成をテストします。
sudo nginx -t
テストが成功した場合は、変更を有効にするためにNginxをリロードします。
sudo systemctl reload nginx
次に、 tube.yourdomain.com
にアクセスします セットアップウィザードページ( tube.yourdomain.com/install/index.php
)にリダイレクトされます )。セットアップウィザードに情報を入力する前に、HTTPSを有効にする必要があります。
ステップ5:HTTPSを有効にする
HTTPトラフィックを暗号化するには、Let’sEncryptから発行された無料のTLS証明書をインストールしてHTTPSを有効にします。次のコマンドを実行して、Let’s Encryptクライアント(certbot)をCentOS8サーバーにインストールします。
sudo dnf install certbot
Apacheを使用する場合は、CertbotApacheプラグインもインストールする必要があります。
sudo dnf install python3-certbot-apache
そして、このコマンドを実行してTLS証明書を取得してインストールします。
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d tube.yourdomain.com
Nginxを使用する場合は、CertbotNginxプラグインをインストールしてください。
sudo dnf install python3-certbot-nginx
次に、次のコマンドを実行してTLS証明書を取得してインストールします。
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d tube.yourdomain.com
どこ
-
-nginx
:nginxプラグインを使用してください。 -
-apache
:Apacheプラグインを使用してください。 -
-agree-tos
:利用規約に同意します。 -リダイレクト
:301リダイレクトでHTTPSを強制します。-
-hsts
:すべてのHTTP応答にStrict-Transport-Securityヘッダーを追加します。ドメインに常にTLSを使用するようにブラウザを強制します。 SSL/TLSストリッピングから防御します。 -
-staple-ocsp
:OCSPステープリングを有効にします。有効なOCSP応答は、TLS中にサーバーが提供する証明書にホチキス止めされます。
これで、証明書が取得され、自動的にインストールされます。
デフォルトでは、SELinuxはApache / Nginxが他のサーバーにネットワーク要求を行うことを禁止していますが、後でApache /NginxはOCSPステープリングのためにLet'sEncryptCAサーバーにTLS証明書ステータスを要求する必要があるため、SELinuxに次のようにApache/Nginxを許可するように指示する必要がありますコマンド。
sudo setsebool -P httpd_can_network_connect 1
ステップ6:セットアップウィザードを使用してインストールを終了する
次に、 tube.yourdomain.com
にアクセスします セットアップウィザードが表示されます。左側で、サーバーが要件を満たしているかどうかを確認できます。
Nginxを使用している場合は、次のメッセージを無視できます。
Your server is nginx/1.14.2, you must install Apache.
ご覧のとおり、PHPの post_max_size
少なくとも100Mで、 upload_max_filesize
である必要があります 少なくとも100Mである必要があります。 php.ini
を編集する必要があります 2つの値を変更するファイル。
sudo nano /etc/php.ini
次の2行を見つけます。
post_max_size = 8M upload_max_filesize = 2M
アップロードするビデオファイルのサイズに応じて値を変更します。たとえば、1Gビデオファイルのアップロードを許可する場合は、
post_max_size = 1024M upload_max_filesize = 1024M
ファイルを保存して閉じます。変更を有効にするには、PHP-FPMを再起動します。
sudo systemctl restart php-fpm
次に、AVideoインストールウィザードページを更新します。サーバーはすべての要件に合格する必要があります。これで右側に、ビデオサイトのタイトルを入力し、システム管理者パスワードを設定できます。以前に作成したAVideoデータベース名、ユーザー、およびパスワードを入力します。 (注:エンコーダーデータベースではなく、メインデータベースを使用する必要があります。大文字と小文字が区別されることにも注意してください。)
今すぐインストール
をクリックします ボタンとAVideoが正常にインストールされているはずです。
次に、 / var / www / AVideo / install /
を削除する必要があります ディレクトリ。
sudo rm /var/www/AVideo/install/ -r
メインページに移動コード>をクリックします ボタンをクリックすると、AVideoのメインページが表示されます。
左側のドロップダウンメニューをクリックして、 admin
としてログインできます。 ユーザーと、少し前に設定したパスワードを使用します。
ステップ7:エンコーダーを設定する
https://tube.yourdomain.com/upload/
にアクセスします 。エンコーダ設定ウィザードにリダイレクトされます。自動的にリダイレクトされない場合は、セットアップウィザードのURLを手動で入力できます。
https://tube.yourdomain.com/upload/install/index.php/
左側には、サーバーがAVideoエンコーダーの要件を満たしているかどうかが表示されます。
Nginxを使用している場合は、次のメッセージを無視できます。
Your server is nginx/1.14.2, you must install Apache.
手順2でexiftool、FFmpeg、youtube-dlをインストールしましたが、PHP-FPMでバイナリが見つかりません。これは、 PATH
を有効にしなかったためです PHPの変数。 PHP-FPM構成ファイルを編集します。
sudo nano /etc/php-fpm.d/www.conf
次の行を見つけて、先頭のセミコロン(;)を削除します。
;env[PATH] = /usr/local/bin:/usr/bin:/bin
ファイルを保存して閉じます。次に、PHP-FPMを再起動します。
sudo systemctl restart php-fpm
エンコーダのインストールページを更新します。セットアップウィザードは、exiftool、FFmpeg、youtube-dlのバイナリを見つけることができるはずです。ビデオディレクトリが書き込み可能でない場合は、次のコマンドを実行します。
sudo chcon -t httpd_sys_rw_content_t /var/www/AVideo/ -R
ご覧のとおり、PHPの max_execution_time
少なくとも7200で、PHP memory_limit
である必要があります 少なくとも512Mである必要があります。 php.ini
を編集する必要があります 2つの値を変更するファイル。
sudo nano /etc/php.ini
次の2行を見つけます。
max_execution_time = 30 memory_limit = 128M
値を変更します。
max_execution_time = 7200 memory_limit = 512M
後でビデオエンコーディングが途中で停止した場合は、 max_execution_time
を増やす必要があることに注意してください。 、またはCPUをアップグレードします。
ファイルを保存して閉じます。次に、PHP-FPMを再起動します。
sudo systemctl restart php-fpm
次に、AVideoEncoderのインストールウィザードページを更新します。サーバーはすべての要件に合格する必要があります。次に右側に、前に作成したAVideoEncoderデータベース名、ユーザー、およびパスワードを入力する必要があります。大文字と小文字を区別し、ストリーマーサイトの管理者パスワードを入力してください。
[今すぐインストール]ボタンをクリックすると、AVideoエンコーダーがインストールされます。
インストールディレクトリを削除します。
sudo rm /var/www/AVideo/upload/install/ -r
メインページに移動します。 AVideoエンコーダーにログインできるようになります。
ステップ8:エンコーダーURLを変更する
デフォルトでは、AVideoはビデオのアップロードにパブリックエンコーダーを使用します。独自のエンコーダーを使用するには、(AVideoエンコーダーではなく)AVideoで管理者としてサインインし、左側のサイドバーから管理パネルに移動します。
設定
に移動します ->サイト設定
->高度な構成
。エンコーダーのURLをhttps://tube.yourdomain.com/upload/
に変更します 。設定を保存し、キャッシュディレクトリをクリアして、新しいサイトマップを生成します。
次に、ログアウトして再度ログインします。[ビデオとオーディオのエンコード
]をクリックした場合 右上隅のボタンをクリックすると、ビデオをアップロードするための独自のエンコーダーに移動します。エンコード速度はサーバーのCPUパワーに依存することに注意してください。エンコーダーが動画をアップロードディレクトリ( / var / www / AVideo / upload / videos
)の一時ファイルにコピーするため、RAMはそれほど必要ありません。 。
ステップ9:SMTPを構成する
電子メール(アカウント登録、パスワードのリセットなど)を送信するには、SMTPサーバーを構成する必要があります。独自のメールサーバーを使用してクライアントにメールを送信する場合は、次の記事を確認して独自のメールサーバーを設定してください。 注 新しいクリーンなOSでiRedMailメールサーバーを実行することを強くお勧めします。他のWebアプリケーションがあるOSにiRedMailをインストールすると、失敗し、既存のアプリケーションが破損する可能性があります。
- iRedMailを使用してCentOS8でメールサーバーを簡単に設定する方法
SMTPリレーサービスを利用したい場合は、Mailjetをお勧めします。以下のチュートリアルに従って、AVideoサーバーにSMTPリレーを設定できます。
- Mailjetを使用してCentOSでPostfixSMTPリレーを設定する方法
管理パネル
に移動すると、メール送信をテストできます ->設定
->サイト設定
->詳細設定
、SMTP構成を見つけることができます。次の設定を使用してください。
- SMTPを有効にします。
- SMTP認証を有効にします。
-
tls
を使用する SMTPセキュアで。 -
587
を使用する SMTPポートとして。 - メールサーバーのホスト名を入力します。
- SMTPユーザー名とパスワードを入力します。
保存コード>をクリックします ボタンをクリックして設定を保存し、
Test Email
をクリックします 動作しているかどうかを確認します。
TCPBBRを有効にする
ビデオストリーミングサーバーの場合、LinuxカーネルでTCPBBR輻輳制御アルゴリズムを有効にすることをお勧めします。 sysctl.confファイルを編集します。
sudo nano /etc/sysctl.conf
ファイルの最後に次の2行を追加します。
net.core.default_qdisc=fq net.ipv4.tcp_congestion_control=bbr
ファイルを保存して閉じます。次に、sysctl構成をリロードします。
sudo sysctl -p
次に、使用中の輻輳制御アルゴリズムを確認します。
sysctl net.ipv4.tcp_congestion_control
出力:
net.ipv4.tcp_congestion_control = bbr
モバイルアプリ
AVideo
を検索すると、無料のAndroidアプリまたはiOSアプリをダウンロードできます。 GooglePlayストアまたはYPTMobile
AppleStoreで。ホワイトラベルのモバイルアプリには有料ライセンスが必要です。
トラブルシューティング
AVideoメインページがCSSおよびJavaScriptリソースの一部を読み込めなかった場合
WebルートディレクトリのApacheまたはNginx仮想ホストファイルにスラッシュを追加した可能性があります。使用する代わりに
DocumentRoot /var/www/AVideo/
使用する必要があります
DocumentRoot /var/www/AVideo
メインのウェブサイトが正常に機能していない場合は、 /var/www/AVideo/videos/avideo.log
でログファイルを確認できます。 。エンコーダが正しく機能していない場合は、/var/www/AVideo/upload/videos/avideo.log
でログファイルを確認できます。 。
その他のヒント
ビデオをエンコードするときは、解像度(低、SD、HD)を選択できます。 AVideoを個人のビデオストリーミングサイトとして使用する場合は、エンコード時間を短縮し、ディスク容量を節約するためにのみ、HD解像度を選択することをお勧めします。すでに3つの解像度すべてにビデオをエンコードしている場合は、AVideoビデオディレクトリ(/ var / www / AVideo / videos)に移動して、低解像度およびSD解像度のビデオを削除できます。
cd /var/www/AVideo/videos/ sudo rm *Low.mp4 sudo rm *SD.mp4
ビデオサイトからすべてのビデオをダウンロードする方法
youtube-dl
を使用できます すべてのビデオをダウンロードするためのコマンドラインユーティリティ。まず、AVideoダッシュボードに移動し、次にビデオリストページに移動して一番下までスクロールし、ビデオリスト(パーマリンク.txtファイル)をダウンロードをクリックする必要があります。 ボタン。すべての動画のURLのリストが表示されます。
次に、ターミナルを開き、テキストエディタでtxtファイルを作成し、WebページからURLをコピーして、ファイルに貼り付けます。次に、次のコマンドを実行してビデオをダウンロードできます。 video-list.txt
を置き換えます 自分のファイル名で。
youtube-dl -a video-list.txt