• 在Debian 10 Buster上与YouPHPTube一起运行自己的视频共享网站

    本教程将向您展示如何在Debian 10 Buster上使用YouPHPTube运行自己的视频共享网站。YouPHPTube是YouTube、Vimeo等视频共享网站的开源、自托管替代方案。使用YouPHPTube,您可以将视频上传到自己的服务器,并与互联网共享。 YouPHPTube功能 无限和同步的直播流,你可以有无限的用户连接到每个直播流。 直接从互联网导入和编码其他网站的视频 从本地视频目录批量编码 制作私人视频 与Youtube完全集成的功能,允许您将视频与Youtube同步 将多种格式的多媒体文件转换为MP4、WebM和MP3文件 支持Amazone S3(简单存储服务) 响应性网站布局。YouPHPTube在任何设备上都令人难以置信。(您可以选择YouTube或Netfilx样式的布局。) 用户频道和用户播放列表 订阅你喜欢的频道 您可以使用YouPHPTube统计信息中的最新指标和报告来监控视频的性能。 使用插件扩展站点功能。 搜索引擎优化 iOS和安卓应用可用 YouPHPTube服务器要求 首先,你应该知道,对于视频共享网站来说,单核CPU是不可行的,因为编码过程会占用大量CPU资源。 然后根据站点的用户数量选择服务器规格。 如果你只想用它来分享你自己的视频,你需要一个至少有2个CPU核和4GB内存的服务器。您可以从Contabo购买功能强大的VPS(虚拟专用服务器),成本很低。 如果你希望你的站点有几十个用户,那么你可以考虑Cababo特大VPS,它有10个CPU内核,60GB RAM,1Gb/s端口速度,1.6TB磁盘空间,无限流量,但成本只有26.99欧元/月。 当你的网站增长超过这个范围时,你应该购买一台专用服务器。 在Debian 10 Buster上安装YouPHPTube的软件要求 YouPHPTube需要PHP和MySQL/MariaDB。要学习本教程,您应该已经设置了灯堆栈或LEMP堆栈。如果您更喜欢使用ApacheWeb服务器,请安装LAMP堆栈。 如何在Debian 10 Buster上安装LAMP(Apache、MariaDB、PHP)堆栈 如果您更喜欢使用Nginx web服务器,请安装LEMP stack。 如何在Debian 10 Buster上安装LEMP(Nginx、MariaDB、PHP)堆栈 注:Nginx对YouPHPTube的支持只是实验性的。如果使用Nginx,可能会出现问题。 你还需要一个域名。我在namescape注册了我的域名,因为价格低廉,而且他们终身免费保护whois的隐私。 YouPHPTube由两部分组成。 主要部分是前端拖缆服务器,它允许用户观看现有视频。 另一部分是编码器,它允许用户上传视频。 公共编码器使用域名编码器。youphptube。通用域名格式。如果你不想让用户在上传视频时离开你的网站,你需要设置你的私人编码器。在本文中,我将向您展示如何进行。不用麻烦了,我们开始吧。 步骤1:在Debian 10 Buster服务器上下载YouPHPTube 通过SSH登录Debian 10 Buster服务器。然后转到web根目录。 cd/var/www/ 从Github克隆YouPHPTube拖缆存储库。 sudo apt安装git sudo git clonehttps://github.com/YouPHPTube/YouPHPTube.git 然后进入目录。 cd YouPHPTube/ 从Github克隆YouPHPTube编码器存储库。 sudo git克隆https://github.com/YouPHPTube/YouPHPTube-Encoder.git 它将另存为YouPHPTube编码器。我们将其重命名为upload,以便用户在上传视频时更好地了解此URL的用途。 sudo mv YouPHPTube编码器上传 接下来,我们需要将www数据(web服务器用户)作为web根的所有者。 sudo chown www-data:www-data/var/www/YouPHPTube/-R 第2步:安装依赖项 YouPHPTube使用FFmpeg对视频进行编码。我们可以从默认的Debian存储库轻松安装FFmpeg。 sudo apt安装ffmpeg 要在多媒体文件中读写元信息,我们需要安装libimage exiftool perl包。 sudo apt安装libimage exiftool perl 您还需要安装一些常见的PHP扩展。 sudo apt安装php7。3-cli php7。3-常见php7。3-json php7。3-opcache php7。3-readline php7。3-卷曲php7。3-gd php7。3-xml 要从其他网站获取视频,我们需要安装YouTube DL。虽然它包含在Debian存储库中,但已经过时了。我们将从Python包索引安装YouTube DL,该索引始终包含最新版本的YouTube DL。 sudo apt install python3 pip sudo-H pip3 install youtube dl 使用最新版本非常重要,否则可能无法从其他网站下载视频。我们可以创建一个Cron作业来自动检查并安装最新版本。 sudo crontab-e 在Crontab文件的末尾添加以下行,尝试每天升级YouTube DL。 @每日sudo-H pip3安装——升级youtube dl&gt/dev/null 第3步:在MariaDB中创建数据库和用户 使用以下命令登录MariaDB数据库服务器。由于MariaDB现在使用unix_socket插件来验证用户登录,因此无需输入MariaDB根密码。我们只需要在mysql命令前面加上sudo。 sudo mysql 然后为YouPHPTube创建一个数据库。本教程将数据库命名为YouPHPTube。你可以用任何你喜欢的名字。 创建数据库YouPHPTube; 创建数据库用户。同样,您可以使用此用户的首选名称。用首选密码替换密码。 创建用户youphptube@localhost由“您的密码”标识; 授予此用户在youphptube数据库上的所有权限。 授予YouPHPTube上的所有特权。*到youphptube@localhost; 我们还需要为编码器创建一个单独的数据库。 创建数据库YouPHPTubeEncoder; 为此数据库创建一个用户。 创建用户encoder@localhost由“您的密码”标识; 授予特权。 授予YouPHPTubeEncoder的所有特权。*到encoder@localhost; 刷新特权表并退出。 同花顺特权;出口 第4步:设置Web服务器 我们可以使用Apache或Nginx web服务器。 阿帕奇 如果您喜欢Apache,可以使用命令行文本编辑器(如Nano)为YouPHPTube创建一个虚拟主机文件。 sudo nano/etc/apache2/sites available/youphptube。形态 将以下文本放入文件中。用实际数据替换红色文本。我在本教程中使用了一个子域。如果你愿意,你可以使用你的主域名。不要忘记在DNS记录管理器中为域名设置DNS记录。还要注意,文档根目录区分大小写,不应在末尾添加正斜杠。 <虚拟主机*:80>服务器名管。你的地盘。com DocumentRoot/var/www/YouPHPTube<目录/var/www/YouPHPTube>目录索引。php选项+FollowSymLinks AllowOverride All需要全部授予&lt/目录>ErrorLog${APACHE_LOG_DIR}/youphptube。错误log CustomLog${APACHE_log_DIR}/youphptube。通道日志合并&lt/VirtualHost> 保存并关闭文件。然后启用这个虚拟主机。 sudo a2ensite youphptube。形态 我们需要启用重写模块。 sudo a2enmod重写 重新启动Apache以使更改生效。 sudo systemctl重启apache2 现在参观地铁。你的地盘。com,您将被重定向到安装向导页面(tube.yourdomain.com/install/index.php)。如果看到的是默认的Apache页面而不是安装向导,则需要禁用默认的虚拟主机。 sudo A2000默认值。形态 然后重启Apache。 在安装向导中输入任何信息之前,我们需要启用HTTPS。 Nginx 如果您更喜欢Nginx,请创建一个youphptube。conf文件位于/etc/nginx/conf.d/目录中。 sudo nano/etc/nginx/conf.d/youphptube。形态 将以下文本放入文件中。用实际数据替换红色文本。我在本教程中使用了一个子域。如果你愿意,你可以使用你的主域名。不要忘记在DNS记录管理器中为域名设置DNS记录。还要注意,文档根目录区分大小写。 服务器{listen 80;server_name tube.yourdomain.com;root/var/www/YouPHPTube;index index.php index.html index.htm;charset utf-8;客户端_max_body_size 2G;access_log/var/log/nginx/YouPHPTube.access.log;error_log/var/log/nginx/YouPHPTube.error.log;location~/.php${fastcgi_分割路径_info^(+/.php)(/)$; fastcgi_pass unix:/run/php/php7。3-fpm。短袜fastcgi_索引。php;包括fastcgi_参数;fastcgi_参数脚本_文件名$document_root$fastcgi_脚本_name;}#在中翻译Apache重写规则。htaccess文件到Nginx重写规则位置/{rewrite^/$/view/last;}位置/引导{rewrite^/bootstrap/(.+)$/view/bootstrap/$1 last;}location/js{rewrite^/js/(.+)$/view/js/$1 last;}位置/css{rewrite^/css/(.+)$/view/css/$1 last;}位置/img{rewrite^/img/(.+)$/view/img/$1 last;}位置/页面{rewrite^/page/([0-9]+)/?$/view/?page=$1 last;}位置/videoOnly{rewrite^/videoOnly/?$/view/?type=video last;}位置/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=/sendmail{rewrite^(.*)$/objects/sendmail.json.php last;}location=/captcha{rewrite^(.*)$/objects/getCaptcha.php last;}位置/监视器{rewrite^/monitor/(.+)$/objects/ServerMonitor/$1 last;}位置/cat{rewrite^/cat/([A-Za-z0-9-]+)/?$/view/?catName=$1 last;}位置/视频{rewrite^/video/([A-Za-z0-9-.]+)/?$/查看/?videoName=$1 last;}位置/视频嵌入{rewrite^/videoembedded/([A-Za-z0-9-.]+)/?$/查看/视频嵌入。php?videoName=$1 last;}location=/upload{rewrite^(.*)$/view/mini upload form/last;}location=/fileUpload{rewrite^(.*)$/view/mini upload form/upload.php last;}location/uploadStatus{rewrite^/uploadStatus/view/mini upload form/videoConversionStatus.php last;}location=/user{rewrite^(.*)$/view/user.php last;}location=/users{rewrite^(.*)$/view/managerUsers.php last;}位置=/用户。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;}位置=/类别。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;}地点=/视频。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=/loke{rewrite^(.*)$/objects/like.json.php?like=-1 last;}位置/更新{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;}位置=/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;}位置=/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;}位置=/upload/youtubeDl。json{rewrite^(.*)$/upload/view/youtubeDl.json.php last;}位置=/upload/send。json{rewrite^(.*)$/upload/view/send.json.php last;}位置=/上传/拖缆。json{rewrite^(.*)$/upload/view/streamers.json.php last;}位置=/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;}位置/上传/{rewrite“^/getImage/([A-Za-z0-9=/]+)/([A-Za-z0-9]{3})$”/upload/objects/getImage。php?base64Url=$1&格式=上次2美元;重写“^/getImageMP4/([A-Za-z0-9=/]+)/([A-Za-z0-9]{3})/([0-9.]+)$”/上传/objects/getImageMP4。php?base64Url=$1&格式=$2&时间=上次3美元;}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重新加载nginx 现在参观地铁。你的地盘。com,您将被重定向到安装向导页面(tube.yourdomain.com/install/index.php)。在安装向导中输入任何信息之前,我们需要启用HTTPS。 步骤5:启用HTTPS 为了加密HTTP流量,我们可以通过安装Let's encrypt颁发的免费TLS证书来启用HTTPS。运行以下命令在Debian 10 Buster服务器上安装Let's Encrypt client(certbot)。 sudo apt安装certbot 如果使用Apache,还需要安装Certbot Apache插件。 sudo apt安装python3 certbot apache 并运行此命令以获取并安装TLS证书。 sudo certbot--apache--agree tos--redirect--hsts--StapleOCSP--email[email ;protected]-d tube。你的地盘。通用域名格式 如果使用Nginx,请安装Certbot Nginx插件。 sudo apt安装python3 certbot nginx 接下来,运行以下命令获取并安装TLS证书。 sudo certbot--nginx--agree tos--redirect--hsts--stype ocsp--email[email ;protected]-d tube。你的地盘。通用域名格式 哪里 --nginx:使用nginx插件。 --apache:使用apache插件。 --同意:同意服务条款。 --重定向:通过301重定向强制HTTPS。 --hsts:为每个HTTP响应添加严格的传输安全头。强制浏览器始终对域使用TLS。防止SSL/TLS剥离。 --装订ocsp:启用ocsp装订。有效的OCSP响应被绑定到服务器在TLS期间提供的证书上。 现在应获得证书并自动安装。 第6步:使用安装向导完成安装 现在去看电视。你的地盘。com和安装向导将出现。在左侧,您可以看到服务器是否满足要求。 如果使用Nginx,可以忽略以下消息。 您的服务器是nginx/1.14.2,必须安装Apache。 如您所见,PHP post_max_大小应至少为100M,upload_max_文件大小应至少为100M。我们需要编辑php。ini文件来更改这两个值。如果使用ApacheWeb服务器,那么 sudo nano/etc/php/7.3/apache2/php。伊尼 如果将Nginx与PHP-FPM一起使用,则需要编辑PHP的FPM版本。ini文件。 sudo nano/etc/php/7.3/fpm/php。伊尼 找到下面两行。 post_max_size=8M上传_max_filesize=2M 根据要上传的视频文件大小更改值。例如,如果允许上传1G视频文件,则 post_max_size=1024M上传_max_filesize=1024M 保存并关闭文件。重新启动Apache以使更改生效。 sudo systemctl重启apache2 如果将Nginx与PHP-FPM一起使用,则重新启动PHP-FPM。 sudo systemctl重新启动php7。3-fpm 现在刷新YouPHPTube安装向导页面。你的服务器应该通过所有要求。现在在右边,你可以输入你的视频网站的标题。输入之前创建的YouPHPTube数据库名称、用户和密码。(注意:应该使用主数据库,而不是编码器数据库。还要注意区分大小写。)并设置系统管理员密码。   单击立即安装按钮,YouPHPTube应该安装成功。 现在我们需要删除/var/www/YouPHPTube/install/目录。 sudo rm/var/www/YouPHPTube/install/-r 单击转到主页按钮,您将看到YouPHPTube主页。 您可以单击左侧的下拉菜单,以管理员用户身份登录,并使用刚才设置的密码。 第7步:设置编码器 去https://tube.yourdomain.com/upload/.您将被重定向到编码器设置向导。如果没有自动重定向,则可以手动输入安装向导URL。 https://tube.yourdomain.com/upload/install/index.php/ 左侧将显示服务器是否满足YouPHPTube编码器的要求。 如果使用Nginx,可以忽略以下消息。 您的服务器是nginx/1.14.2,必须安装Apache。 如您所见,PHP最大执行时间应至少为7200,PHP内存限制应至少为512M。我们需要编辑php。ini文件来更改这两个值。如果使用ApacheWeb服务器,那么 sudo nano/etc/php/7.3/apache2/php。伊尼 如果将Nginx与PHP-FPM一起使用,则需要编辑PHP的FPM版本。ini文件。 sudo nano/etc/php/7.3/fpm/php。伊尼 找到下面两行。 最大执行时间=30内存限制=128M 更改值。 最大执行时间=7200内存限制=512M 请注意,如果稍后的视频编码中途停止,则需要增加最大执行时间,或升级CPU。 保存并关闭文件。重新启动Apache以使更改生效。 sudo systemctl重启apache2 如果将Nginx与PHP-FPM一起使用,则重新启动PHP-FPM。 sudo systemctl重启php7。3-fpm 现在刷新YouPHPTube编码器安装向导页面。你的服务器应该通过所有要求。现在,在右侧,您需要输入之前创建的YouPHPTubeEncoder数据库名称、用户和密码。注意区分大小写,并输入拖缆站点的管理员密码。   单击立即安装按钮,将安装YouPHPTube编码器。 删除安装目录。 sudo rm/var/www/YouPHPTube/upload/install/-r 然后转到主页。 第8步:更改编码器URL 默认情况下,YouPHPTube使用公共编码器上传视频。要使用自己的编码器,请在YouPHPTube(而不是YouPHPTube encoder)中以管理员身份登录,然后从左侧管理面板转到管理面板。 转到设置->网站设置->高级配置。将编码器URL更改为https://tube.yourdomain.com/upload/.保存设置,清除缓存目录并生成新的站点地图。 现在退出并重新登录。如果你点击右上角的“视频和音频编码”按钮,你将被带到自己的编码器上传视频。需要注意的是,编码速度取决于服务器的CPU能力。 第9步:配置SMTP 要发送电子邮件(如帐户注册、密码重置等),需要配置SMTP服务器。如果您想使用自己的邮件服务器向客户发送电子邮件,请查看以下文章以设置自己的邮件服务器。 如何使用Modoboa在Debian 9上快速设置电子邮件服务器 如果你想使用SMTP中继服务,我推荐Mailjet。您可以按照下面的教程在YouPHPTube服务器上设置SMTP中继。 如何使用Mailjet在Debian上设置Postfix SMTP中继 启用TCP BBR 对于视频流服务器,建议按照本文中的说明在Linux内核中启用TCP BBR拥塞控制算法。(它是为Ubuntu编写的,但也适用于Debian 10 Buster。) 如何通过启用TCP BBR轻松提升Ubuntu 16.04/18.04网络性能 移动应用 你可以在谷歌Play Store或苹果商店的YPT Mobile上搜索YouPHPTube,下载免费的android应用程序或iOS应用程序。白标移动应用需要付费许可证。 故障排除 如果YouPHPTube主页未能加载一些CSS和JavaScript资源, 很可能您在Apache或Nginx虚拟主机文件中为web根目录添加了额外的正斜杠。而不是使用 DocumentRoot/var/www/YouPHPTube/ 你应该使用 DocumentRoot/var/www/YouPHPTube 如果编码器工作不正常,可以在/var/www/YouPHPTube/upload/videos/YouPHPTube上查看日志文件。日志 其他花絮 编码视频时,可以选择分辨率(低分辨率、SD分辨率、HD分辨率)。如果您将YouPHPTube用作个人视频流网站,我建议您选择高清分辨率,这样可以减少编码时间并节省磁盘空间。如果已经将视频编码为所有3种分辨率,则可以转到YouPHPTube视频目录(/var/www/YouPHPTube/videos),删除低分辨率和SD分辨率的视频。 cd/var/www/YouPHPTube/videos/sudo rm*Low。mp4 sudo rm*SD。mp4 如何从视频网站下载所有视频 您可以使用youtube dl命令行实用程序下载所有视频。首先,你需要进入YouPHPTube仪表板,然后进入视频列表页面并向下滚动到底部,单击下载你的视频列表(permalink.txt文件)按钮。您将看到所有视频的URL列表。 接下来,打开一个终端,用文本编辑器创建一个txt文件,从网页复制URL并粘贴到文件中。然后可以运行以下命令下载视频。替换视频列表。使用您自己的文件名。 youtube dl-视频列表。txt 收尾 我希望本教程能帮助您在Debian 10 Buster服务器上安装YouPHPTube。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.22 浏览:353
  • 如何在Ubuntu 18.04服务器上安装AVideo/YouPHPTube

    本教程将向您展示如何在Ubuntu18.04上使用AVideo(以前的YouPHPTube)运行自己的视频共享网站。AVideo是YouTube、Vimeo等视频共享网站的开源自托管替代品。有了AVideo,用户可以将视频上传到服务器并与互联网共享。 AVideo功能 无限和同步的直播流,你可以有无限的用户连接到每个直播流。 直接从互联网导入和编码其他网站的视频 从本地视频目录批量编码 制作私人视频 与Youtube完全集成,将视频与Youtube同步 将多种格式的多媒体文件转换为MP4、WebM和MP3文件 支持Amazon S3(简单存储服务) 响应性网站布局。AVideo在任何设备上都令人难以置信。(您可以选择YouTube或Netfilx样式的布局。) 用户频道和用户播放列表 订阅你喜欢的频道 您可以使用AVideo Statistics中的最新指标和报告监控视频的性能。 使用插件扩展站点功能。 搜索引擎优化 iOS和安卓应用可用 AVideo服务器要求 首先,你应该知道,对于视频共享网站来说,单核CPU是不可行的,因为编码过程会占用大量CPU资源。 然后根据站点的用户数量选择服务器规格。 如果你只想用它来分享你自己的视频,你需要一个至少有2个CPU核和4GB内存的服务器。您可以从Contabo购买功能强大的VPS(虚拟专用服务器),成本很低。 如果你希望你的站点有几十个用户,那么你可以考虑Cababo特大VPS,它有10个CPU内核,60GB RAM,1Gb/s端口速度,1.6TB磁盘空间,无限流量,但成本只有26.99欧元/月。 当你的站点增长超过这个范围时,你应该购买一台专用服务器。 在Ubuntu 18.04上安装AVideo的软件要求 AVideo需要PHP和MySQL/MariaDB。要学习本教程,您应该已经设置了灯堆栈或LEMP堆栈。如果您更喜欢使用ApacheWeb服务器,请安装LAMP堆栈。 如何在Ubuntu 18.04上安装LAMP(Apache、MariaDB、PHP)堆栈 如果您更喜欢使用Nginx web服务器,请安装LEMP stack。 如何在Ubuntu18.04上安装LEMP(Nginx、MariaDB、PHP)堆栈 注:AVideo对Nginx的支持只是实验性的。如果使用Nginx,您的网站可能会出现问题。 你还需要一个域名。我在namescape注册了我的域名,因为价格低廉,而且他们终身免费保护whois的隐私。 AVideo由两部分组成。 主要部分是前端流服务器,它允许用户观看现有的视频。 另一部分是编码器,它允许用户上传他们的视频。 公共编码器使用域名https://encoder1.avideo.com.如果你不想让用户在上传视频时离开你的网站,你需要设置你的私人编码器。在本文中,我将向您展示如何进行。不用麻烦了,我们开始吧。 第一步:在Ubuntu 18.04服务器上下载AVideo 通过SSH登录Ubuntu 18.04服务器。然后转到web根目录。 cd/var/www/ 从Github克隆AVideo streamer存储库。 sudo apt安装git sudo git clonehttps://github.com/WWBN/AVideo.git 然后进入目录。 cd-AVideo/ 从Github克隆AVideo编码器存储库。 sudo git克隆https://github.com/WWBN/AVideo-Encoder.git 它将被保存为AVideo编码器。我们将其重命名为upload,以便用户在上传视频时更好地了解此URL的用途。 sudo mv AVideo编码器上传 接下来,我们需要将www数据(web服务器用户)作为web根的所有者。 sudo chown www-data:www-data/var/www/AVideo/-R 第2步:安装依赖项 AVideo使用FFmpeg对视频进行编码。我们可以从默认的Ubuntu存储库轻松安装FFmpeg。 sudo apt安装ffmpeg 要在多媒体文件中读写元信息,我们需要安装libimage exiftool perl包。 sudo apt安装libimage exiftool perl 您还需要安装一些常见的PHP扩展。 sudo apt安装php7。2-cli php7。2-常见php7。2-json php7。2-opcache php7。2-readline php7。2-卷曲php7。2-gd php7。2-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。 @每日sudo-H pip3安装——升级youtube dl&gt/dev/null 第3步:在MariaDB中创建数据库和用户 在创建数据库和用户之前,我们需要更改MariaDB中的一些设置。编辑配置文件。 sudo nano/etc/mysql/mariadb。conf.d/50-server。cnf AVideo将在数据库中使用大索引键前缀。然而,MariaDB 10.1使用紧凑的行格式,不支持大索引键前缀。我们可以通过在文件的[mysqld]单元下的InnoDB部分中添加以下行,将MariaDB配置为使用动态行格式,这是较新版本的MariaDB中的默认设置。 #羚羊文件格式不支持动态行格式,我们必须使用#梭鱼文件格式。innodb_file_format=Barracuda innodb_file_format_max=Barracuda#只有当innodb_file_per_table设置为ON时,才支持动态行格式。innodb_file_per_table=ON#将动态设置为默认行格式,支持大索引键前缀。innodb_默认_行_格式=动态#启用大前缀innodb_大_前缀=打开 保存并关闭文件。然后重启MariaDB。 sudo systemctl重新启动mariadb 使用以下命令登录MariaDB数据库服务器。由于MariaDB现在使用unix_socket插件来验证用户登录,因此无需输入MariaDB根密码。我们只需要在mysql命令前面加上sudo。 sudo mysql 然后为AVideo创建一个数据库。本教程将数据库命名为AVideo。你可以用任何你喜欢的名字。 创建数据库AVideo; 创建数据库用户。同样,您可以使用此用户的首选名称。用首选密码替换密码。 创建用户AVideo@localhost由“您的密码”标识; 授予此用户在AVideo数据库上的所有权限。 授予AVideo的所有特权。*到AVideo@localhost; 我们还需要为编码器创建一个单独的数据库。 创建数据库; 为此数据库创建一个用户。 创建用户AVideoEncoder@localhost由“您的密码”标识; 授予特权。 授予AVideoEncoder上的所有权限。*到AVideoEncoder@localhost; 刷新特权表并退出。 同花顺特权;出口 第4步:设置Web服务器 我们可以使用Apache或Nginx web服务器。 阿帕奇 如果您喜欢Apache,可以使用命令行文本编辑器(如Nano)为AVideo创建一个虚拟主机文件。 sudo nano/etc/apache2/网站可用/avideo。形态 将以下文本放入文件中。用实际数据替换红色文本。我在本教程中使用了一个子域。如果你愿意,你可以使用你的主域名。不要忘记在DNS记录管理器中为域名设置DNS记录。另外,请注意文档根目录区分大小写,不应在末尾添加正斜杠。 <虚拟主机*:80>服务器名管。你的地盘。com DocumentRoot/var/www/AVideo<目录/var/www/AVideo>目录索引。php选项+FollowSymLinks AllowOverride All需要全部授予&lt/目录>ErrorLog${APACHE_LOG_DIR}/avideo。错误log CustomLog${APACHE_log_DIR}/avideo。通道日志合并&lt/VirtualHost> 保存并关闭文件。然后启用这个虚拟主机。 sudo a2ensite avideo。形态 我们需要启用重写模块。 sudo a2enmod重写 重新启动Apache以使更改生效。 sudo systemctl重启apache2 现在参观地铁。你的地盘。com,您将被重定向到安装向导页面(tube.yourdomain.com/install/index.php)。如果看到的是默认的Apache页面而不是安装向导,则需要禁用默认的虚拟主机。 sudo A2000默认值。形态 然后重启Apache。 在安装向导中输入任何信息之前,我们需要启用HTTPS。 Nginx 如果你更喜欢Nginx,那就创建一个avideo。conf文件位于/etc/nginx/conf.d/目录中。 sudo nano/etc/nginx/conf.d/avideo。形态 将以下文本放入文件中。用实际数据替换红色文本。我在本教程中使用了一个子域。如果你愿意,你可以使用你的主域名。不要忘记在DNS记录管理器中为域名设置DNS记录。另外,请注意文档根目录区分大小写。 服务器{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/nginx/AVideo.error.log;location~/.php${fastcgi_split_path_info^(+/.php)$; fastcgi_pass unix:/run/php/php7。2-fpm。短袜fastcgi_索引。php;包括fastcgi_参数;fastcgi_参数脚本_文件名$document_root$fastcgi_脚本_name;}#在中翻译Apache重写规则。htaccess文件到Nginx重写规则位置/{rewrite^/$/view/last;}位置/引导{rewrite^/bootstrap/(.+)$/view/bootstrap/$1 last;}location/js{rewrite^/js/(.+)$/view/js/$1 last;}位置/css{rewrite^/css/(.+)$/view/css/$1 last;}位置/img{rewrite^/img/(.+)$/view/img/$1 last;}位置/页面{rewrite^/page/([0-9]+)/?$/view/?page=$1 last;}位置/videoOnly{rewrite^/videoOnly/?$/view/?type=video last;}位置/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=/sendmail{rewrite^(.*)$/objects/sendmail.json.php last;}location=/captcha{rewrite^(.*)$/objects/getCaptcha.php last;}位置/监视器{rewrite^/monitor/(.+)$/objects/ServerMonitor/$1 last;}位置/cat{rewrite^/cat/([A-Za-z0-9-]+)/?$/view/?catName=$1 last;}位置/视频{rewrite^/video/([A-Za-z0-9-.]+)/?$/查看/?videoName=$1 last;}位置/视频嵌入{rewrite^/videoembedded/([A-Za-z0-9-.]+)/?$/视图/视频嵌入。php?videoName=$1 last;}location=/upload{rewrite^(.*)$/view/mini upload form/last;}location=/fileUpload{rewrite^(.*)$/view/mini upload form/upload.php last;}location/uploadStatus{rewrite^/uploadStatus/view/mini upload form/videoConversionStatus.php last;}location=/user{rewrite^(.*)$/view/user.php last;}location=/users{rewrite^(.*)$/view/managerUsers.php last;}位置=/用户。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;}位置=/类别。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;}地点=/视频。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=/loke{rewrite^(.*)$/objects/like.json.php?like=-1 last;}位置/更新{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;}位置=/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;}位置=/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;}位置=/upload/youtubeDl。json{rewrite^(.*)$/upload/view/youtubeDl.json.php last;}位置=/upload/send。json{rewrite^(.*)$/upload/view/send.json.php last;}位置=/上传/拖缆。json{rewrite^(.*)$/upload/view/streamers.json.php last;}位置=/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;}位置/上传/{rewrite“^/getImage/([A-Za-z0-9=/]+)/([A-Za-z0-9]{3})$”/upload/objects/getImage。php?base64Url=$1&格式=上次2美元;重写“^/getImageMP4/([A-Za-z0-9=/]+)/([A-Za-z0-9]{3})/([0-9.]+)$”/上传/objects/getImageMP4。php?base64Url=$1&格式=$2&时间=上次3美元;}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重新加载nginx 现在参观地铁。你的地盘。com,您将被重定向到安装向导页面(tube.yourdomain.com/install/index.php)。在安装向导中输入任何信息之前,我们需要启用HTTPS。 第5步:启用HTTPS 为了加密HTTP流量,我们可以通过安装Let's encrypt颁发的免费TLS证书来启用HTTPS。运行以下命令在Ubuntu18.04服务器上安装Let's Encrypt client(certbot)。 sudo apt安装certbot 如果使用Apache,还需要安装Certbot Apache插件。 sudo apt安装python3 certbot apache 并运行此命令以获取并安装TLS证书。 sudo certbot--apache--agree tos--redirect--hsts--StapleOCSP--email[email protected]-d tube。你的地盘。通用域名格式 如果使用Nginx,请安装Certbot Nginx插件。 sudo apt安装python3 certbot nginx 接下来,运行以下命令获取并安装TLS证书。 sudo certbot--nginx--agree tos--redirect--hsts--stype ocsp--email[email protected]-d tube。你的地盘。通用域名格式 哪里 --nginx:使用nginx插件。 --apache:使用apache插件。 --同意:同意服务条款。 --重定向:通过301重定向强制HTTPS。 --hsts:为每个HTTP响应添加严格的传输安全头。强制浏览器始终对域使用TLS。防止SSL/TLS剥离。 --装订ocsp:启用ocsp装订。有效的OCSP响应被绑定到服务器在TLS期间提供的证书上。 现在应获得证书并自动安装。 第6步:使用安装向导完成安装 现在去看电视。你的地盘。com/install/index。php和安装向导将出现。在左侧,您可以看到服务器是否满足要求。 如果使用Nginx,可以忽略以下消息。 您的服务器是nginx/1.14.2,必须安装Apache。 如您所见,PHP post_max_大小应至少为100M,upload_max_文件大小应至少为100M。我们需要编辑php。ini文件来更改这两个值。如果使用ApacheWeb服务器,那么 sudo nano/etc/php/7.2/apache2/php。伊尼 如果将Nginx与PHP-FPM一起使用,则需要编辑PHP的FPM版本。ini文件。 sudo nano/etc/php/7.2/fpm/php。伊尼 找到下面两行。 post_max_size=8M上传_max_filesize=2M 根据要上传的视频文件大小更改值。例如,如果允许上传1G视频文件,则 post_max_size=1024M上传_max_filesize=1024M 保存并关闭文件。重新启动Apache以使更改生效。 sudo systemctl重启apache2 如果将Nginx与PHP-FPM一起使用,则重新启动PHP-FPM。 sudo systemctl重启php7。2-fpm 现在刷新AVideo安装向导页面。你的服务器应该通过所有要求。现在,在右侧,您可以输入视频网站的标题,并设置系统管理员密码。输入之前创建的AVideo数据库名称、用户和密码。(注意:应该使用主数据库,而不是编码器数据库。还要注意区分大小写。)   单击“立即安装”按钮,AVideo应该已成功安装。 现在我们需要删除/var/www/AVideo/install/目录。 sudo rm/var/www/AVideo/install/-r 单击转到主页按钮,您将看到AVideo主页。 您可以单击左侧的下拉菜单,以管理员用户身份登录,并使用刚才设置的密码。 第7步:设置编码器 去https://tube.yourdomain.com/upload/.您将被重定向到编码器设置向导。如果没有自动重定向,则可以手动输入安装向导URL。 https://tube.yourdomain.com/upload/install/index.php/ 左侧将显示您的服务器是否满足AVideo编码器的要求。 如果使用Nginx,可以忽略以下消息。 您的服务器是nginx/1.14.2,必须安装Apache。 如您所见,PHP最大执行时间应至少为7200,PHP内存限制应至少为512M。我们需要编辑php。ini文件来更改这两个值。如果使用ApacheWeb服务器,那么 sudo nano/etc/php/7.2/apache2/php。伊尼 如果将Nginx与PHP-FPM一起使用,则需要编辑PHP的FPM版本。ini文件。 sudo nano/etc/php/7.2/fpm/php。伊尼 找到下面两行。 最大执行时间=30内存限制=128M 更改值。 最大执行时间=7200内存限制=512M 请注意,如果稍后的视频编码中途停止,则需要增加最大执行时间,或升级CPU。 保存并关闭文件。重新启动Apache以使更改生效。 sudo systemctl重启apache2 如果将Nginx与PHP-FPM一起使用,则重新启动PHP-FPM。 sudo systemctl重启php7。2-fpm 现在刷新AVideo编码器安装向导页面。你的服务器应该通过所有要求。现在,在右侧,您需要输入之前创建的AVideoEncoder数据库名称、用户和密码。注意区分大小写,并输入拖缆站点的管理员密码。   单击“立即安装”按钮,将安装AVideo编码器。 删除安装目录。 sudo rm/var/www/AVideo/upload/install/-r 然后转到主页。 第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在Ubuntu18.04上轻松设置电子邮件服务器 如果你想使用SMTP中继服务,我建议使用Mailjet。您可以按照下面的教程在AVideo服务器上设置SMTP中继。 如何使用Mailjet在Ubuntu上设置后缀SMTP中继 您可以通过进入管理面板测试电子邮件发送->设置->网站设置->高级配置,您可以找到SMTP配置。使用以下设置。 启用SMTP。 启用SMTP验证。 在SMTP安全中使用tls。 使用587作为SMTP端口。 输入邮件服务器的主机名。 输入SMTP用户名和密码。 单击“保存”按钮保存设置,然后单击“测试电子邮件”查看其是否工作。   启用TCP BBR 对于视频流服务器,建议按照本文中的说明在Linux内核中启用TCP BBR拥塞控制算法。 如何通过启用TCP BBR轻松提升Ubuntu网络性能 移动应用 你可以在谷歌Play Store上搜索AVideo,或在Apple Store上搜索YPT Mobile,下载免费的android应用程序或iOS应用程序。白标移动应用需要付费许可证。 故障排除 如果你的AVideo主页未能加载一些CSS和JavaScript资源, 很可能您在Apache或Nginx虚拟主机文件中为web根目录添加了额外的正斜杠。而不是使用 DocumentRoot/var/www/AVideo/ 你应该使用 DocumentRoot/var/www/AVideo 如果主网站工作不正常,可以查看日志文件/var/www/AVideo/videos/AVideo。日志如果编码器工作不正常,可以在/var/www/AVideo/upload/videos/AVideo上查看日志文件。日志 其他花絮 编码视频时,可以选择分辨率(低分辨率、SD分辨率、HD分辨率)。如果你使用AVideo作为个人视频流网站,我建议你只选择高清分辨率,以减少编码时间和节省磁盘空间。如果您已经将视频编码为所有3种分辨率,则可以转到AVideo视频目录(/var/www/AVideo/videos),删除低分辨率和SD分辨率的视频。 cd/var/www/AVideo/videos/sudo rm*低。mp4 sudo rm*SD。mp4 如何从视频网站下载所有视频 您可以使用youtube dl命令行实用程序下载所有视频。首先,你需要转到AVideo dashboard,然后转到视频列表页面并向下滚动到底部,单击下载视频列表(permalink.txt文件)按钮。您将看到所有视频的URL列表。 接下来,打开一个终端,用文本编辑器创建一个txt文件,从网页复制URL并粘贴到文件中。然后可以运行以下命令下载视频。替换视频列表。使用您自己的文件名。 youtube dl-视频列表。txt 收尾 我希望本教程能帮助您在Ubuntu 18.04服务器上安装AVideo。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.23 浏览:220