ffmpeg 后台运行,输出重定向,记录log和把文件输出到终端
1.后台运行nohup
nohup ffmpeg -report -fflags nobuffer -probesize 50 -analyzeduration 100 -i rtmp://127.0.0.1/live/test -f hls -c copy -hls_flags delete_segments -hls_time 1 -hls_list_size 3 -hls_segment_filename output-%05d.ts table521.m3u8 1>/dev/null 2>&1 &
nohup的介绍参照这篇文章https://mp.weixin.qq.com/s/nyT-FPdIUdJUiUCYVGEnTg
1 代表标准输出
2 代表标准错误
1>/dev/null 把标准输出导入到null设备,也就是消失不见,如果要重定向到某个文件,可以1>1.txt
2>&1 把标准错误也导入到标准输出同样的地方
-report 把ffmpeg命令行和终端的输出(标准和错误)都记录到以program-YYYYMMDD-HHMMSS.log命名的文件中,log文件会在ffmpeg所在的目录中生成,可以设置log等级和long文件名,便于查找运行很长时间才出现的错误。
2.输出到终端
ffmpeg -i rtmp://live.hkstv.hk.lxdns.com/live/hks -an -c:v copy -bsf:v h264_mp4toannexb -f h264 -y - >666 2>777
>666 省略了1,原本是1>666
666文件中 timeout 0, ret=1 是我在libavformat库里打印的log
可知,库打印的log属于标准输出,而ffmpeg.c 打印的属于标准出错,可以用2>&1指定标准出错也打印到标准输出
- >两个字符之间是有空格的,- 表示把输出的视频文件(不属于标准输出)输出到终端,如果想把输出到终端的视频流通过管道保存到文件,可以用如下指令
ffmpeg -i rtmp://live.hkstv.hk.lxdns.com/live/hks -an -c copy -bsf:v h264_mp4toannexb -f h264 - | cat - > output.h264