ffmpeg - posso enganar o ffmpeg pensando que um script Python é uma câmera?

1

Eu gostaria de transmitir quadros de um script Python (A) para outro (B), de modo que B só os obtém tão rápido quanto A pode produzi-los. Tudo que eu vi com o ffmpeg leva um vídeo inteiro ou transmissões de uma câmera. Eu acho que o que eu gostaria de fazer é tratar um script Python como uma câmera que gera quadros.

Eu vi isso: link mas eu não quero enviar saída para um arquivo de vídeo, eu quero outro script para lê-lo. Eu também tenho um erro de pipe quebrado usando esse código, de qualquer maneira.

    
por Chris Anderson 30.06.2017 / 20:02

1 resposta

2

O ffmpeg pode ler STDIN, então tudo que você precisa fazer é canalizar os quadros do seu script para o ffmpeg através desse fluxo, em algum formato que o ffmpeg entenda.

Por exemplo, se eu usar o ffmpeg para decodificar um fluxo de vídeo em quadros individuais usando o YUV420P como um formato de pixel, posso lê-los novamente, mas só preciso especificar as dimensões, taxa de quadros e formato de pixel novamente:

ffmpeg -i input.mp4 -f rawvideo - | \
ffmpeg -f rawvideo -s 1920x1080 -r 60 -pix_fmt yuv420p -i - output.mp4

Naturalmente, se você pode transmitir formatos válidos a partir do seu script - e, preferencialmente, formatos passíveis de fluxo, como o MPEG-2 TS -, então o ffmpeg também poderia, é claro, lê-lo.

    
por 30.06.2017 / 21:18