Lesrec-bbs

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 7|回复: 7

如何在 Ubuntu 20.04 服务器上安装 AVideo/YouPHPTube

[复制链接]

96

主题

27

回帖

290

积分

超级版主

积分
290
发表于 2025-4-22 14:40:03 | 显示全部楼层 |阅读模式
本帖最后由 edupxl 于 2025-4-22 14:44 编辑

本教程将向您展示如何在 Ubuntu 20.04 上使用 AVideo(以前称为 YouPHPTube)运行您自己的视频共享网站。 AVideo 是 YouTube、Vimeo 等视频共享网站的开源、自托管替代方案。通过 AVideo,用户可以将视频上传到您的服务器并在互联网上共享。
视频功能
  • 无限且同步的直播,您可以让无限的用户连接到每个直播。
  • 直接从 Internet 导入其他网站的视频并对其进行编码
  • 从本地视频目录批量编码
  • 制作私人视频
  • 与Youtube完全集成的功能,将您的视频与Youtube同步
  • 将多种格式的多媒体文件转码为 MP4、WebM 和 MP3 文件
  • 支持Amazon S3(简单存储服务)
  • 响应式网站布局。 AVideo 在任何设备上看起来都令人难以置信。 (您可以选择 YouTube 或 Netfilx 风格的布局。)
  • 用户频道和用户播放列表
  • 订阅您喜欢的频道
  • 您可以使用 AVideo 统计信息中的最新指标和报告来监控视频的表现。
  • 使用插件扩展网站功能。
  • 搜索引擎优化
  • 提供 iOS 和 Android 应用程序

AVideo 服务器要求
首先,你应该知道单核CPU对于视频共享网站来说是不可行的,因为编码过程会使用大量的CPU资源。
然后根据您网站的用户数量选择服务器规格。
  • 如果您只想用它来分享自己的视频,则需要一台至少具有 2 个 CPU 核心和 4GB RAM 的服务器。您可以用很少的成本从 Contabo 购买功能强大的 VPS(虚拟专用服务器)。
  • 如果您预计您的网站有数十个用户,那么您可以考虑 Contabo 超大 VPS,它有 10 个 CPU 核心、60GB RAM、1Gbit/s 端口速度、1.6TB 磁盘空间、无限流量,但费用仅为 26.99 欧元/月。
  • 当您的网站超出这个范围时,您应该购买专用服务器。
在 Ubuntu 20.04 上安装 AVideo 的软件要求
AVideo 需要 PHP 和 MySQL/MariaDB。要学习本教程,您应该已经设置了 LAMP 堆栈或 LEMP 堆栈。如果您更喜欢使用 Apache Web 服务器,请安装 LAMP 堆栈。
  • 如何在 Ubuntu 20.04 上安装 LAMP(Apache、MariaDB、PHP)堆栈

如果您更喜欢使用 Nginx Web 服务器,请安装 LEMP 堆栈。
  • 如何在 Ubuntu 20.04 上安装 LEMP(Nginx、MariaDB、PHP)堆栈
注意:Nginx 对 AVideo 的支持只是实验性的。如果您使用 Nginx,您的网站可能会出现问题。
您还需要一个域名。我在 NameCheap 注册了我的域名,因为价格低,而且他们终身免费提供 whois 隐私保护。
AVideo 由两部分组成。
  • 主要部分是前端流服务器,它允许用户观看现有的视频。
  • 另一部分是编码器,它允许用户上传视频。
公共编码器使用域名https://encoder1.avideo.com。如果您不希望用户在上传视频时离开您的网站,则需要设置私有编码器。我将在本文中向您展示如何操作。话不多说,让我们开始吧。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

96

主题

27

回帖

290

积分

超级版主

积分
290
 楼主| 发表于 2025-4-22 14:45:04 | 显示全部楼层
步骤1:在Ubuntu 20.04服务器上下载AVideo
通过 SSH 登录 Ubuntu 20.04 服务器。然后进入网站根目录。

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.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-readline php7.4-curl php7.4-gd php7.4-xml
要从其他网站获取视频,我们需要安装 YouTube-DL。虽然它包含在 Ubuntu 存储库中,但它已经过时了。我们将从 Python 包索引安装 YouTube-DL,该索引始终包含最新版本的 YouTube-DL。

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
回复

使用道具 举报

96

主题

27

回帖

290

积分

超级版主

积分
290
 楼主| 发表于 2025-4-22 14:45:53 | 显示全部楼层
第3步:在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 或 Nginx Web 服务器。

阿帕奇
如果您更喜欢 Apache,请使用 Nano 等命令行文本编辑器为 AVideo 创建虚拟主机文件。

sudo nano /etc/apache2/sites-available/avideo.conf
将以下文本放入文件中。将红色文本替换为您的实际数据。我在本教程中使用子域。如果您愿意,可以使用您的主域名。不要忘记在 DNS 记录管理器中为域名创建 DNS A 记录。另请注意,文档根目录区分大小写,并且不应在末尾添加正斜杠。

<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
并重新启动阿帕奇。

在设置向导中输入任何信息之前,我们需要启用 HTTPS。
回复

使用道具 举报

96

主题

27

回帖

290

积分

超级版主

积分
290
 楼主| 发表于 2025-4-22 14:46:15 | 显示全部楼层
nginx
如果您更喜欢 Nginx,请在 /etc/nginx/conf.d/ 目录中创建一个 avideo.conf 文件。

sudo nano /etc/nginx/conf.d/avideo.conf
将以下文本放入文件中。将红色文本替换为您的实际数据。我在本教程中使用子域。如果您愿意,可以使用您的主域名。不要忘记在 DNS 记录管理器中为域名创建 DNS A 记录。另请注意,文档根目录区分大小写。

server {
    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.4-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。
回复

使用道具 举报

96

主题

27

回帖

290

积分

超级版主

积分
290
 楼主| 发表于 2025-4-22 14:46:54 | 显示全部楼层
步骤 5:启用 HTTPS
要加密 HTTP 流量,我们可以通过安装 Let’s Encrypt 颁发的免费 TLS 证书来启用 HTTPS。运行以下命令在 Ubuntu 20.04 服务器上安装 Let’s Encrypt 客户端 (certbot)。
sudo apt install certbot
如果您使用Apache,还需要安装Certbot Apache插件。
sudo apt install python3-certbot-apache
并运行此命令来获取并安装 TLS 证书。
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email  -d tube.yourdomain.com
如果您使用 Nginx,请安装 Certbot Nginx 插件。
sudo apt install python3-certbot-nginx
接下来,运行以下命令来获取并安装 TLS 证书。
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email  -d tube.yourdomain.com
在哪里
  • --nginx:使用nginx插件。
  • --apache:使用 Apache 插件。
  • --agree-tos:同意服务条款。
  • --redirect:通过 301 重定向强制使用 HTTPS。
  • --hsts:将 Strict-Transport-Security 标头添加到每个 HTTP 响应中。强制浏览器始终对域使用 TLS。防御 SSL/TLS 剥离。
  • --staple-ocsp:启用 OCSP 装订。有效的 OCSP 响应将被粘贴到服务器在 TLS 期间提供的证书中。
现在应该已获取并自动安装证书。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

96

主题

27

回帖

290

积分

超级版主

积分
290
 楼主| 发表于 2025-4-22 14:47:49 | 显示全部楼层
本帖最后由 edupxl 于 2025-4-22 14:51 编辑

步骤 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 文件来更改这两个值。如果您使用 Apache Web 服务器,那么

sudo nano /etc/php/7.4/apache2/php.ini
如果您将 Nginx 与 PHP-FPM 一起使用,则需要编辑 php.ini 文件的 FPM 版本。

sudo nano /etc/php/7.4/fpm/php.ini
找到以下两行。

post_max_size = 8M
upload_max_filesize = 2M
根据您要上传的视频文件大小更改值。例如,如果您允许上传1G视频文件,那么

post_max_size = 1024M
upload_max_filesize = 1024M
保存并关闭文件。重新启动 Apache 以使更改生效。

sudo systemctl restart apache2
如果您将 Nginx 与 PHP-FPM 一起使用,请重新启动 PHP-FPM。

sudo systemctl restart php7.4-fpm
现在刷新 AVideo 安装向导页面。您的服务器应该满足所有要求。现在,在右侧,您可以输入视频网站的标题,并设置系统管理员密码。输入您之前创建的 AVideo 数据库名称、用户和密码。 (注意:您应该使用主数据库,而不是编码器数据库。还要注意区分大小写。)



单击立即安装按钮,AVideo 应该已成功安装。



现在我们需要删除 /var/www/AVideo/install/ 目录。

sudo rm /var/www/AVideo/install/ -r
单击转到主页按钮,您将看到AVideo主页。



您可以单击左侧的下拉菜单,并以 admin 用户身份和您刚才设置的密码登录。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

96

主题

27

回帖

290

积分

超级版主

积分
290
 楼主| 发表于 2025-4-22 14:51:53 | 显示全部楼层
本帖最后由 edupxl 于 2025-4-22 14:53 编辑

第 7 步:设置编码器
前往 https://tube.yourdomain.com/upload/。您将被重定向到编码器设置向导。如果没有自动重定向,您可以手动输入设置向导 URL。

https://tube.yourdomain.com/upload/install/index.php/
左侧将显示您的服务器是否满足 AVideo Encoder 的要求。



如果您使用Nginx,则可以忽略以下消息。

Your server is nginx/1.14.2, you must install Apache.
如您所见,PHP max_execution_time 应至少为 7200,PHP memory_limit 应至少为 512M。我们需要编辑 php.ini 文件来更改这两个值。如果您使用 Apache Web 服务器,那么

sudo nano /etc/php/7.4/apache2/php.ini
如果您将 Nginx 与 PHP-FPM 一起使用,则需要编辑 php.ini 文件的 FPM 版本。

sudo nano /etc/php/7.4/fpm/php.ini
找到以下两行。

max_execution_time = 30
memory_limit = 128M
更改值。

max_execution_time = 7200
memory_limit = 512M
请注意,如果稍后视频编码中途停止,您需要增加 max_execution_time,或升级 CPU。

保存并关闭文件。重新启动 Apache 以使更改生效。

sudo systemctl restart apache2
如果您将 Nginx 与 PHP-FPM 一起使用,请重新启动 PHP-FPM。

sudo systemctl restart php7.4-fpm
现在刷新 AVideo Encoder 安装向导页面。您的服务器应该满足所有要求。现在,在右侧,您需要输入之前创建的 AVideoEncoder 数据库名称、用户和密码。请注意区分大小写,并输入流媒体站点的管理员密码。



单击“立即安装”按钮,将安装 AVideo Encoder。



删除安装目录。

sudo rm /var/www/AVideo/upload/install/ -r
并转到主页。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

96

主题

27

回帖

290

积分

超级版主

积分
290
 楼主| 发表于 2025-4-22 14:54:18 | 显示全部楼层
本帖最后由 edupxl 于 2025-4-22 14:55 编辑

第 8 步:更改编码器 URL
默认情况下,AVideo 使用公共编码器上传视频。要使用您自己的编码器,请以管理员身份登录 AVideo(不是 AVideo Encoder),然后从左侧边栏转到管理面板。



转到设置 -> 站点设置 -> 高级配置。将编码器 URL 更改为 https://tube.yourdomain.com/upload/。保存设置,清除缓存目录并生成新的站点地图。



现在注销并重新登录。如果您点击右上角的编码视频和音频按钮,您将被带到您自己的编码器来上传视频。需要注意的是,编码速度取决于服务器的 CPU 能力。它不需要太多 RAM,因为编码器会将视频复制到上传目录中的临时文件 (/var/www/AVideo/upload/videos)。

步骤 9:配置 SMTP
为了发送电子邮件(例如帐户注册、密码重置等),您需要配置 SMTP 服务器。如果您想使用自己的邮件服务器向客户发送电子邮件,请查看以下文章来设置您自己的邮件服务器。 请注意,我强烈建议在全新的干净操作系统上运行 iRedMail 邮件服务器。在具有其他 Web 应用程序的操作系统上安装 iRedMail 可能会失败,并且可能会破坏现有应用程序。

如何使用 iRedMail 在 Ubuntu 20.04 上轻松设置电子邮件服务器
如果您想使用 SMTP 中继服务,我推荐 Mailjet。您可以按照以下教程在 AVideo 服务器上设置 SMTP 中继。

如何使用 Mailjet 在 Ubuntu 上设置 Postfix SMTP 中继
您可以通过进入管理面板 -> 设置 -> 站点设置 -> 高级配置来测试电子邮件发送,您可以找到 SMTP 配置。使用以下设置。

启用 SMTP。
启用 SMTP 身份验证。
在 SMTP 安全中使用 tls。
使用 587 作为 SMTP 端口。
输入您的邮件服务器的主机名。
输入 SMTP 用户名和密码。
单击保存按钮保存设置,然后单击测试电子邮件以查看其是否正常工作。



启用 TCP BBR
对于视频流服务器,建议按照以下文章中的说明在 Linux 内核中启用 TCP BBR 拥塞控制算法。

如何通过启用 TCP BBR 轻松提升 Ubuntu 网络性能
移动应用程序
您可以通过在 Google Play 商店中搜索 AVideo 或在 Apple Store 中搜索 YPT Mobile 下载免费的 Android 应用程序或 iOS 应用程序。白标移动应用程序需要付费许可证。

故障排除
如果您的AVideo主页无法加载某些CSS和JavaScript资源,



您可能在 Web 根目录的 Apache 或 Nginx 虚拟主机文件中添加了额外的正斜杠。而不是使用

DocumentRoot /var/www/AVideo/
你应该使用

DocumentRoot /var/www/AVideo
如果主网站无法正常工作,您可以检查 /var/www/AVideo/videos/youphptube.log 中的日志文件。如果您的编码器无法正常工作,您可以检查 /var/www/AVideo/upload/videos/youphptube.log 处的日志文件。

其他花絮
编码视频时,您可以选择分辨率(低、标清、高清)。如果您使用 AVideo 作为个人视频流网站,我建议仅选择高清分辨率,以减少编码时间并节省磁盘空间。如果您已经将视频编码为所有 3 个分辨率,则可以转到 AVideo 视频目录 (/var/www/AVideo/videos) 并删除低分辨率和标清分辨率视频。

cd /var/www/AVideo/videos/
sudo rm *Low.mp4
sudo rm *SD.mp4
如何从视频网站下载所有视频
您可以使用 youtube-dl 命令行实用程序下载所有视频。首先,您需要转到 AVideo 仪表板,然后转到视频列表页面并向下滚动到底部,单击下载视频列表(永久链接 .txt 文件)按钮。您将看到所有视频的 URL 列表。

接下来,打开终端并使用文本编辑器创建一个 txt 文件,从网页复制 URL 并将其粘贴到该文件中。然后您可以运行以下命令来下载视频。将 video-list.txt 替换为您自己的文件名。

youtube-dl -a video-list.txt
包起来
我希望本教程可以帮助您在 Ubuntu 20.04 服务器上安装 AVideo。与往常一样,如果您发现这篇文章有用,请订阅我们的免费时事通讯以获取更多提示和技巧。保重 🙂

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Lesrec-bbs ( 沪ICP备2020036158号-2 )

GMT+8, 2025-5-5 21:28 , Processed in 0.021581 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表