应用过滤器前后的ffmpeg记录
ffmpeg record before and after applying filters
我正在尝试使用 ffmpeg
来做以下事情:
- 获取输入流[确定]
- 按原样将视频保存到磁盘 [TODO]
- 应用过滤器,即 drawtext [确定]
- 将叠加视频保存到磁盘[确定]
- 预览叠加视频[确定]
这是我当前的命令行:
ffmpeg -rtsp_transport tcp -i <path-to-stream> -vf "[in]drawtext=textfile='text.txt': reload=1: font=arial: fontcolor=red: fontsize=80: box=1: boxcolor=yellow@0.5: boxborderw=5: x=(w-text_w)/2: y=(h-text_h)/2[out]" -vcodec libx264 -f tee -map 0:v "[f=mp4]test.mp4|[f=nut]pipe:" | ffplay pipe:
我唯一不明白的是之前drawtext
的视频录制。我想我必须创建另一个 tee
:
INPUT ---> TEE ---->RECORD
|
|-->FILTERS---> TEE ---->RECORD
|
|-->PLAY
所以我尝试了这个繁琐的命令:
ffmpeg -rtsp_transport tcp -i <path-to-stream> -vcodec libx264 -f tee -map 0:v "[f=mp4]before.mp4|[f=nut]pipe:" | ffmpeg -f mp4 -i pipe: -vf "[in]drawtext=textfile='text.txt': reload=1: font=arial: fontcolor=red: fontsize=80: box=1: boxcolor=yellow@0.5: boxborderw=5: x=(w-text_w)/2: y=(h-text_h)/2[out]" -vcodec libx264 -f tee -map 0:v "[f=mp4]after.mp4|[f=nut]pipe:" | ffplay pipe:
它不会抛出错误,记录 "before.mp4" 但 "after.mp4" 和预览都不起作用。我当然忘记了语法中的某些内容。
两次映射视频并仅将过滤器应用于第一个输出流。
使用
ffmpeg -rtsp_transport tcp -i <path-to-stream> -map 0:v -map 0:v -filter:v:0 "drawtext=textfile='text.txt': reload=1: font=arial: fontcolor=red: fontsize=80: box=1: boxcolor=yellow@0.5: boxborderw=5: x=(w-text_w)/2: y=(h-text_h)/2" -c:v libx264 -f tee "[f=mp4:select=\'v:0\']withtext.mp4|[f=mp4:select=\'v:1\']notext.mp4|[f=nut:select=\'v:0\']pipe:" | ffplay pipe:
我正在尝试使用 ffmpeg
来做以下事情:
- 获取输入流[确定]
- 按原样将视频保存到磁盘 [TODO]
- 应用过滤器,即 drawtext [确定]
- 将叠加视频保存到磁盘[确定]
- 预览叠加视频[确定]
这是我当前的命令行:
ffmpeg -rtsp_transport tcp -i <path-to-stream> -vf "[in]drawtext=textfile='text.txt': reload=1: font=arial: fontcolor=red: fontsize=80: box=1: boxcolor=yellow@0.5: boxborderw=5: x=(w-text_w)/2: y=(h-text_h)/2[out]" -vcodec libx264 -f tee -map 0:v "[f=mp4]test.mp4|[f=nut]pipe:" | ffplay pipe:
我唯一不明白的是之前drawtext
的视频录制。我想我必须创建另一个 tee
:
INPUT ---> TEE ---->RECORD
|
|-->FILTERS---> TEE ---->RECORD
|
|-->PLAY
所以我尝试了这个繁琐的命令:
ffmpeg -rtsp_transport tcp -i <path-to-stream> -vcodec libx264 -f tee -map 0:v "[f=mp4]before.mp4|[f=nut]pipe:" | ffmpeg -f mp4 -i pipe: -vf "[in]drawtext=textfile='text.txt': reload=1: font=arial: fontcolor=red: fontsize=80: box=1: boxcolor=yellow@0.5: boxborderw=5: x=(w-text_w)/2: y=(h-text_h)/2[out]" -vcodec libx264 -f tee -map 0:v "[f=mp4]after.mp4|[f=nut]pipe:" | ffplay pipe:
它不会抛出错误,记录 "before.mp4" 但 "after.mp4" 和预览都不起作用。我当然忘记了语法中的某些内容。
两次映射视频并仅将过滤器应用于第一个输出流。
使用
ffmpeg -rtsp_transport tcp -i <path-to-stream> -map 0:v -map 0:v -filter:v:0 "drawtext=textfile='text.txt': reload=1: font=arial: fontcolor=red: fontsize=80: box=1: boxcolor=yellow@0.5: boxborderw=5: x=(w-text_w)/2: y=(h-text_h)/2" -c:v libx264 -f tee "[f=mp4:select=\'v:0\']withtext.mp4|[f=mp4:select=\'v:1\']notext.mp4|[f=nut:select=\'v:0\']pipe:" | ffplay pipe: