如何使用 node.js 和 fluent-ffmpeg 检查损坏的 webm 视频?
How to check for corrupted webm video using node.js and fluent-ffmpeg?
我想检查编码的 webm 视频是否有错误。
到目前为止,我已经设法使用类似这样的方法捕获错误:
ffmpeg -v error -i ../broken.webm -f null -
输出:
[matroska,webm @ 0x7fba5400a200] Read error at pos. 110050 (0x1ade2)
我想使用 node.js 和 fluent-ffmpeg 实现相同的输出,但我不知道要使用 js 传递 -v error
和 -f null -
包装语法。
我天真的尝试是这样的:
// ffmpeg -v error -i ../broken.webm -f null -
ffmpeg("../broken.webm")
.on('error', function(err) {
console.error('An error occurred: ',err.message)
})
.save('-f null -')
.on('end', function() {
console.log('done !')
})
但我立即收到错误消息:ffmpeg exited with code 1: Unrecognized option '-f null -'.
关于如何使用 fluent-ffmpeg 从 node.js 调用 ffmpeg -v error -i ../broken.webm -f null -
有什么想法吗?
您的方向是正确的,但是还有一些其他条目可以添加到您的 ffmpeg 行中以处理您想要的选项。像下面这样的东西应该可以满足你的需要:
var ffmpeg = require('fluent-ffmpeg');
var ff = new ffmpeg();
ff.on('start', function(commandLine) {
// on start, you can verify the command line to be used
console.log('The ffmpeg command line is: ' + commandLine);
})
.on('progress', function(data) {
// do something with progress data if you like
})
.on('end', function() {
// do something when complete
})
.on('error', function(err) {
// handle error conditions
if (err) {
console.log('Error transcoding file');
}
})
.addInput('../broken.webm')
.addInputOption('-v error')
.output('outfile')
.outputOptions('-f null -')
.run();
Fluent-ffmpeg 将命令行选项分为addInputOption 和outputOptions。如果您有多个输出选项,您可以将它们作为设置数组传递给 outputOptions。
请注意,要使用 outputOptions,我认为您需要指定一个输出文件。如果您不需要它,请将其设为临时文件,然后在完成时删除或输出到空设备。查看 https://github.com/fluent-ffmpeg/node-fluent-ffmpeg 上的 fluent-ffmpeg 自述文件页面。它详细介绍了这些选项和其他选项。
虽然可能有更好的方法来验证您的文件,但希望这能让您使用 fluent-ffmpeg。
我想检查编码的 webm 视频是否有错误。 到目前为止,我已经设法使用类似这样的方法捕获错误:
ffmpeg -v error -i ../broken.webm -f null -
输出:
[matroska,webm @ 0x7fba5400a200] Read error at pos. 110050 (0x1ade2)
我想使用 node.js 和 fluent-ffmpeg 实现相同的输出,但我不知道要使用 js 传递 -v error
和 -f null -
包装语法。
我天真的尝试是这样的:
// ffmpeg -v error -i ../broken.webm -f null -
ffmpeg("../broken.webm")
.on('error', function(err) {
console.error('An error occurred: ',err.message)
})
.save('-f null -')
.on('end', function() {
console.log('done !')
})
但我立即收到错误消息:ffmpeg exited with code 1: Unrecognized option '-f null -'.
关于如何使用 fluent-ffmpeg 从 node.js 调用 ffmpeg -v error -i ../broken.webm -f null -
有什么想法吗?
您的方向是正确的,但是还有一些其他条目可以添加到您的 ffmpeg 行中以处理您想要的选项。像下面这样的东西应该可以满足你的需要:
var ffmpeg = require('fluent-ffmpeg');
var ff = new ffmpeg();
ff.on('start', function(commandLine) {
// on start, you can verify the command line to be used
console.log('The ffmpeg command line is: ' + commandLine);
})
.on('progress', function(data) {
// do something with progress data if you like
})
.on('end', function() {
// do something when complete
})
.on('error', function(err) {
// handle error conditions
if (err) {
console.log('Error transcoding file');
}
})
.addInput('../broken.webm')
.addInputOption('-v error')
.output('outfile')
.outputOptions('-f null -')
.run();
Fluent-ffmpeg 将命令行选项分为addInputOption 和outputOptions。如果您有多个输出选项,您可以将它们作为设置数组传递给 outputOptions。
请注意,要使用 outputOptions,我认为您需要指定一个输出文件。如果您不需要它,请将其设为临时文件,然后在完成时删除或输出到空设备。查看 https://github.com/fluent-ffmpeg/node-fluent-ffmpeg 上的 fluent-ffmpeg 自述文件页面。它详细介绍了这些选项和其他选项。
虽然可能有更好的方法来验证您的文件,但希望这能让您使用 fluent-ffmpeg。