È possibile la codifica h264 con accelerazione hardware?


11

Il Raspberry Pi eseguirà la codifica h264 con accelerazione hardware durante la registrazione di video dalla scheda della fotocamera. Come posso codificare h264 (usando l'accelerazione hardware) quando le immagini sorgente non provengono direttamente dalla fotocamera?

Esistono strumenti da riga di comando che supportano questo?

In caso negativo, quali API dovrei guardare per renderlo possibile?


Che cosa stai codificando e in che modo attualmente? - stai convertendo file video, rendendoli da immagini e suoni, ecc ...
Wilf

@Wilf Sono interessato a questo in generale, tuttavia ho un'applicazione presente: codificare un time-lapse direttamente sul video. Non riesco a usare raspivid perché ho bisogno di framerate bassi tra 1/5 e 2 fps. Inoltre, la rara esposizione automatica va in oscillazioni nelle mie condizioni di illuminazione (scarsa luminosità). Quindi voglio usare raspistill, ma codificare direttamente in video in modo che il risultato non occupi troppo spazio (come farebbero i JPEG). Come seconda applicazione voglio pubblicare ogni fotogramma in tempo reale usando Mathematica (impiegherà molto tempo CPU), e quindi inviarli per essere codificati in h264.
Szabolcs,

1
@Wilf ho una soluzione parziale che credo dovrebbe essere possibile per rendere il lavoro: l'idea è qualcosa di simile raspiyuv -o - | rpi-encode-yuv(circa) dove l' rpi-encode-yuvutensile è da qui . Le dimensioni del frame sono codificate in questo strumento, quindi è necessario modificarlo all'inizio del file C e ricompilare. Sfortunatamente non sono ancora riuscito a ottenere un output correttamente allineato, poiché raspiyuvnon sembra codificare la dimensione del frame nel suo output. Ottengo un'immagine che cambia gradualmente e alla fine si trasforma in spazzatura. Ci sto ancora lavorando.
Szabolcs,

Risposte:


8

GStreamer è incluso in Raspbian e con il suo plugin OpenMAX utilizzerà le funzionalità di codifica hardware di Raspberry Pi.

Vedi questo link per un tutorial su come fare quello che stai cercando: https://www.raspberrypi.org/forums/viewtopic.php?t=72435

Se sei interessato alla transcodifica, ho appena pubblicato una risposta a un'altra domanda che potrebbe interessarti: quale velocità posso aspettarmi dalla codifica hardware H264?


Grazie! Non posso provarlo adesso, ma accetterò in anticipo in base al tuo tutorial.
Szabolcs,

1

Sembra compilando ffmpeg da solo, su RPi3B + puoi ottenere

CODICE VIDEO AD ALTA COMPLESSITÀ DA 30 FPS DA UNA SEQUENZA DI IMMAGINE JPEG 1920 X 1080 - MOVIMENTO SIGNIFICATIVO E DETTAGLIO INTRAFRAME - IMPOSTAZIONI DI ALTA QUALITÀ:

Codifica H.264 (CPU) basata su software: 2,6 FPS (11,5 volte più lenta del tempo reale)

Codifica H.264 basata su hardware (GPU): 6,3 FPS (4,8 volte più lenta del tempo reale)

CODICE VIDEO AD ALTA COMPLESSITÀ 30 FPS DA UNA SEQUENZA DI IMMAGINE JPEG 640 X 480 - MOVIMENTO SIGNIFICATIVO E DETTAGLIO INTRAFRAME - IMPOSTAZIONI DI ALTA QUALITÀ:

Codifica H.264 (CPU) basata su software: 18 FPS (1,7 volte più lenta del tempo reale)

Codifica H.264 basata su hardware (GPU): 38 FPS (1,3 volte più veloce del tempo reale)

Lo script per aiutare a raggiungere tutto questo è in un thread del forum .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.