2013-06-10 12 views
8

Sto cercando di realizzare un codificatore video interamente in Javascript. L'idea è che l'utente sarà in grado di specificare un video esistente (abbastanza facile) o una gamma di immagini e quindi essere in grado di codificarlo su H.264 per la pubblicazione.Codificatore video H.264 in javascript

Capisco che il contenuto della codifica non è supportato al momento ma mi chiedevo se questo è qualcosa che è possibile interamente in Javascript (o in un bridge Flash) o no?

Grazie.

+0

Solo così è chiaro, stai chiedendo se è possibile implementare la compressione video da zero in JavaScript, o se c'è qualche struttura a disposizione per fare è per te? – rakslice

+0

Ecco un codificatore webm sperimentale lato client: http://antimatter15.com/wp/2012/08/whammy-a-real-time-javascript-webm-encoder/ – forresto

risposta

1

La codifica video è essenzialmente solo un'operazione matematica specializzata su dati binari da un file per ottenere più dati binari da inserire in un altro file. A condizione che tu abbia un modo per ottenere i dati (ad esempio HTML 5 FileReader) e fuori (ad esempio AJAX) nei modi che ti servono, è certamente nel regno della possibilità che la parte nel mezzo sia in JavaScript.

3

È possibile compilare un codificatore video su javascript utilizzando emscripten. Per esempio, ecco una versione emscripten-compilata di biblioteca libvpx VP9 di Google:

https://bitbucket.org/desmaj/libvpx.js/overview

Purtroppo è incredibilmente lento - nell'ordine di un decimo della velocità della libreria nativa. Credo che questo sia dovuto al fatto che c'è un sacco di accesso alla memoria in corso, e che è incredibilmente lento in emscripten (vedi https://bugzilla.mozilla.org/show_bug.cgi?id=771106). Inoltre, la codifica generalmente si basa sul parallelismo GPU o SIMD, che non è attualmente disponibile in javascript.

Penso che la codifica video non sia attualmente possibile in javascript. La soluzione migliore sarebbe che W3C aggiungesse un'API di codifica/decodifica video a HTML5, forse come parte di WebRTC/getUserMedia.

Inoltre, vedere questo post del blog che descrive la situazione:

https://brendaneich.com/2013/05/today-i-saw-the-future/

Problemi correlati