我正在寻找完全用 Javascript 制作视频编码器。这个想法是,用户将能够指定现有视频(足够简单)或一系列图像,然后能够将其编码为 H.264 以进行发布。
我知道现在不支持编码内容,但我想知道这是否完全可以在 Javascript(或 Flash 桥接器)中实现?
谢谢。
我正在寻找完全用 Javascript 制作视频编码器。这个想法是,用户将能够指定现有视频(足够简单)或一系列图像,然后能够将其编码为 H.264 以进行发布。
我知道现在不支持编码内容,但我想知道这是否完全可以在 Javascript(或 Flash 桥接器)中实现?
谢谢。
可以使用 emscripten 将视频编码器编译为 javascript。例如,这里是 google 的 VP9 libvpx 库的 emscripten 编译版本:
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 的一部分。
另外,请参阅描述这种情况的博客文章:
视频编码本质上只是对来自一个文件的二进制数据进行专门的数学运算,以获取更多二进制数据以放入另一个文件。如果您有办法以您需要的方式将数据输入(例如HTML 5 FileReader)和输出(例如AJAX),那么中间部分在 JavaScript 中的可能性肯定是存在的。
话虽如此,大多数计算机和移动设备都包含专门用于矢量处理或视频压缩的专用硬件,与仅基于 CPU 的处理相比,这些硬件允许特定于平台的软件对视频进行相对快速的编码。你可能会发现你可以在 JavaScript 中做的事情很慢,不是一个很好的选择,这取决于你的 JavaScript 环境提供了哪些功能。