gpt4 book ai didi

node.js - 了解使用 ffmpeg 将 rtmp 输入发送到 node.js 脚本的脚本

转载 作者:行者123 更新时间:2023-12-04 22:54:11 26 4
gpt4 key购买 nike

我试图理解 this使用 ffmpeg 获取 rtmp 输入流并将其发送到 node.js 脚本的 shell 脚本。但我无法理解语法。这里发生了什么?
剧本:

while :
do
echo "Loop start"

feed_time=$(ffprobe -v error -show_entries format=start_time -of default=noprint_wrappers=1:nokey=1 $RTMP_INPUT)
printf "feed_time value: ${feed_time}"

if [ ! -z "${feed_time}" ]
then
ffmpeg -i $RTMP_INPUT -tune zerolatency -muxdelay 0 -af "afftdn=nf=-20, highpass=f=200, lowpass=f=3000" -vn -sn -dn -f wav -ar 16000 -ac 1 - 2>/dev/null | node src/transcribe.js $feed_time

else
echo "FFprobe returned null as a feed time."

fi

echo "Loop finish"
sleep 3
done
  • 什么是feed_time这里?它代表什么?
  • 这部分在做什么- 2>/dev/null | node src/transcribe.js $feed_time ?
  • sleep 3有什么用?这是否意味着我们以 3 秒为单位向 node.js 发送音频流?
  • 最佳答案

  • feed_time变量代表ffprobe的标准输出命令。这个值需要传递给node脚本。
  • -字符在 bash 中没有特殊含义,即由 ffmpeg 解释命令本身(见 here)。根据 ffmpeg docs :

  • A - character before the stream identifier creates a "negative"mapping. It disables matching streams from already created mappings.


  • 2>/dev/null是发送标准错误输出 ffmpeg 的重定向命令到 /dev/null设备,从而有效地丢弃错误输出(见 here)。这样做是因为您只想将标准输出(而不是错误输出)传递给 node脚本。
  • |是一个管道。它发送 ffmpeg 的标准输出命令到 node 的标准输入脚本。
  • sleep只是延迟脚本的执行。
  • 关于node.js - 了解使用 ffmpeg 将 rtmp 输入发送到 node.js 脚本的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72497168/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com