FFMPEG не может транслировать видео покадрово в прямую трансляцию RTMP на Youtube с использованием PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 FFMPEG не может транслировать видео покадрово в прямую трансляцию RTMP на Youtube с использованием Python

Сообщение Anonymous »

Мне нужно открыть локально сохраненное видео, обработать его покадрово и отправить в прямой RTMP-поток на YouTube. Я могу сделать это с помощью FFMPEG в терминале командной строки, но не могу сделать это с помощью Python. В Python на консоли отображается, что поток отправлен правильно, но в диспетчерской YouTube Live данные не отображаются. Я пробовал все другие инструменты, такие как Vidgear, Gstreamer и т. д. Но большинство из них используют серверную часть FFMPEG, и это не работает.
Вот моя команда для прямой отправки видео из исходного файла .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
Моя программа на Python, которая считывает и отправляет видео кадр за кадром, показывает, что на консоли все в порядке, но YouTube показывает «Нет данных» —

Код: Выделить всё

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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как транслировать аудио и видео по ссылке rtmp с помощью ProcessBuilder (ffmpeg)
    Гость » » в форуме JAVA
    0 Ответы
    42 Просмотры
    Последнее сообщение Гость
  • Как встроить чат Youtube с динамически обновляемым URL-адресом в прямую трансляцию?
    Anonymous » » в форуме Php
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Как встроить чат Youtube с динамически обновляемым URL-адресом в прямую трансляцию?
    Anonymous » » в форуме Php
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Как я могу создать прямую трансляцию видео, используя протокол espnow?
    Anonymous » » в форуме C++
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Запись видео покадрово с помощью ffmpeg
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»