[英]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.