<Gabrik>
21-12-2016, 19:59
Ciao a tutti,
premetto che l'elaborazione audio/video non è il mio campo, quindi potrei dire un bel pro di castronerie.
Io devo fare un software che sfruttando le librerie fornite da ffmpeg e/o le libav possa ricevere un flusso video rtp, farne la transcodifica e inviarlo sempre in rtp verso un altra destinazione.
Per adesso mi basta che riceva il flusso lo transcodifichi e lo salvi su file.
Veniamo al dunque, riesco a ricevere senza alcun problema il flusso, ma quando provo a fare la transcodifica ho un bel pò di errori dovuti ai PTS e DTS.
Che a quanto ho capito sono i "tempi" di ogni frame in presentazione e decodifica.
Il codice in questione si trova qui -> https://github.com/gabrik/transcoder/blob/libav/transcoder-ng.c#L371
In particolare ho evidenziato la linea che mi porta problemi, perché sembra non riuscire a prendere il "tempo" giusto, se non lo prendo infatti esco dal ciclo, ma anche nel caso riesca ad ottenerlo vengo bloccato dalla funzione che dovrebbe effettivamente fare la codifica
https://github.com/gabrik/transcoder/blob/libav/transcoder-ng.c#L209
Consigli?
Il codice è scritto abbastanza male, e di fretta, adesso a mente fredda vorrei riuscire a capire con voi come far funzionare la cosa.
Grazie in anticipo
premetto che l'elaborazione audio/video non è il mio campo, quindi potrei dire un bel pro di castronerie.
Io devo fare un software che sfruttando le librerie fornite da ffmpeg e/o le libav possa ricevere un flusso video rtp, farne la transcodifica e inviarlo sempre in rtp verso un altra destinazione.
Per adesso mi basta che riceva il flusso lo transcodifichi e lo salvi su file.
Veniamo al dunque, riesco a ricevere senza alcun problema il flusso, ma quando provo a fare la transcodifica ho un bel pò di errori dovuti ai PTS e DTS.
Che a quanto ho capito sono i "tempi" di ogni frame in presentazione e decodifica.
Il codice in questione si trova qui -> https://github.com/gabrik/transcoder/blob/libav/transcoder-ng.c#L371
In particolare ho evidenziato la linea che mi porta problemi, perché sembra non riuscire a prendere il "tempo" giusto, se non lo prendo infatti esco dal ciclo, ma anche nel caso riesca ad ottenerlo vengo bloccato dalla funzione che dovrebbe effettivamente fare la codifica
https://github.com/gabrik/transcoder/blob/libav/transcoder-ng.c#L209
Consigli?
Il codice è scritto abbastanza male, e di fretta, adesso a mente fredda vorrei riuscire a capire con voi come far funzionare la cosa.
Grazie in anticipo