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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在nginx服务器上实现多媒体流的录制和转码相关的知识,希望对你有一定的参考价值。

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;
参考技术A 搞不明白你还用iis的原因

以上是关于如何在nginx服务器上实现多媒体流的录制和转码的主要内容,如果未能解决你的问题,请参考以下文章

如何申请域名购买证书并在Nginx服务器上实现HTTPS?

FFmpeg调研报告

RTSP 媒体协议流的录制方案及其覆盖策略详解

JavaCV音视频开发宝典:视频转码和转封装有什么区别?使用rtsp拉流转推到rtmp案例来讲一下转码和转封装实现的区别

JavaCV音视频开发宝典:视频转码和转封装有什么区别?使用rtsp拉流转推到rtmp案例来讲一下转码和转封装实现的区别

网易视频云:用Nginx搭建flv,mp4,hls流媒体服务器