Вот моя команда для прямой отправки видео из исходного файла .mp4, которая работает. на терминале работает правильно, а видео транслируется в диспетчерской YouTube Live –
Код: Выделить всё
ffmpeg -re -i "video.mp4" -c:v libx264 -preset veryfast -maxrate 3000k -bufsize 6000k -pix_fmt yuv420p -c:a aac -b:a 128k -f flv rtmp://a.rtmp.youtube.com/live2/youtube-key
Код: Выделить всё
import cv2
import subprocess
# Path to your video file
video_path = "video.mp4"
# FFmpeg command to stream to YouTube
rtmp_url = "rtmp://a.rtmp.youtube.com/live2/youtube-key"
ffmpeg_command = [
'ffmpeg',
'-y', # Overwrite output files without asking
'-f', 'rawvideo',
'-pixel_format', 'bgr24',
'-video_size', '1280x720', # Change according to your video resolution
'-framerate', '30', # Frame rate
'-i', '-', # Input from stdin
'-c:v', 'libx264',
'-preset', 'veryfast',
'-maxrate', '3000k',
'-bufsize', '6000k',
'-pix_fmt', 'yuv420p',
'-f', 'flv',
rtmp_url
]
# Start FFmpeg process
ffmpeg_process = subprocess.Popen(ffmpeg_command, stdin=subprocess.PIPE)
# Open video with OpenCV
cap = cv2.VideoCapture(video_path)
if not cap.isOpened():
print("Error: Could not open video.")
exit()
while True:
ret, frame = cap.read()
if not ret:
break # End of video
# Write the frame to FFmpeg's stdin
ffmpeg_process.stdin.write(frame.tobytes())
# Cleanup
cap.release()
ffmpeg_process.stdin.close()
ffmpeg_process.wait()

Информация о сборке FFMPEG –

Я пробовал и в Linux, и в Windows, и получил одинаковые результаты. В программе на Python я сейчас не обрабатываю кадры, но в будущем буду это делать. Я просто хочу транслировать видео покадрово, чтобы иметь возможность выполнять обработку в будущем. Пожалуйста помогите!!!
Подробнее здесь: https://stackoverflow.com/questions/790 ... ream-using