GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Usar o Linux pra gravar uma camera (FFMPEG)

python
Tags: #<Tag:0x00007fb39d1fe890>

#1

Alô!

Estou me aventurando agora pelo mundo do Python. Preciso fazer algo que, quando receber uma mensagem no MQTT, comece a gravar usando o ffmpeg no PC que ele está. O código abaixo funciona bem… para uma camera só! Com mais ele não executa (vou mostrar onde acho que to errando)

import paho.mqtt.client as paho
import json
import os


def on_message(client, userdata, message):
    content = str(message.payload.decode("utf-8"))
    conversor(content)


def on_connect(client, userdata, flags, rc):
    client.subscribe("cameras/gravacao")


def on_disconnect():
    connect_to_mqtt()


def connect_to_mqtt():
    client = paho.Client("id")
    client.username_pw_set("", "")
    client.on_connect = on_connect
    client.on_disconnect = on_disconnect
    client.on_message = on_message
    client.connect("localhost", 1883, 60)
    client.loop_forever()


def conversor(content):
    data = json.loads(content)
    for n in range(data.get("videos")):
        os.system("ffmpeg -i " + data.get("remote_urls")[n]['url'] + " -acodec copy -vcodec copy /home/user/Vídeos/cam.mp4")
     //Aqui, eu sei que ele vai gravar tudo em um arquivo só, e não é o que eu quero. Então, eu tentei fazer:
    //os.system("ffmpeg -i " + data.get("remote_urls")[n]['url'] + " -acodec copy -vcodec copy /home/user/Vídeos/cam" + n + ".mp4")
   //Mas ele nem chegou a gravar :C


connect_to_mqtt()

To entrando no mundo python agora, vindo do Java, vocês poderiam me ajudar??


#2

Eu nao entendi o que você espera como resultado final ou qual a diferença de múltiplas câmeras, mas um jeito simples de testar é transformar a chamada os.system para print
Isso vai te mostrar os comandos que está executando, pode testá-los diretamente na linha de comando e ver porque nao estao funcionando.


#3

Então, eu sou BEM iniciante em Python. Tipo, bem mesmo. Aí, lendo sobre o os.system vi que ele ja é deprecated, e falaram em subprocess. Conversei com um amigo meu que manja de python e ele disse que vou precisar criar algo assíncrono e tudo mais

O lance é que eu quero mandar multiplos comandos do FFMPEG, entende?