使用JavaScript编写的H.264视频编码器

12

我希望用Javascript完全制作一个视频编码器。这个想法是用户可以指定现有的视频(简单易行)或一系列图像,然后能够对其进行H.264编码以供发布。

我知道目前不支持内容编码,但我想知道这是否完全可以在Javascript中实现(或使用Flash桥接)?

谢谢。


只是为了明确,您是在问是否可以使用JavaScript从头开始实现视频压缩,还是是否有可用的工具可以帮助您完成? - rakslice
1
这是一个实验性的客户端WebM编码器:http://antimatter15.com/wp/2012/08/whammy-a-real-time-javascript-webm-encoder/ - forresto
2个回答

3

使用emscripten,可以将视频编码器编译为JavaScript。例如,这里有一个经过emscripten编译的Google VP9 libvpx库版本:

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

很不幸,速度非常慢,只有原生库的十分之一。我认为这是由于存在大量内存访问,而在emscripten中这非常缓慢(参见https://bugzilla.mozilla.org/show_bug.cgi?id=771106)。此外,编码通常依赖于GPU或SIMD并行性,在javascript中目前不可用。
我认为目前在javascript中进行视频编码是不可行的。最好的解决方案是W3C将视频编码/解码API添加到HTML5中,可能作为WebRTC/getUserMedia的一部分。
此外,请参阅描述该情况的博客文章。

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


2
视频编码本质上只是对来自一个文件的二进制数据进行专门的数学运算,得到更多的二进制数据放入另一个文件中。只要您有一种获取数据的方法(例如HTML 5 FileReader)和输出数据的方法(例如AJAX),就可以在JavaScript中完成中间部分的操作。

尽管如此,大多数计算机和移动设备都包含用于向量处理或视频压缩的专用硬件,这使得平台特定的软件相对于仅使用CPU进行处理而言能够快速地编码视频。根据您的JavaScript环境提供的功能,您可能会发现JavaScript中所能做的事情速度较慢,不能成为一个很好的替代方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接