Un po 'di background, mi è stato dato il compito di correggere alcuni "piccoli" bug e mantenere questa soluzione per lo streaming di video attraverso la rete tra due istanze della nostra applicazione. La soluzione è stata scritta da qualcuno che non è più qui, quindi c'è un po 'di mistero nel codice e alcune trappole davvero divertenti. La soluzione è stata scritta usando ffmpeg con codice C++ scritto per avvolgere il codice relativo alla codifica/decodifica e parte del codice di streaming. Questo C++ è stato quindi avvolto con SWIG in modo tale da poter eseguire l'interpunzione con C# e passare i fotogrammi del video su dove sono rappresentati utilizzando VideoRendererElement che risiede in un controllo WPF. Il motivo principale per cui i frame sono passati è perché abbiamo alcuni protocolli personalizzati che abbiamo bisogno di inviare dati video e quelli sono scritti usando C# così come i frame video vengono passati li avvolgiamo nei nostri stessi pacchetti e li mandiamo sul filo . Questa soluzione funziona e possiamo riprodurre video in streaming usando i nostri protocolli personalizzati, anche se è un incubo da gestire e gestire.Come codificare/decodificare video usando C#?
La mia domanda è un modo migliore per fare questo? Sto cercando modi per lavorare a un livello inferiore con i dati del video (in C#) in modo che io possa prendere i frame video e impacchettarli nei nostri pacchetti e inviarli e poter ricevere e ricostruire il video sul l'altra parte. ffmpeg sembra essere la soluzione più comune, ma ho riscontrato molti problemi e la cosa GPL/LGPL è un problema.
Il flusso di base che sto cercando di raggiungere, file video -> codifica -> avvolgere in pacchetto -> inviare su cavo sul protocollo X -> ottenere dati video da pacchetto -> decodificare -> render/salvare su disco
Perché LGPL è un problema per te? Anche se la tua domanda è per i clienti commerciali, non dovrebbe essere un problema. –
Possibile duplicato: http://stackoverflow.com/questions/271003/anyone-know-of-a-set-of-c-bindings-for-ffmpeg –
La cosa GPL/LGPL è stata sollevata da un altro collega ma hanno fatto sembrare che avremmo infranto la licenza con il modo in cui usiamo ffmpeg e alcune delle sue librerie dipendenti. Per quanto riguarda il post duplicato, sto cercando di allontanarmi da ffmpeg se possibile e ffmpeg nitido non ha funzionato o è stato supportato più. –