Потерянный видеопоток при потоковой передаче с использованием камеры FFmpeg и RTSP - PullRequest
0 голосов
/ 13 февраля 2019

на сервере 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 и потокеначало Загрузка ЦП составляет около 30% в случае, когда нет потока, но FFmpeg все еще активен Загрузка ЦП ниже 20% или меньше.

Есть идеи, как решить проблему такого рода?Имеет ли FFmpeg какой-либо параметр для завершения, если нет «потока» или если он потерял соединение с камерой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...