将 ffmpeg 片段发送到标准输出,以便下一个管道可以处理它们

将 ffmpeg 片段发送到标准输出,以便下一个管道可以处理它们

我有一条类似的管道

ffmpeg -i input.mov -f matroska - |\
ffmpeg -i - -codec copy -map 0 -reset_timestamps 1 \
-segment_time 10 -f segment  output/out%03d.mov

它有效,并将输入视频分割成 10 秒长的片段文件,保存到输出文件夹中。现在我想告诉 ffmpeg 将它们传递到 stdout,以便在下一个管道中我可以连接一个脚本,根据另一个文件的存在来决定对每个片段执行什么操作

ffmpeg -i input.mov -f matroska - |\
ffmpeg -i - -codec copy -map 0 -reset_timestamps 1 \
-segment_time 10 -f segment |\
NEXT_PIPE_SCRIPT

NEXT_PIPE_SCRIPT 应该是这样的

{
TEST_FILE=".do"
if [ -f "$TEST_FILE" ]; then
     echo "$TEST_FILE exists going to redirect videos to a folder"
    >> output/$RANDOM.mov
 else 
    >> /dev/null
fi
}

这个想法是,取决于文件是否存在,一些段应该转到 /dev/null,一些段应该转到输出文件夹。

我很难把这些都整合在一起。任何帮助或建议都非常感谢

相关内容