繁体   English   中英

使用 nginx-rtmp-module 将 rtmp stream 保存为 mp4 而不是 flv

[英]Using nginx-rtmp-module to save rtmp stream to mp4 instead of flv

我正在尝试在我的服务器上将传入的 rtmp stream 保存为 mp4 文件。 我正在使用nginx-rtmp模块并在exec_record_done指令上将容器从flv更改为mp4 这是使用 ffmpeg 完成的,如下所示

ffmpeg -i input.flv output.mp4

我正在发送 h264 视频流和 aac 音频流(在 flv 容器中),以便即使与 mp4 也保持兼容

我想知道是否可以将传入的stream直接保存为mp4并避免每个session末尾的转码

我猜这将有助于避免我在录制完成时看到的突然 CPU 峰值

nginx.conf

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 1024;
}

rtmp {
    server {
        listen 1935;
        chunk_size 4096;
        allow publish all;
        allow play all;

        application live {
            live on;

            record all;
            record_suffix .flv;
            record_path /tmp/videos/;
            record_unique on;

            exec_record_done ffmpeg -y -i $path  /home/ubuntu/videos/$basename.mp4;
        }
    }
}

我认为这很简单,因为底层流保持不变。 任何帮助表示赞赏:)

这是因为你的 FFmpeg 命令不正确,试试这个:

exec_record_done ffmpeg -i $path -c copy /home/ubuntu/videos/$basename.mp4;

记得加上-c copy告诉 FFmpeg 将 FLV 转换为 MP4 而无需转码。

另一种解决方案是自己复制 HLS 文件并将 HLS 转换为 MP4。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM