如何在nginx服务器上实现多媒体流的录制和转码

如何在nginx服务器上实现多媒体流的录制和转码,第1张

1、首先需要说明的是,不能用exec命令。他会在客户端推流结束的同时自动终止调用的外部程序,结果就是最后ffmpeg无法进行完整的编码。该命令只适合将接到的流转推到其他地址。

2、应该使用exec_record_done配合record命令使用。即在录制结束之后自动对已录制的文件进行转码操作得到MP4文件。根据是否使用record_interval命令又有两种不同的情况。

2A、若不使用record_interval,则会在推流停止后(即record完全停止后)才进行转码,在这之前得不到任何输出

2B、若使用record_interval,即可设置每隔一段时间就重新开始录制,结合record_append on命令,可确保最后录制的视频都在一个文件中,否则就会给每段录制都生成一个单独的文件。使用这两个命令之后,转码也会相应地每隔一段时间就进行一次,但最后都输出(覆盖)到同一个文件中。优点是能近乎“实时”地进行转码,缺点是会重复调用ffmpeg,占用系统资源。

3、需要注意的是,以上两种方法最后得到的转码文件(的时长)是相同的。

4、nginx.conf配置示例

[html] view plain copy

application hls {

live on

hls on

record all

record_path /home/zhanghui/test

#record_interval 10s

#record_append on

hls_path /tmp/app

hls_fragment 5s

# convert recorded file to mp4 format

exec_record_done '/usr/local/bin/ffmpeg' -y -i /home/zhanghui/test/livestream.flv -vcodec libx264 -f mp4 /home/zhanghui/test/test_record.mp4 2>>/home/zhanghui/test/test_record.log

}

Nginx是一个高性能的Web和反向代理服务器,它具有有很多非常优越的特性:

作为负载均衡服务器 :Nginx既可以在内部直接支持Rails和PHP,也可以支持作为HTTP代

服务器对外进行服务。Nginx用C编写,不论是系统资源开销还是CPU使用效率都比

Perlbal要好的多。

作为邮件代理服务器 :Nginx同时也是-一个非常优秀的邮件代理服务器(最早开发这个产品的目的之-也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。

Nginx安装非常的简单,配置文件非常简洁(还能够支持per语法),Bugs非 常少的服务器:

Nginx启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启

动。你还能够在不间断服务的情况下进行软件版本的升级。

处理静态文件,索引文件以及自动索引

反向代理加速(无缓存), 简单的负载均衡和容错

FastCGI,简单的负载均衡和容错

模块化的结构。过滤器包括gzipping, byte ranges, chunked responses,以及SSiI-ilter 。

在SSI过滤器中,到同一个proxy或者FastCGI的多个子请求并发处理

SSL和TLSSNI支持

使用外部HTTP认证服务器重定向用户到IMAP/POP3后端

使用外部HTTP认证服务器认证用户后连接重定向到内部的SMTP后端

认证方法:

POP3: POP3 USER/PASS, APOP, AUTH LOGIN PL AIN CRAM-MD5

IMAP: IMAP LOGIN

SMTP: AUTH LOGIN PLAIN CRAM-MD5

SSL支持

在IMAP和POP3模式下的STARTTLS和STLS支持

FreeBSD 3.x, 4.x, 5.x, 6.x i386FreeBSD 5.x, 6.x amd64

Linux2.2, 2.4, 2.6 i386Linux 2.6 amd64

Solaris 8 i386Solaris 9 i386 and sun4uSolaris 10 i386

MacOS X (10.4) PPC

一个主进程和多个工作进程。工作进程是单线程的,且不需要特殊授权即可运行

kqueue (FreeBSD 4.1+), epoll (Linux 2.6+), t signals (Linux 2.2.19+), /dev/poll (Solaris711/99+), select,以及poll支持

kqueue支持的不同功能包括EV_ _CLEAR, EV_ DISABLE (临时禁止事件),NOTE_ _LOWAT, EV_ EOF, 有效数据的数目,错误代码

sendfile (FreeBSD 3.1+), sendfile (Linux 2.2+), sendfile64 (Linux 2.4.21+),和sendfilev(Solaris 8 7/01+)支持

输入过滤(FreeBSD 4.1+)以及TCP_ _DEFER_ ACCEPT (Linux2.4+)支持

10,000 非活动的HTTP keep-alive连接仅需要2.5M内存。

最小化的数据拷贝操作

基于IP和名称的虚拟主机服务

Memcached的GET接口

支持keep-alive和管道连接

灵活简单的配置

重新配置和在线升级而无须中断客户的工作进程

可定制的访问日志,日志写入缓存,以及快捷的日志回卷

4xx-5xx错误代码重定向

基于PCRE的rewrite重写模块

基于客户端IP地址和HTTP基本认证的访问控制

PUT, DELETE,和MKCOL方法

支持FLV (Flash视频)

带宽限制

内嵌的perl

通过aio. read() 1 aio _write() 的套接字工作的实验模块,仅在FreeBSD下。

对线程的实验化支持,FreeBSD 4.x的实现基于rfork()

Nginx主要的英语站点是htp://sysoev.ru/en/

本人有自己整理大数据学习的功课,闲置着也无用了。

获取方式:

私信方式:

第一步,点击头像。

第二部:头像旁边有一个私信按钮,发送{学习资料}即可!

tvb的直播源制作方法:

1、安装Nginx(简易服务器),Mac上安装命令brewinstallnginx-full--with-rtmp-module验证是够安装成功,执行nginx启动Nginx服务器。

2、安装ffmpeg(处理视频工具),Mac上安装命令brewinstallffmpeg,验证是否安装成功,输入命令ffmpeg。

3、配置Nginx(从而与ffmpeg配合实现推流),打开/usr/local/etc/nginx/nginx.conf文件,添加rtmp模块。

4、在server模块中增加路径,用于测试。

5、查看是否可以推流,停掉之前开启的nginxnginx-sstop,再重启nginx(因为修改了配置文件),将之前live-demo中的test.mp4模拟作为视频源,当成摄像头,进行视频采集即可。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/237871.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-11
下一篇2023-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存