簡體   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