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