【问题标题】:H.264 video encoder in javascriptjavascript 中的 H.264 视频编码器
【发布时间】:2013-06-06 05:02:48
【问题描述】:

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

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

谢谢。

【问题讨论】:

  • 很清楚,您是在问是否可以在 JavaScript 中从头开始实现视频压缩,或者是否有一些工具可以为您做到这一点?
  • 这是一个实验性的客户端 webm 编码器:antimatter15.com/wp/2012/08/…

标签: javascript html flash encoding h.264


【解决方案1】:

可以使用 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 的一部分。

另外,请参阅描述这种情况的博客文章:

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

【讨论】:

    【解决方案2】:

    视频编码本质上只是对一个文件中的二进制数据进行专门的数学运算,以获取更多二进制数据以放入另一个文件。如果您有办法以您需要的方式将数据输入(例如HTML 5 FileReader)和输出(例如AJAX),那么中间部分在JavaScript 中肯定是有可能的。

    话虽如此,大多数计算机和移动设备都包含专门用于矢量处理或视频压缩的专用硬件,与仅基于 CPU 的处理相比,这些硬件允许特定于平台的软件对视频进行相对快速的编码。您可能会发现您可以在 JavaScript 中执行的操作速度很慢,因此不是一个很好的替代方案,具体取决于您的 JavaScript 环境提供的功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-23
      • 2011-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-21
      相关资源
      最近更新 更多