このチュートリアルでは、Ubuntu 18.04でAVideo(以前のYouPHPTube)を使用して独自のビデオ共有Webサイトを実行する方法を説明します。 AVideoは、YouTubeやVimeoなどの動画共有ウェブサイトに代わるオープンソースのセルフホスト型です。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を検討できます。ユーロ/月。
 - サイトがそれを超えて成長した場合は、専用サーバーを購入する必要があります。
 
Ubuntu18.04にAVideoをインストールするためのソフトウェア要件
AVideoにはPHPとMySQL/MariaDBが必要です。このチュートリアルに従うには、LAMPスタックまたはLEMPスタックをすでに設定している必要があります。 Apache Webサーバーを使用する場合は、LAMPスタックをインストールします。
- Ubuntu 18.04にLAMP(Apache、MariaDB、PHP)スタックをインストールする方法
 
Nginx Webサーバーを使用する場合は、LEMPスタックをインストールしてください。
- Ubuntu 18.04にLEMP(Nginx、MariaDB、PHP)スタックをインストールする方法
 
注 :NginxでのAVideoのサポートは実験的なものにすぎません。 Nginxを使用すると、サイトで問題が発生する可能性があります 。
ドメイン名も必要です。ドメイン名をNameCheapに登録したのは、価格が安く、whoisのプライバシー保護が一生無料になるからです。
AVideoは2つの部分で構成されています。
- 主要部分はフロントエンドストリームサーバーであり、ユーザーは既存の動画を視聴できます。
 - もう1つの部分は、ユーザーが動画をアップロードできるようにするエンコーダーです。
 
 パブリックエンコーダーはドメイン名https://encoder1.avideo.comを使用します 。動画をアップロードするときにユーザーがサイトを離れたくない場合は、プライベートエンコーダーを設定する必要があります。この記事でその方法を紹介します。面倒なことはせずに、始めましょう。
ステップ1:Ubuntu18.04サーバーにAVideoをダウンロードする
SSH経由でUbuntu18.04サーバーにログインします。次に、Webルートディレクトリに移動します。
cd /var/www/
GithubからAVideoストリーマーリポジトリのクローンを作成します。
sudo apt 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
次に、www-data(Webサーバーユーザー)をWebルートの所有者にする必要があります。
sudo chown www-data:www-data /var/www/AVideo/ -R
ステップ2:依存関係をインストールする
 AVideoはFFmpegを使用します ビデオをエンコードします。デフォルトのUbuntuリポジトリからFFmpegを簡単にインストールできます。
sudo apt install ffmpeg
 マルチメディアファイルでメタ情報を読み書きするには、 libimage-exiftool-perlをインストールする必要があります パッケージ。
sudo apt install libimage-exiftool-perl
また、いくつかの一般的なPHP拡張機能をインストールする必要があります。
sudo apt install php7.2-cli php7.2-common php7.2-json php7.2-opcache php7.2-readline php7.2-curl php7.2-gd php7.2-xml
他のサイトから動画を取得するには、YouTube-DLをインストールする必要があります。 Ubuntuリポジトリに含まれていますが、古くなっています。 YouTube-DLは、常に最新バージョンのYouTube-DLが含まれているPythonPackageIndexからインストールします。
sudo apt 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でデータベースとユーザーを作成する
データベースとユーザーを作成する前に、MariaDBのいくつかの設定を変更する必要があります。構成ファイルを編集します。
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
 AVideoは大きなインデックスキープレフィックスを使用します データベース内。ただし、 MariaDB 10.1   COMPACTを使用します 大きなインデックスキープレフィックスをサポートしない行形式。  DYNAMICを使用するようにMariaDBを構成できます  InnoDB に次の行を追加することにより、新しいバージョンのMariaDBのデフォルト設定である行形式  [mysqld]の下のセクション ファイル内のユニット。
# The Antelope file format doesn't support dynamic row format, we must use the # Barracuda file format. innodb_file_format = Barracuda innodb_file_format_max = Barracuda # Dynamic row format is only supported if innodb_file_per_table is set to ON. innodb_file_per_table = ON # Set dynamic as the default row format, which supports large index key prefix. innodb_default_row_format = dynamic # Enable large prefix innodb_large_prefix = ON
 
 
ファイルを保存して閉じます。次に、MariaDBを再起動します。
sudo systemctl restart mariadb
 次のコマンドを使用して、MariaDBデータベースサーバーにログインします。 MariaDBは現在unix_socketを使用しているため ユーザーログインを認証するプラグイン。MariaDBのrootパスワードを入力する必要はありません。  mysqlのプレフィックスを付ける必要があります  sudoを使用したコマンド 。
sudo mysql
 次に、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/apache2/sites-available/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 ${APACHE_LOG_DIR}/avideo.error.log
    CustomLog ${APACHE_LOG_DIR}/avideo.access.log combined
</VirtualHost> ファイルを保存して閉じます。次に、この仮想ホストを有効にします。
sudo a2ensite avideo.conf
リライトモジュールを有効にする必要があります。
sudo a2enmod rewrite
変更を有効にするには、Apacheを再起動します。
sudo systemctl restart apache2
 次に、 tube.yourdomain.comにアクセスします セットアップウィザードページ( tube.yourdomain.com/install/index.php )にリダイレクトされます )。セットアップウィザードの代わりにデフォルトのApacheページが表示される場合は、デフォルトの仮想ホストを無効にする必要があります。
sudo a2dissite 000-default.conf
そして、Apacheを再起動します。
セットアップウィザードに情報を入力する前に、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/php7.2-fpm.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)をUbuntu18.04サーバーにインストールします。
sudo apt install certbot
Apacheを使用する場合は、CertbotApacheプラグインもインストールする必要があります。
sudo apt install python3-certbot-apache
そして、このコマンドを実行してTLS証明書を取得してインストールします。
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d tube.yourdomain.com
Nginxを使用する場合は、CertbotNginxプラグインをインストールしてください。
sudo apt 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中にサーバーが提供する証明書にホチキス止めされます。 
これで、証明書が取得され、自動的にインストールされます。
 
 
ステップ6:セットアップウィザードを使用してインストールを終了する
 次に、 tube.yourdomain.com/install/index.phpにアクセスします セットアップウィザードが表示されます。左側で、サーバーが要件を満たしているかどうかを確認できます。
 
 
Nginxを使用している場合は、次のメッセージを無視できます。
Your server is nginx/1.14.2, you must install Apache.
 ご覧のとおり、PHPの post_max_size  少なくとも100Mで、 upload_max_filesizeである必要があります 少なくとも100Mである必要があります。  php.iniを編集する必要があります 2つの値を変更するファイル。 Apache Webサーバーを使用している場合は、
sudo nano /etc/php/7.2/apache2/php.ini
PHP-FPMでNginxを使用する場合は、php.iniファイルのFPMバージョンを編集する必要があります。
sudo nano /etc/php/7.2/fpm/php.ini
次の2行を見つけます。
post_max_size = 8M upload_max_filesize = 2M
アップロードするビデオファイルのサイズに応じて値を変更します。たとえば、1Gビデオファイルのアップロードを許可する場合は、
post_max_size = 1024M upload_max_filesize = 1024M
ファイルを保存して閉じます。変更を有効にするには、Apacheを再起動します。
sudo systemctl restart apache2
PHP-FPMでNginxを使用している場合は、PHP-FPMを再起動します。
sudo systemctl restart php7.2-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.
 ご覧のとおり、PHPの max_execution_time  少なくとも7200で、PHP  memory_limitである必要があります 少なくとも512Mである必要があります。  php.iniを編集する必要があります 2つの値を変更するファイル。 Apache Webサーバーを使用している場合は、
sudo nano /etc/php/7.2/apache2/php.ini
PHP-FPMでNginxを使用する場合は、php.iniファイルのFPMバージョンを編集する必要があります。
sudo nano /etc/php/7.2/fpm/php.ini
次の2行を見つけます。
max_execution_time = 30 memory_limit = 128M
値を変更します。
max_execution_time = 7200 memory_limit = 512M
 後でビデオエンコーディングが途中で停止した場合は、 max_execution_timeを増やす必要があることに注意してください。 、またはCPUをアップグレードします。
ファイルを保存して閉じます。変更を有効にするには、Apacheを再起動します。
sudo systemctl restart apache2
PHP-FPMでNginxを使用している場合は、PHP-FPMを再起動します。
sudo systemctl restart php7.2-fpm
次に、AVideoEncoderのインストールウィザードページを更新します。サーバーはすべての要件に合格する必要があります。次に右側に、前に作成したAVideoEncoderデータベース名、ユーザー、およびパスワードを入力する必要があります。大文字と小文字を区別し、ストリーマーサイトの管理者パスワードを入力してください。
 
 
[今すぐインストール]ボタンをクリックすると、AVideoエンコーダーがインストールされます。
 
 
インストールディレクトリを削除します。
sudo rm /var/www/AVideo/upload/install/ -r
そして、メインページに移動します。
 
 
ステップ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を使用してUbuntu18.04でメールサーバーを簡単にセットアップする方法
 
SMTPリレーサービスを利用したい場合は、Mailjetをお勧めします。以下のチュートリアルに従って、AVideoサーバーにSMTPリレーを設定できます。
- Mailjetを使用してUbuntuでPostfixSMTPリレーを設定する方法
 
 管理パネルに移動すると、メール送信をテストできます ->設定 ->サイト設定 ->詳細設定 、SMTP構成を見つけることができます。次の設定を使用してください。
- SMTPを有効にします。
 - SMTP認証を有効にします。
 -  
tlsを使用する SMTPセキュアで。 -  
587を使用する SMTPポートとして。 - メールサーバーのホスト名を入力します。
 - SMTPユーザー名とパスワードを入力します。
 
 保存コード>をクリックします ボタンをクリックして設定を保存し、 Test Email をクリックします 動作しているかどうかを確認します。
 
 
TCPBBRを有効にする
ビデオストリーミングサーバーの場合、以下の記事の手順に従って、LinuxカーネルでTCPBBR輻輳制御アルゴリズムを有効にすることをお勧めします。
- TCPBBRを有効にしてUbuntuネットワークのパフォーマンスを簡単に向上させる方法
 
モバイルアプリ
  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