存档

文章标签 ‘nginx’

Arch上配置nginx和其rmtp模块

2021年10月26日 1 条评论

年初买了一本书《直播系统开发:基于Nginx与Nginx-rtmp-module》,最近翻出来研究一下。

这本书里面的nginx和nginx-rtmp-module都是从头编译,不符合Arch人的逻辑,所以按照书里的思路,再Archlinux上重新搞一下。另外,研究了一下怎么从摄像头提取视频和音频。

首先是nginx的安装了配置。直接使用pacman –S nginx来安装nginx,然后用aur安装nginx-mod-rtmp。安装完成以后,需要编辑/etc/nginx/nginx.conf,在其第一行加入

load_module "/usr/lib/nginx/modules/ngx_rtmp_module.so";

然后加入在http段前面加入

rtmp {
    access_log off;
    server {
        listen 1935;
        application mylive {
            live on;
        }
    }
}

然后重启nginx。

这里面和书中的配置文件,主要不同在加了access_log off。我怀疑nginx-mod-rtmp的PKGBUILD文件关于access_log的默认配置有问题,导致不明确配置access_log的时候,会报/etc/nginx目录下没有权限生成access_log文件,并启动失败。好在我是在测试,直接关闭access_log就好了。这时nginx端就准备好了。

下面首先要下载一个windows下的ffmpeg的二进制包,然后先用下面命令获取ffmpeg可用的摄像头设备名称。

ffmpeg -list_devices true -f dshow -i dummy

然后会出现如下图的内容。途中上面的红框里面是摄像头的内设备名称,下面是音频输入设备名称。这两个名称可以直接使用。

未命名2

获取两个设备名以后,再用如下命令启动视频流上传:

ffmpeg -f dshow -i video="Integrated Camera" -f dshow -i audio="麦克风阵列 (Conexant SmartAudio HD)" -vcodec libx264 -acodec aac -strict -2 -f flv rtmp://nginx:1935/mylive/6

这里面nginx是我的虚机的名字,如果你没有配置winbind的话,可以改用ip。如果你设备名称不一样,可以自己替换。成功后,会看到PC上摄像头的工作灯点亮,命令行中中一直有信息更新。

然后打开VLC,如下图中,选择菜单中的“媒体->打开网络串流”。

未命名3

在弹出的对话框中,填入刚才ffmpeg发送视频流的url。

未命名4

VLC中大约会延迟3到5秒,等几秒以后,VLC就会开始工作。下图是我同事围观的时候,拍了一张照片。

未命名

和书中的例子相比,花了一下午的时间,才搞定。第一个坑是,网上很多人都是把mod-rtmp和nginx编译到一起了,找了半天才找到nginx怎么加载so形式的mod。第二个坑是上面access_log的问题。第三个坑是原书例子是使用的是一个flv文件,为了找flv视频,我找了好一会,后来又研究怎么抓本机的摄像头。

就这么多,希望对看到的朋友有帮助。

其实还有第四个坑,刚发布的时候,发现搬家以后的blog无法上传图片了,由搞了半天

分类: 未分类 标签: ,

用yum给centos7安装nginx

2017年8月21日 没有评论

最近使用阿里云上的centos7的时候,发现直接yum install的nginx版本比较低,鉴于我是新版本强迫症,研究了一下怎么用nginx预编译的包,而不是centos仓库自带的。如下

1.在/etc/yum.repos.d目录下创建nginx.repo文件,内容如下:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

2.再用yum install nginx的时候,可以看到已经是最新的版本了。

这样做的好处有几个,可以直接用systemctl来控制Nginx服务了,再有以后yum update也能跟着更新。

分类: Linux 标签: ,

今天闲的蛋疼给树莓派上nginx的默认页做压力测试

2017年2月11日 没有评论

树莓派2安装最新的ArchLinuxARM,然后安装标准的nginx。压力源使用VS2015中测试项目的WebLoadTest。

第一次没调nginx的工作进程数,第二次调成4个工作进程,于是…….真相如下:

7413978647@chatroom_1486811612135_38

7413978647@chatroom_1486811913517_83

最惨的是我自己的pc跑满了 0C915302

7413978647@chatroom_1486811501740_85

分类: Linux, Web 标签: ,