FFMPEG推流至本地报错Connection Refused,寻求解决方法
推流至127.0.0.1时FFmpeg出现“Connection Refused”错误的解决求助
我尝试通过FFMPEG将OpenCV捕获的视频帧以MPEG-Dash、HLS或RTSP协议推流至网络,但即使推流至127.0.0.1,始终出现“Connection Error, Connection Refused”错误。
测试代码
import subprocess import cv2 rtmp_url = "rtmp://127.0.0.1:1935/stream/pupils_trace" # webcamera is 0, also you can set a video file name instead, for example "/home/user/demo.mp4" path = 0 cap = cv2.VideoCapture(path) # gather video info to ffmpeg fps = int(cap.get(cv2.CAP_PROP_FPS)) width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) # command and params for ffmpeg command = ['ffmpeg', '-y', '-f', 'rawvideo', '-vcodec', 'rawvideo', '-pix_fmt', 'bgr24', '-s', "{}x{}".format(width, height), '-r', str(fps), '-i', '-', '-c:v', 'libx264', '-pix_fmt', 'yuv420p', '-preset', 'ultrafast', '-f', 'flv', rtmp_url] # using subprocess and pipe to fetch frame data p = subprocess.Popen(command, stdin=subprocess.PIPE) while cap.isOpened(): ret, frame = cap.read() if not ret: print("frame read failed") break # YOUR CODE FOR PROCESSING FRAME HERE # write to pipe p.stdin.write(frame.tobytes())
运行日志
ffmpeg version 4.2.7-0ubuntu0.1 Copyright (c) 2000-2022 the FFmpeg developers built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1) configuration: --prefix=/usr --extra-version=0ubuntu0.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-nvenc --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared libavutil 56. 31.100 / 56. 31.100 libavcodec 58. 54.100 / 58. 54.100 libavformat 58. 29.100 / 58. 29.100 libavdevice 58. 8.100 / 58. 8.100 libavfilter 7. 57.100 / 7. 57.100 libavresample 4. 0. 0 / 4. 0. 0 libswscale 5. 5.100 / 5. 5.100 libswresample 3. 5.100 / 3. 5.100 libpostproc 55. 5.100 / 55. 5.100 Input #0, rawvideo, from 'pipe:': Duration: N/A, start: 0.000000, bitrate: 221184 kb/s Stream #0:0: Video: rawvideo (BGR[24] / 0x18524742), bgr24, 1280x720, 221184 kb/s, 10 tbr, 10 tbn, 10 tbc [tcp @ 0x556bea198680] Connection to tcp://127.0.0.1:1935 failed: Connection refused [rtmp @ 0x556bea1a2640] Cannot open connection tcp://127.0.0.1:1935 rtmp://127.0.0.1:1935/stream/pupils_trace: Connection refused Traceback (most recent call last): File "testing.py", line 42, in <module> p.stdin.write(frame.tobytes())
已尝试的解决方案(均无效)
- 直接运行代码
- 使用sudo运行代码
- 通过sudo su运行代码
- 在ufw中放行所用端口
- 禁用ufw
- 直接在终端执行FFMPEG命令,仍报错
- 使用127.0.0.1、localhost、0.0.0.0或本地IP,均出现连接错误
- 尝试UDP和TCP协议
恳请各位提供解决思路,谢谢!
内容的提问来源于stack exchange,提问作者Halo Gass
相关产品推荐
相关产品推荐

