當前位置:編程學習大全網 - 源碼下載 - 如何在nginx服務器上實現多媒體流的錄制和轉碼

如何在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;

}

  • 上一篇:初壹友誼作文
  • 下一篇:有關文本預處理
  • copyright 2024編程學習大全網