我使用ffmpeg库写入rtsp流。 当rtsp网址正确时,它运行良好。 但是当这个rtsp url不正确时,它会被卡在avformat_write_header中。 这个问题有什么解决方案吗? 感谢。
答案 0 :(得分:1)
请参考以下链接: [FFmpeg-user] How do I set a timeout for an RTSP source?
RTSP有两种超时类型的选项:
“ - 超时”
Set maximum timeout (in seconds) to wait for incoming connections. A value of -1 mean infinite (default). This option implies the ‘rtsp_flags’ set to ‘listen’. ‘reorder_queue_size’ Set number of packets to buffer for handling of reordered packets.
“ - stimeout”
Set socket TCP I/O timeout in micro seconds.
答案 1 :(得分:1)
'-timeout'和& '-stimeout'不适合我。
我的解决方案[python code]是:
while True:
try:
check_call('ffmpeg -i <rtsp://your-input-stream-url> -frames:v 1 screenshot.jpg', shell=True, timeout=N) # try to get a screenshot if RTSP stream is OK
except TimeoutExpired as e:
logger.error('RTSP stream error') # send error message if timeout
break
祝你好运。