ubuntu22安装下载并安装ffmpeg
ubuntu 安装ffmpeg_ubuntu安装ffmpeg_涂鸦c的博客-CSDN博客
下载rtsp服务器
Releases · bluenviron/mediamtx · GitHub
先运行服务器
./mediamtx
再运行
ffmpeg -re -i ./video1.mp4 -c:v copy -an -f rtsp rtsp://127.0.0.1:8554/test
打开vlc播放器,进行测试
rtsp://127.0.0.1:8554/test
python ffmepg推流
Gtk-Message: 10:03:34.897: Failed to load module "canberra-gtk-module"
执行下面的命令:
sudo apt-get install libcanberra-gtk-module
conda install -c conda-forge ffmpeg
报错
ImportError: /home/tuya/anaconda3/envs/torch/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /home/tuya/anaconda3/envs/torch/lib/libopencv_objdetect.so.408)
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /home/tuya/anaconda3/envs/torch/lib/libstdc++.so.6
安装的ffmpeg版本与python版本一致
import cv2
import subprocess as sp
rtspUrl = 'rtsp://127.0.0.1:8554/stream' #这里改成本地ip,端口号不变,文件夹自定义
#camera = cv2.VideoCapture('./video1.mp4') # 从文件读取视频
camera = cv2.VideoCapture('rtsp://admin:123456@192.168.123.104:554/stream1') # 从文件读取视频
# 视频属性
size = (int(camera.get(cv2.CAP_PROP_FRAME_WIDTH)), int(camera.get(cv2.CAP_PROP_FRAME_HEIGHT)))
sizeStr = str(size[0]) + 'x' + str(size[1])
#sizeStr = '500x300'
fps = camera.get(cv2.CAP_PROP_FPS)
fps = int(fps)
#fps = 30
'''
command = [
'ffmpeg',
'-re',#
'-f', 'rawvideo', # 强制输入或输出文件格式
'-vcodec','rawvideo', # 设置视频编解码器。这是-codec:v的别名
'-pix_fmt', 'bgr24', # 设置像素格式
'-s', sizeStr, # 设置图像大小
'-r', str(fps), # 设置帧率
'-i', '-', # 输入
'-f', 'rtsp',# 强制输入或输出文件格式
rtspUrl]'''
command = [
'ffmpeg',
'-re',#
# '-y', # 无需询问即可覆盖输出文件
'-f', 'rawvideo', # 强制输入或输出文件格式
'-vcodec','rawvideo', # 设置视频编解码器。这是-codec:v的别名
'-pix_fmt', 'bgr24', # 设置像素格式
'-s', sizeStr, # 设置图像大小
'-r', str(fps), # 设置帧率
'-i', '-', # 输入
#'-c:v', 'libx264',
'-pix_fmt', 'yuv420p',
#'-preset', 'ultrafast',
'-f', 'rtsp',# 强制输入或输出文件格式
rtspUrl]
#pipe = sp.Popen(command, stdout = sp.PIPE, bufsize=10**8)
pipe = sp.Popen(command, stdin=sp.PIPE) #,shell=False
while (camera.isOpened()):
ret, frame = camera.read() # 逐帧采集视频流
#cv2.imshow("Video", frame)
if frame is not None:
cv2.imshow("Video", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
#frame = cv2.resize(frame, (500, 300), interpolation=cv2.INTER_LINEAR)
pipe.stdin.write(frame.tostring()) # 存入管道用于直播
camera.release()
cv2.destroyAllWindows()