2010-07-31 9 views
5

Ho un paio di file di contenitori video che contengono audio e video in vari codec. Ora mi piacerebbe ispezionare il contenitore da uno script Python per sapere quale codec è usato per audio + video. Questo è su un box Linux così ho tutti gli strumenti disponibili se necessario.Python: Rileva i codec utilizzati in un contenitore video

Ho pensato che forse Gstreamer potrebbe aiutarmi qui ma non sono riuscito a trovare un'API che potrebbe aiutarmi qui.

Qualche idea? Sono anche aperti a qualsiasi suggerimento, non ha bisogno di essere GStreamer fintanto che è un software gratuito :-) fs

risposta

3

Provare a scaricare il sorgente di ffmpeg e guardare il sorgente per i loro programmi da linea di comando. Ho hackerato utility simili in passato. Non sto pubblicando la mia soluzione perché a ffmpeg piace cambiare la loro API, quindi è improbabile che il mio vecchio codice venga compilato con la versione corrente. Dovrai fare abbastanza lavoro per creare un contesto di codec, che puoi ispezionare per ottenere ciò di cui hai bisogno.

Alcune altre alternative:


EDIT:

http://code.google.com/p/pyffmpeg/ potrebbe avere quello che vuoi (non l'ho usato da solo).

+0

quindi questo significa che non ci sono librerie che possono restituire tali informazioni? –

+0

Ho guardato pyffmpeg ma non riuscivo a capire come ottenere le informazioni che volevo. Inoltre non verrà compilato sul mio Mac senza patching esteso dalle mailing list, e anche allora mi dà un errore Bus 10 quando provo ad aprire un file con esso. –

1

È possibile utilizzare decodebin2 in Gstreamer. Dai un'occhiata a TAE per gli esempi di codice.

+0

grazie per il puntatore, sembra che questo faccia più o meno quello di cui ho bisogno ... –

6
ffprobe -show_format -show_streams -loglevel quiet -print_format json YOUR_FILE 

Basta richiamarlo con sottoprocesso.check_output e otterrai una bellissima descrizione JSON del file multimediale. Se ti serve per prendere i dati da stdin, sostituire YOUR_FILE con pipe: 0.

ffprobe viene fornito con ffmpeg.