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;
}