流媒体播放服务器如何安装?

想在centos7.9上安装一套流媒体播放服务器,调用阿里云的OSS进行播放管理,百度了一下,发现大部分资料都没有提及防盗链的方面的设置,也没有提及如何调用阿里云的OSS资源,求详细的配置步骤(用rtsp的吧,这个比较熟悉),这个估计得远程,请有兴趣的私信联系下,预计本周六日开干,谢谢各位!

所以你的诉求都有哪些?

  1. 搭建一个rtsp的流媒体服务器
  2. 你推流的资源来自阿里云的oss吗?如果是你是通过rtmp推流端推送还是其他服务来推?最好具体一点

题主,这个问题我来替你解决(参考结合AI智能、文心一言),若有帮助,还望采纳,点击回答右侧采纳即可。


要在CentOS 7.9上安装一个流媒体播放服务器,你可以考虑使用NGINX和FFmpeg库来实现这一目标。下面是具体的配置步骤:

1.安装NGINX和FFmpeg库

sudo yum install epel-release -y
sudo rpm -Uvh https://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
sudo yum install nginx -y
sudo yum install ffmpeg ffmpeg-devel -y

2.配置NGINX

在NGINX的配置文件/etc/nginx/nginx.conf中添加以下内容:

rtmp {
    server {
        listen 1935;
        chunk_size 8192;

        application live {
            live on;
            record off;
            push rtmp://your-oss-url.com/app/{stream_key};
        }
    }
}

http {
    server {
        listen 80;
        server_name your-domain-name.com;

        location /live {
            add_header Cache-Control no-cache;
            #limit_conn addr 1;
            #limit_rate 1024k;
            #limit_rate_after 500m;
            #limit_req zone=one burst=10 nodelay;

            # Serve HLS fragments
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            root /mnt/;
            add_header Access-Control-Allow-Origin *;

            # CORS on live stream
            add_header 'Access-Control-Allow-Origin' '*' always;
            if ($request_method = 'OPTIONS') {
                add_header 'Access-Control-Allow-Origin' '*';
                add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
                #
                # Custom headers and headers various browsers *should* be OK with but aren't
                #
                add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';

                #
                # Tell client that this pre-flight info is valid for 20 days
                #
                add_header 'Access-Control-Max-Age' 1728000;
                add_header 'Content-Type' 'text/plain; charset=utf-8';
                add_header 'Content-Length' 0;
                return 204;
            }

            location /live {
                add_header Cache-Control no-cache;
                #limit_conn addr 1;
                #limit_rate 1024k;
                #limit_rate_after 500m;
                #limit_req zone=one burst=10 nodelay;

                # Serve HLS fragments
                types {
                    application/vnd.apple.mpegurl m3u8;
                    video/mp2t ts;
                }
                root /mnt/;
                add_header Access-Control-Allow-Origin *;

                # CORS on live stream
                add_header 'Access-Control-Allow-Origin' '*' always;
                if ($request_method = 'OPTIONS') {
                    add_header 'Access-Control-Allow-Origin' '*';
                    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
                    #
                    # Custom headers and headers various browsers *should* be OK with but aren't
                    #
                    add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';

                    #
                    # Tell client that this pre-flight info is valid for 20 days
                    #
                    add_header 'Access-Control-Max-Age' 1728000;
                    add_header 'Content-Type' 'text/plain; charset=utf-8';
                    add_header 'Content-Length' 0;
                    return 204;
                }

                # Serve index of recordings
                index index.html;

                # Enable buffering of responses
                #proxy_buffering on;

                # Serve HLS fragments
                types {
                    application/vnd.apple.mpegurl m3u8;
                    video/mp2t ts;
                }
                root /mnt/;
                add_header Access-Control-Allow-Origin *;

                # CORS on live stream
                add_header 'Access-Control-Allow-Origin' '*' always;
                if ($request_method = 'OPTIONS') {
                    add_header 'Access-Control-Allow-Origin' '*';
                    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
                    #
                    # Custom headers and headers various browsers *should* be OK with but aren't
                    #
                    add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';

                    #
                    # Tell client that this pre-flight info is valid for 20 days
                    #
                    add_header 'Access-Control-Max-Age' 1728000;
                    add_header 'Content-Type' 'text/plain; charset=utf-8';
                    add_header 'Content-Length' 0;
                    return 204;
                }

                # Enable buffering of responses
                #proxy_buffering on;

                # Serve HLS fragments
                types {
                    #application/x-mpegurl m3u8;
                    application/vnd.apple.mpegurl m3u8;
                    video/mp2t ts;
                }
                root /mnt/;
                add_header Access-Control-Allow-Origin *;

                # CORS on live stream
                add_header 'Access-Control-Allow-Origin' '*' always;
                if ($request_method = 'OPTIONS') {
                    add_header 'Access-Control-Allow-Origin' '*';
                    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
                    #
                    # Custom headers and headers various browsers *should* be OK with but aren't
                    #
                    add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';

                    #
                    # Tell client that this pre-flight info is valid for 20 days
                    #
                    add_header 'Access-Control-Max-Age' 1728000;
                    add_header 'Content-Type' 'text/plain; charset=utf-8';
                    add_header 'Content-Length' 0;
                    return 204;
                }

                # Serve index of recordings
                index index.html;

                # Enable buffering of responses
                #proxy_buffering on;

                # Serve HLS fragments
                types {
                    #application/x-mpegurl m3u8;
                    application/vnd.apple.mpegurl m3u8;
                    video/mp2t ts;
                }

                # HLS playlist for live stream
                server {
                    listen 8080;
                    server_name your-domain-name.com;
                    location /hls {
                        add_header 'Cache-Control' 'no-cache';
                        add_header 'Access-Control-Allow-Origin' '*' always;
                        if ($request_method = 'OPTIONS') {
                            add_header 'Access-Control-Allow-Origin' '*';
                            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
                            #
                            # Custom headers and headers various browsers *should* be OK with but aren't
                            #
                            add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';

                            #
                            # Tell client that this pre-flight info is valid for 20 days
                            #
                            add_header 'Access-Control-Max-Age' 1728000;
                            add_header 'Content-Type' 'text/plain; charset=utf-8';
                            add_header 'Content-Length' 0;
                            return 204;
                        }
                        # Serve HLS fragments
                        types {
                            application/vnd.apple.mpegurl m3u8;
                            video/mp2t ts;
                        }
                        root /mnt/;
                        add_header Access-Control-Allow-Origin *;

                        # CORS on live stream
                        add_header 'Access-Control-Allow-Origin' '*' always;
                        if ($request_method = 'OPTIONS') {
                            add_header 'Access-Control-Allow-Origin' '*';
                            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
                            #
                            # Custom headers and headers various browsers *should* be OK with but aren't
                            #
                            add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';

                            #
                            # Tell client that this pre-flight info is valid for 20 days
                            #
                            add_header 'Access-Control-Max-Age' 1728000;
                            add_header 'Content-Type' 'text/plain; charset=utf-8';
                            add_header 'Content-Length' 0;
                            return 204;
                        }
                    }
                }
            }
        }
    }
}

3.配置OSS

在阿里云OSS中创建一个Bucket,然后在Bucket中创建一个文件夹app。在文件夹app的属性中,勾选“开启静态网站托管”,然后配置索引文档为index.html

4.启动NGINX

sudo systemctl start nginx

5.测试流媒体播放

用任何一个RTSP播放器连接到rtmp://your-server-ip:1935/live,然后在播放器中输入流媒体地址http://your-domain-name.com/live/hls/stream_key.m3u8。其中,stream_key是你的流媒体ID。

希望这一步骤对你有所帮助。

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
在CentOS 7.9上安装流媒体播放服务器并与阿里云的OSS进行集成涉及多个步骤。下面是一个详细的配置步骤,以使用RTSP协议为例:

  1. 安装流媒体服务器:

    • 安装Nginx服务器:在CentOS上安装Nginx作为流媒体服务器。您可以使用以下命令安装Nginx:
      sudo yum install nginx
      
    • 配置Nginx:编辑Nginx配置文件,指定流媒体相关设置。打开/etc/nginx/nginx.conf文件,并添加以下内容:
      rtmp {
          server {
              listen 1935;
              chunk_size 4096;
              
              application live {
                  live on;
                  record off;
              }
          }
      }
      
    • 保存并退出文件。然后重新启动Nginx服务:
      sudo systemctl restart nginx
      
  2. 配置防盗链:

    • 在Nginx配置中添加防盗链设置,以限制对流媒体资源的访问。在rtmp块内添加如下内容:
      application live {
          live on;
          record off;
          # 防盗链配置
          deny play all;
          allow play your_domain.com;  # 将 your_domain.com 替换为允许访问的域名
          # 其他防盗链规则
      }
      
    • 保存并退出文件。重新启动Nginx服务:
      sudo systemctl restart nginx
      
  3. 集成阿里云OSS:

    • 安装依赖库:使用以下命令安装Python的阿里云OSS SDK:
      sudo pip install oss2
      
    • 编写自定义脚本:根据您的需求,编写自定义的Python脚本来连接阿里云OSS并管理播放资源。您可以使用OSS的Python SDK来访问和操作OSS资源。以下是一个示例脚本,用于获取OSS上的文件列表:
      import oss2
      
      # 配置OSS连接信息
      access_key_id = 'your_access_key_id'
      access_key_secret = 'your_access_key_secret'
      endpoint = 'your_oss_endpoint'  # 如:oss-cn-hangzhou.aliyuncs.com
      bucket_name = 'your_bucket_name'
      
      # 连接OSS
      auth = oss2.Auth(access_key_id, access_key_secret)
      bucket = oss2.Bucket(auth, endpoint, bucket_name)
      
      # 获取文件列表
      for obj in oss2.ObjectIterator(bucket):
          print(obj.key)
      
    • 根据您的需求,编写其他自定义脚本和逻辑,以实现与阿里云OSS的更多交互功能。

请注意,上述步骤提供了一个基本的配置示例,您可以根据实际需求和环境进行相应的调整和优化。此外,确保在执行任何更改之前备份重要的配置文件。

关于防盗链和阿里云OSS更详细的配置和使用方法,建议您参考阿里云的官方文档和开发者指南,以获取更准确和最新的信息。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

参考gpt4:
结合自己分析给你如下建议:
在centos7.9上安装流媒体播放服务器,您可以选择使用SRS(Simple Realtime Server)或者Jellyfin等开源软件。SRS支持RTMP、HTTP-FLV、HLS、WebRTC等协议,Jellyfin支持跨平台和多种媒体格式。具体的安装方法,请参考以下链接:
CentOS7下使用SRS搭建流媒体服务器
CentOS7下搭建Jellyfin个人流媒体服务器
调用阿里云OSS进行播放管理,您需要先将您的视频文件上传到OSS,并设置相应的防盗链策略。OSS支持使用RTMP推流协议上传H264格式的视频数据和AAC格式的音频数据,并通过访问PlayURL地址的方式获取音视频数据。具体的上传和播放方法,请参考以下链接:
上传到阿里云OSS的视频如何实现在线播放
如何基于OSS构建HLS流
防盗链设置,您可以通过OSS的跨域资源共享、Referer白名单、私有Bucket签名机制等方式,来保护您的视频资源不被盗用或下载。具体的设置方法,请参考以下链接:
云点播 Key 防盗链
html5

引用 皆我百晓生 小程序回复内容作答:
安装流媒体播放服务器并调用阿里云OSS资源需要以下步骤:

  1. 安装操作系统:在CentOS 7.9上安装操作系统。

  2. 安装流媒体播放服务器:推荐使用Nginx和OpenResty来搭建流媒体播放服务器。具体安装步骤如下:

    • 安装Nginx:执行以下命令安装Nginx

      yum install nginx
      
    • 安装OpenResty:执行以下命令安装OpenResty

      yum install yum-utils
      yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo
      yum install openresty
      
    • 配置Nginx:

      • 打开Nginx配置文件 nginx.conf
        vi /etc/nginx/nginx.conf
        
      • 在http段落中添加以下配置:
        lua_package_path "/path/to/your/lua/script/?.lua;;";
        lua_package_cpath '/path/to/your/ffi/lua_script.so;;';
        
    • 配置OpenResty:

      • 打开OpenResty配置文件 nginx.conf
        vi /usr/local/openresty/nginx/conf/nginx.conf
        
      • 在http段落中添加以下配置:
        lua_package_path "/path/to/your/lua/script/?.lua;;";
        lua_package_cpath '/path/to/your/ffi/lua_script.so;;';
        
    • 重启Nginx和OpenResty:

      systemctl restart nginx
      systemctl restart openresty
      
  3. 配置防盗链:为了保护流媒体资源,可以使用防盗链来限制访问。在Nginx或OpenResty的配置文件中添加防盗链规则。具体配置方法可以参考官方文档或其他资料。

  4. 调用阿里云OSS资源:通过阿里云的SDK或API调用OSS资源。具体方法可以参考阿里云官方文档提供的示例代码。

以上是一个基本的流媒体播放服务器安装和配置的大致步骤。具体的安装和配置可能会因个人需求和环境而有所不同。如果需要远程安装和配置,建议联系有相关经验的专业人士或技术支持。

【以下回答由 GPT 生成】

首先,感谢您的提问。下面是在CentOS 7.9上安装流媒体播放服务器并调用阿里云的OSS进行播放管理的解决方案:

步骤一:安装流媒体播放服务器 1. 打开终端,并以root用户身份登录服务器。 2. 更新系统软件包:yum update -y。 3. 安装Nginx作为流媒体服务器:yum install nginx -y。 4. 配置Nginx,创建配置文件:vim /etc/nginx/conf.d/rtmp.conf。 5. 在rtmp.conf文件中,添加以下内容:

rtmp {
    server {
        listen 1935;
        application live {
            live on;
            # 设置防盗链规则,如需设置,请在此添加:
            # deny play ~^http://;
            # allow publish ip_address;
            allow play all;
            # 设置rtsp播放端口
            live on;
        }
    }
}
  1. 保存文件并退出vim编辑器。
  2. 启动Nginx服务:systemctl start nginx
  3. 配置开机自启:systemctl enable nginx

步骤二:调用阿里云的OSS进行播放管理 1. 在阿里云控制台上创建一个OSS桶,并上传您的媒体文件。 2. 创建OSS访问密钥(Access Key ID和Access Key Secret),并确保具有读取媒体文件的权限。

步骤三:使用Python代码调用阿里云的OSS进行播放管理 在CentOS上安装并配置Python环境后,可以使用以下示例代码调用阿里云的OSS进行播放管理。

import oss2
import subprocess

# 配置阿里云OSS
access_key_id = 'your_access_key_id'
access_key_secret = 'your_access_key_secret'
bucket_name = 'your_bucket_name'
endpoint = 'your_oss_endpoint'

# 创建OSS Auth
auth = oss2.Auth(access_key_id, access_key_secret)

# 创建Bucket对象
bucket = oss2.Bucket(auth, endpoint, bucket_name)

# 列出Bucket中的文件
for obj in oss2.ObjectIterator(bucket):
    print(obj.key)

# 播放媒体文件(示例使用VLC命令行播放器)
media_url = bucket.sign_url('GET', 'your_media_file_name', 3600)
subprocess.call(['vlc', media_url])

确保将'your_access_key_id','your_access_key_secret','your_bucket_name','your_oss_endpoint'等值替换为您自己的实际信息。

以上是在CentOS 7.9上安装流媒体播放服务器并调用阿里云的OSS进行播放管理的解决方案。如果您还有其他问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

安装 Nginx 安装 FFmpeg
为 Nginx 安装一些模块和扩展,以便它能够支持流媒体功能和防盗链。例如,你可以使用 ngx_http_secure_link_module 模块来实现防盗链。

# 下载 ngx_http_secure_link_module 模块
wget https://github.com/sto/ngx_http_secure_link_module/archive/master.zip
unzip master.zip

# 编译 Nginx 包括 ngx_http_secure_link_module 模块
./configure --add-module=ngx_http_secure_link_module-master
make
sudo make install
在 /etc/nginx/nginx.conf 或 /etc/nginx/conf.d/ 目录中创建一个配置文件,配置 Nginx 来监听流媒体请求,并设置防盗链。

以下是一个简单的 Nginx 配置示例:

```nginx

server {
    listen 80;
    server_name your-server.com;

    location / {
        alias /path/to/your/streaming/files;
    }

    location /secure/ {
        alias /path/to/secure/files;
        secure_link $arg_md5,$arg_expires;
        secure_link_md5 "$secure_link_expires$uri YOUR_SECRET_KEY";
        if ($secure_link = "") {
            return 403;
        }
    }
}


配置 FFmpeg
配置防盗链参数
完成配置后,重启 Nginx 以使更改生效

结合GPT给出回答如下请题主参考
安装流媒体播放服务器可以使用 Nginx + RTMP 方案,具体配置步骤如下:

  1. 安装必要的依赖

在 CentOS7.9 上安装流媒体播放服务器之前,需要先安装一些必要的依赖软件包。可以使用以下命令安装:

yum install -y epel-release
yum install -y nginx nginx-module-rtmp ffmpeg
  1. 配置 Nginx + RTMP

安装完成后,需要编辑 Nginx 配置文件 /etc/nginx/nginx.conf,添加 RTMP 配置。可以使用以下命令打开文件:

vim /etc/nginx/nginx.conf

在 http 部分添加以下内容:

rtmp {
    server {
        listen 1935; # RTMP 默认监听端口
        chunk_size 4000;

        application live {
            live on;
            record off;
            
            # 配置防盗链
            on_publish http://your_server/check_access.php;
            on_publish_done http://your_server/check_access.php;
            
            # 配置调用阿里云 OSS 资源
            hls on;
            hls_path /var/www/html/hls;
            hls_fragment 5s;
            hls_playlist_length 60s;
            hls_nested on;
            
            push rtmp://oss-cn-*.*.aliyuncs.com/your_oss_path/${app}/${name};
        }
    }
}

其中 on_publishon_publish_done 配置了防盗链,需要创建 check_access.php 文件进行验证。

hls 开启了 HLS 模块,配置了录制文件保存路径 hls_path,以及切片时长和切片列表长度。

push 配置了推送录制文件到阿里云 OSS。

  1. 创建验证脚本

创建 check_access.php 文件进行验证,可以使用以下命令创建:

vim /var/www/html/check_access.php

以下是一个简单的防盗链脚本示例:

<?php
$secret_key = 'your_secret_key'; // 设置密钥
if (empty($_REQUEST['name']) || empty($_REQUEST['app']) || empty($_REQUEST['key'])) {
    header('HTTP/1.1 403 Forbidden');
    exit;
}
if ($_REQUEST['key'] != md5($_REQUEST['app'].$_REQUEST['name'].$secret_key)) {
    header('HTTP/1.1 403 Forbidden');
    exit;
}
  1. 启动 Nginx

完成后保存配置文件,然后启动 Nginx:

systemctl start nginx
  1. 推流测试

可以使用 OBS 等推流软件进行推流测试,推流地址为:

rtmp://your_server/live/stream_key
  1. 播放测试

可以使用 VLC 等播放器进行播放测试,播放地址为:

http://your_server/hls/stream_key.m3u8

其中 stream_key 是推流时设置的流名称。

到此为止,流媒体播放服务器的安装和配置就完成了,希望对你有所帮助。

流媒体播放服务器安装步骤
1、先去vlc软件的官网下载软件。

2、然后一路next,安装完毕之后

3、打开“媒体->流”选项
4、添加上要播放的avi,再点击串流,表示流媒体播放

5、再点击下一步,这里我们以udp形式播放,再点击旁边的添加,这里是重要的一步,ip地址填写,你要推送到的客户端的ip地址,所以这个服务器,和这个ip最好处于同一网段。

6、选择转码,格式h264和mp3(ts),下一步

7、点击流,这里服务器就配置完成了

配置阿里云OSS来使用RTSP流媒体服务器。这涉及到创建存储桶、设置访问密钥、生成签名URL等步骤。具体操作步骤可以参考阿里云OSS官方文档。

参考gpt
安装流媒体播放服务器并配置防盗链和调用阿里云OSS资源需要一些复杂的配置步骤。以下是大致的步骤:

  1. 安装流媒体服务器:您可以选择Nginx、Apache、VLC等流媒体服务器。这里以Nginx为例进行说明。

    • 安装Nginx:在CentOS 7上,可以使用以下命令安装Nginx:

      sudo yum install epel-release
      sudo yum install nginx
      
    • 配置Nginx:编辑Nginx配置文件/etc/nginx/nginx.conf,添加rtsp配置,示例如下:

      rtmp {
          server {
              listen 1935;
              application myapp {
                  live on;
                  allow publish 127.0.0.1;
                  deny publish all;
                  allow play all;
              }
          }
      }
      
  2. 配置防盗链:防止未经授权的访问和盗链。

    • 在Nginx配置文件中添加防盗链规则,示例如下:
      location / {
          valid_referers none blocked *.example.com;
          if ($invalid_referer) {
              return 403;
          }
      }
      
  3. 调用阿里云OSS资源:您可以使用FFmpeg进行rtsp流转码,并将转码后的流上传到阿里云OSS。

    • 安装FFmpeg:在CentOS 7上,可以使用以下命令安装FFmpeg:

      sudo yum install ffmpeg
      
    • 使用FFmpeg进行rtsp流转码并上传到OSS:示例代码如下:

      ffmpeg -i rtsp://your_rtsp_stream -c:v libx264 -c:a aac -f flv rtmp://your_nginx_server/myapp/stream
      ossutil cp rtmp://your_nginx_server/myapp/stream oss://your_oss_bucket/your_oss_key
      

以上只是一个简单的示例,实际配置可能涉及更多细节和参数的调整。由于安装和配置流媒体服务器需要一些技术知识和经验,建议您咨询专业的运维开发人员进行远程指导和帮助。

在阿里云控制台中创建OSS存储空间,并上传你的媒体文件,获取OSS Bucket的访问密钥(Access Key)和访问密钥(Secret Key)

使用HTTPS协议来传输流媒体内容,确保数据传输的安全性,防止被中间人窃取或篡改。