1

我正在尝试使用 handbrake-js for node 转换视频。起初我尝试指定比特率、视频大小、编解码器等。目标是生成几个 html5 兼容的流,用作 webGL 画布视频的源。一切似乎工作正常,它输出视频,当我使用 Quicktime 或 VLC 打开它时,它看起来很好,但是,当我在标签上使用它时,没有视频,只有音频。

下面的代码在一个函数中调用,该函数接收一个“ops”JSON,带有宽度和高度。

hb.spawn({ input: new_location + "original" + ext, output: new_location + ops.name, optimize: true, vb: ops.vb, "width": ops.width, "height": ops.height, "rate": 30 })

控制台显示正在转换的视频,以及干净的退出。但 webGL 报告:

[.Offscreen-For-WebGL-0x7fbf21074c00]渲染警告:绑定到纹理单元 0 的纹理不可渲染。它可能不是 2 的幂并且具有不兼容的纹理过滤。

注意:视频是2 的幂 (1024x512) 此外,当我播放原始文件时,它不会显示错误。

为了调试,我什至将视频附加到 HTML,并更改了 CSS 以显示它。但没有视频。只是音频。

我什至尝试过:

hb.spawn({ input: "input.mp4", output: "output.m4v" })

和一个简单的嗯... input.mp4 显示正常。output.m4v 总是无法在 HTML 上显示视频(Chrome,safari 似乎工作得很好)。

有任何想法吗?

4

1 回答 1

1

如果您说preset: Normal有效,那么您可以运行(使用作为命令行应用程序安装的handbrake --preset-listhandbrake-js )来查看“正常”预设使用哪些编码器选项:

+ Normal:  -e x264  -q 20.0 -a 1 -E ffaac -B 160 -6 dpl2 -R Auto -D 0.0 --audio-copy-mask aac,ac3,dtshd,dts,mp3 --audio-fallback ffac3 -f mp4 --loose-anamorphic --modulus 2 -m --x264-preset veryfast --h264-profile main --h264-level 4.0

因此,请尝试hb.spawn使用上述选项运行并删除您不需要的任何选项。

于 2017-05-28T18:25:59.637 回答