专有编解码器

预制构建的NW.js支持专有编解码器

基于Chromium的NW.js , 媒体模块本质上是相同的 .

预制构建的NW.js支持以下编解码器:

  1. theora,vorbis,vp8,pcm_u8,pcm_s16le,pcm_s24le,pcm_f32le,pcm_s16be,pcm_s24be

同时支持demuxers:

  1. ogg,matroska,wav

在NW.js中启用专有编解码器

!!! “许可证和专利费”需知: 使用MP3和H.264编解码器要求您注意专利使用费和源代码许可。如果在应用中需要使用专有媒体格式 , 可以咨询律师了解相关权限内容。有关源代码许可的更多信息,请查看这里

!!! “警告”需知: 如果您没有没有许可证,请根据下列提示或其它解决方案获得编解码器资格:

从社区获取FFmpeg二进制文件

您可以从社区获取预编译FFmpeg二进制文件或按下文自行构建FFmpeg:

脱离NW.js构建FFmpeg的DLL文件

如果您使用的是预制构建的NW.js, 只能够重新构建FFmpeg的DLL文件 , 替换预制构建NW.js中的DLL文件。 该过程需要下载大约1G大小文件以及个i编译约20G大小的NW.js文件 .

第一步:这里下载Chromium定制包. 源文件位于解压后的 ~/<sub-directory-name>目录.

第二步: 因为您未构建整个NW.js, 所以您需要手动获取下列依赖:

  • DEPS拷贝以下目录文件:

    • buildtools
    • tools/gyp
    • third_party/yasm/sources/patched-yasm
    • third_party/ffmpeg
  • 用下列命令在 buildtools/<os>中下载 gn 工具:
  1. download_from_google_storage --no_resume \
  2. --platform=<platform> \
  3. --no_auth \
  4. --bucket chromium-gn \
  5. -s buildtools/<os>/<gn-exe>.sha1
  1. - `<platform>`: `win32` 表示 Windows; `darwin` 表示 Mac; `linux*` 表示 Linux
  2. - `<os>`: `win` 表示 Windows; `mac` 表示 Mac; `linux64` 表示 Linux
  3. - `<gn-exe>`: `gn.exe` 表示 Windows; `gn` 表示 Mac Linux
  • [Mac and Linux] 用下列命令在 third_party/llvm-build中下载 clang工具:
  1. python tools/clang/scripts/update.py --if-needed
  • [Linux] 用下列命令在 build/linux/*-sysroot中下载libraries:
  1. python build/linux/sysroot_scripts/install-sysroot.py --running-as-hook
  • [Mac] 用下列命令在 third_party/libc++-static中下载 libc++-static:
  1. download_from_google_storage --no_resume \
  2. --platform=darwin \
  3. --no_auth \
  4. --bucket chromium-libcpp \
  5. -s third_party/libc++-static/libc++.a.sha1

!!! “ Linux开发者”需知: 首次构建FFmpeg的DDL文件或者执行下一步之前 , 请先运行 build/install-build-deps.sh 建立FFmpeg DLL 或 NW.js,此脚本将自动为您安装构建依赖项.

第三步: 更换 BUILD.gn

在源代码的根目录中更换 BUILD.gn:

  1. action("dummy") {
  2. deps = [
  3. "//third_party/ffmpeg"
  4. ]
  5. script = "dummy"
  6. outputs = ["$target_gen_dir/dummy.txt"]
  7. }

第四步: 利用GN生成 Ninja文件

  1. cd path/to/nw/source/folder
  2. gn gen //out/nw \
  3. --args='is_debug=false is_component_ffmpeg=true target_cpu="<target_cpu>" is_official_build=true ffmpeg_branding="Chrome"'

注意: <target_cpu> 应设置 x86x64

第五步: 构建 ffmpeg DLL文件

  1. ninja -C out/nw ffmpeg

您可以在 out/nw 中找到DLL. 路径和文件名称因平台而异:

  • Windows: ffmpeg.dll
  • Mac OS X: libffmpeg.dylib
  • Linux: lib/libffmpeg.so

第六步: 用第五步的DLL文件替换NW.js中的DLL. 路径和文件名称因平台而异:

  • Windows: ffmpeg.dll
  • Mac OS X: nwjs.app/Contents/Versions/<chromium-version>/nwjs Framework.framework/libffmpeg.dylib
  • Linux lib/libffmpeg.so

使用专有编解码器构建整个NW.js

如果您不使用官方预制的NW.js,则可以按照以下说明构建启用了专有编解码器的整个NW.js。有关每个步骤的详细信息,请参阅构建NW.js.

第1步: 构建前提并获取 NW.js 源代码. 详细参考构建NW.js文件的 构建前提获取代码 章节

第2步: 配置GN时,将 ffmpeg_branding设置为 Chrome.

第3步: 再次重新生成 ninja 文件.

第4步: 重建 NW.js.