使用FFmpeg和RTSP摄像机进行流式传输时视频流丢失

时间:2019-02-13 15:01:34

标签: linux ffmpeg

在Linux服务器上,我安装了FFmpeg,它将来自中国低成本IP摄像机的视频流传输到Twitch或Youtube服务器。几个小时后,视频不可见,但在服务器端,FFmpeg仍在运行,并且IP摄像机也响应“ ping”命令。

这是我正在使用的脚本:

#
# Camera IP
#
AQUARIUM_CAM_IP="192.168.123.102"


#
# Aquarium data file
#
AQUARIUM_DATA_FILE="/run/aquarium-cam/data.txt"


#
# FFmpeg parameters
#
FFMPEG_LOG_LEVEL=fatal

# Bitrate (1000k = 1Mbit/s)  and  encoding speed (affects CPU)  and  number of CPU cores to use
FFMPEG_VBR="1000k"
FFMPEG_QUAL="ultrafast"
FFMPEG_THREADS="1"

# Streaming source
FFMPEG_CAM_RTSP_SRC="rtsp://${AQUARIUM_CAM_IP}:554/user=admin&password=&channel=1&stream=0.sdp" # Camera source

# Streaming destination
FFMPEG_TWITCH_STREAM_URL_DST="rtmp://live-ber.twitch.tv/app"  # RTMP stream URL
FFMPEG_TWITCH_KEY="<twitch_key>"

# Data overlay setup
FFMPEG_TEXT_OVERLAY_FONT_PATH="OpenSans-Regular.ttf"
FFMPEG_TEXT_OVERLAY_FONT_SIZE=25
FFMPEG_TEXT_OVERLAY_OFFSET_X=5
FFMPEG_TEXT_OVERLAY_OFFSET_Y=60
FFMPEG_TEXT_OVERLAY_RELOAD=1
FFMPEG_TEXT_OVERLAY_BOX="1"
FFMPEG_TEXT_OVERLAY_BOX_BORDER_WIDTH="5"
FFMPEG_TEXT_OVERLAY_BOX_COLOR="blue@0.5"

FFmpeg脚本:

 ffmpeg \
    -loglevel ${FFMPEG_LOG_LEVEL} -f lavfi -i anullsrc \
    -rtsp_transport tcp \
    -i "${FFMPEG_CAM_RTSP_SRC}" \
    -vcodec libx264 -pix_fmt yuv420p -preset ${FFMPEG_QUAL} -g 75 -b:v ${FFMPEG_VBR} \
    -vf "\
drawtext=fontfile=${FFMPEG_TEXT_OVERLAY_FONT_PATH}:textfile=${AQUARIUM_DATA_FILE}:\
x=${FFMPEG_TEXT_OVERLAY_OFFSET_X}:y=${FFMPEG_TEXT_OVERLAY_OFFSET_X}:\
reload=${FFMPEG_TEXT_OVERLAY_RELOAD}: \
fontcolor=white:fontsize=${FFMPEG_TEXT_OVERLAY_FONT_SIZE}:\
box=${FFMPEG_TEXT_OVERLAY_BOX}:boxborderw=${FFMPEG_TEXT_OVERLAY_BOX_BORDER_WIDTH}:\
boxcolor=${FFMPEG_TEXT_OVERLAY_BOX_COLOR}"\
    -threads ${FFMPEG_THREADS} -bufsize 512k \
    -f flv "${FFMPEG_TWITCH_STREAM_URL_DST}/${FFMPEG_TWITCH_KEY}"

另一个奇怪的是,当没有流但FFmpeg仍然存在时,当FFmpeg启动和流开始时,CPU利用率约为30%。

>

任何想法如何解决此类问题? 如果没有“流”或与摄像机的连接断开,FFmpeg是否可以终止某些选项?

0 个答案:

没有答案