ffmpeg/ffprobe 生成数值数组输出
ffmpeg/ffprobe to produce a numeric array output
我一直在使用 this npm module: 创建波形数字输出,如下所示:
[0,0.0062,0.0688,0.2524,0.2691,0.2645,0.1594,0.1397,0.1672
然而,这个模块可能没有得到很好的支持,并且已经有几年没有维护了。该模块将自己描述为 "tiny wrapper around ffprobe".
我的问题 - ffmpeg/ffprobe 命令行生成数字数组输出会是什么样子?
非常感谢。
$ npm install waveform-util
$ cd node_modules\waveform-util
$ cat package.json | grep depend -A 10 | head -4
我们看到存在 node-ffprobe
和 pcm
依赖关系。
$ cd lib
$ vim waveform.js
有两个出口。 audio_data
使用 ffprobe
,generate_peaks
使用 pcm
。让我们先检查一下 node-ffprobe
.
$ cd ..\node-ffprobe # I'm on windows - hence backslashes
$ grep -Rni spawn . # or exec, but exec returned nothing useful
我们看到在./lib/ffprobe.js
L84
中使用了spawn
$ head -84 lib/ffprobe.js | tail -1 # just print line 84
C:\del\express-drive\node_modules\node-ffprobe>head -84 lib/ffprobe.js | tail -1
var proc = spawn('ffprobe', ['-show_streams', '-show_format', '-loglevel', 'warning', file]),
所以这是 ffprobe
命令是 运行 的瓶颈。通过在该行之前放置:console.log(file)
或 console.log('ffprobe', ['-show_streams', '-show_format', '-loglevel', 'warning', file].join(' '));
我们可以获得在 运行 应用程序时用于 运行 的特定命令。
您还没有发布您正在使用的示例,所以我必须返回 waveform-util。
$ cd ..\waveform-util
$ grep -Rni ffprobe .
所以 lib\waveform.js
L122 使用 audio_path
作为传递给 node-ffmpeg
的第一个参数。我猜那将是 file
作为 spawn
的最后一个参数。但这并没有回答你的问题。
如果我们回头看看 waveform-util\lib\waveform.js:audio_data
,它使用 ffprobe
仅导出有关音频数据文件的基本信息,而不是 generate audio stream from ffmpeg 命令你要。
(head
tail
只是打印文件中的行范围)
PCM
让我们检查一下 pcm
。
来自 waveform-util\lib\waveform.js
的 generate_peaks
使用 pcm
模块。我会缩短这个。
$ (node_modules) cd pcm
$ grep -Rni -A 2 spawn .
第二个结果显示:
./lib/pcm.js:33: var ffmpeg = spawn('ffmpeg', ['-i',filename,'-f','s16le','-ac',channels,
./lib/pcm.js-34- '-acodec','pcm_s16le','-ar',sampleRate,'-y','pipe:1']);
./lib/pcm.js-35-
您可以生成与上述相同的命令;把这个 before/after spawn
它会打印你的命令是 运行ning:
console.log('ffmpeg', ['-i',filename,'-f','s16le','-ac',channels,'-acodec','pcm_s16le','-ar',sampleRate,'-y','pipe:1'].join(' '));
当 运行通过 waveform-util
执行任何操作时,您会看到正在生成 pcm
需要的任何命令。请注意,pcm
对 spawn
调用下方的 .on('data', ...
处理程序进行了额外操作,因此它可能不是相同的输出,但您将捕获命令。
我一直在使用 this npm module: 创建波形数字输出,如下所示:
[0,0.0062,0.0688,0.2524,0.2691,0.2645,0.1594,0.1397,0.1672
然而,这个模块可能没有得到很好的支持,并且已经有几年没有维护了。该模块将自己描述为 "tiny wrapper around ffprobe".
我的问题 - ffmpeg/ffprobe 命令行生成数字数组输出会是什么样子?
非常感谢。
$ npm install waveform-util
$ cd node_modules\waveform-util
$ cat package.json | grep depend -A 10 | head -4
我们看到存在 node-ffprobe
和 pcm
依赖关系。
$ cd lib
$ vim waveform.js
有两个出口。 audio_data
使用 ffprobe
,generate_peaks
使用 pcm
。让我们先检查一下 node-ffprobe
.
$ cd ..\node-ffprobe # I'm on windows - hence backslashes
$ grep -Rni spawn . # or exec, but exec returned nothing useful
我们看到在./lib/ffprobe.js
L84
spawn
$ head -84 lib/ffprobe.js | tail -1 # just print line 84
C:\del\express-drive\node_modules\node-ffprobe>head -84 lib/ffprobe.js | tail -1
var proc = spawn('ffprobe', ['-show_streams', '-show_format', '-loglevel', 'warning', file]),
所以这是 ffprobe
命令是 运行 的瓶颈。通过在该行之前放置:console.log(file)
或 console.log('ffprobe', ['-show_streams', '-show_format', '-loglevel', 'warning', file].join(' '));
我们可以获得在 运行 应用程序时用于 运行 的特定命令。
您还没有发布您正在使用的示例,所以我必须返回 waveform-util。
$ cd ..\waveform-util
$ grep -Rni ffprobe .
所以 lib\waveform.js
L122 使用 audio_path
作为传递给 node-ffmpeg
的第一个参数。我猜那将是 file
作为 spawn
的最后一个参数。但这并没有回答你的问题。
如果我们回头看看 waveform-util\lib\waveform.js:audio_data
,它使用 ffprobe
仅导出有关音频数据文件的基本信息,而不是 generate audio stream from ffmpeg 命令你要。
(head
tail
只是打印文件中的行范围)
PCM
让我们检查一下 pcm
。
waveform-util\lib\waveform.js
的 generate_peaks
使用 pcm
模块。我会缩短这个。
$ (node_modules) cd pcm
$ grep -Rni -A 2 spawn .
第二个结果显示:
./lib/pcm.js:33: var ffmpeg = spawn('ffmpeg', ['-i',filename,'-f','s16le','-ac',channels,
./lib/pcm.js-34- '-acodec','pcm_s16le','-ar',sampleRate,'-y','pipe:1']);
./lib/pcm.js-35-
您可以生成与上述相同的命令;把这个 before/after spawn
它会打印你的命令是 运行ning:
console.log('ffmpeg', ['-i',filename,'-f','s16le','-ac',channels,'-acodec','pcm_s16le','-ar',sampleRate,'-y','pipe:1'].join(' '));
当 运行通过 waveform-util
执行任何操作时,您会看到正在生成 pcm
需要的任何命令。请注意,pcm
对 spawn
调用下方的 .on('data', ...
处理程序进行了额外操作,因此它可能不是相同的输出,但您将捕获命令。