我正在使用video-length来获取Node.js中的视频时长。该代码在Centos中运行良好。
在Ubuntu 16.x中,它显示错误:
ValueErrorTraceback (most recent call last)
<ipython-input-87-5db669cee585> in <module>()
10 plt.scatter(xs,ys)
11 plt.plot(xs,[f1(x,0.5) for x in xs])
---> 12 popt,pcov = curve_fit(f1,xs,ys,[0.3])
13 plt.plot(xs,popt[0]) for x in xs])
/usr/lib64/python2.7/site-packages/scipy/optimize/minpack.pyc in curve_fit(f,xdata,ydata,p0,sigma,absolute_sigma,check_finite,bounds,method,jac,**kwargs)
749 # Remove full_output from kwargs,otherwise we're passing it in twice.
750 return_full = kwargs.pop('full_output',False)
--> 751 res = leastsq(func,Dfun=jac,full_output=1,**kwargs)
752 popt,pcov,infodict,errmsg,ier = res
753 cost = np.sum(infodict['fvec'] ** 2)
/usr/lib64/python2.7/site-packages/scipy/optimize/minpack.pyc in leastsq(func,x0,args,Dfun,full_output,col_deriv,ftol,xtol,gtol,maxfev,epsfcn,factor,diag)
381 if not isinstance(args,tuple):
382 args = (args,)
--> 383 shape,dtype = _check_func('leastsq','func',func,n)
384 m = shape[0]
385 if n > m:
/usr/lib64/python2.7/site-packages/scipy/optimize/minpack.pyc in _check_func(checker,argname,thefunc,numinputs,output_shape)
25 def _check_func(checker,26 output_shape=None):
---> 27 res = atleast_1d(thefunc(*((x0[:numinputs],) + args)))
28 if (output_shape is not None) and (shape(res) != output_shape):
29 if (output_shape[0] != 1):
/usr/lib64/python2.7/site-packages/scipy/optimize/minpack.pyc in func_wrapped(params)
461 if transform is None:
462 def func_wrapped(params):
--> 463 return func(xdata,*params) - ydata
464 elif transform.ndim == 1:
465 def func_wrapped(params):
<ipython-input-87-5db669cee585> in f1(x,a)
1 from scipy.optimize import minimize
2 def f1(x,a):
----> 3 m = minimize(f2,0.,args=(x)).x[0]
4 return (x + a + m)**2
5 def f2(theta,a):
/usr/lib64/python2.7/site-packages/scipy/optimize/_minimize.pyc in minimize(fun,hess,hessp,constraints,tol,callback,options)
595 return _minimize_cg(fun,**options)
596 elif meth == 'bfgs':
--> 597 return _minimize_bfgs(fun,**options)
598 elif meth == 'newton-cg':
599 return _minimize_newtoncg(fun,/usr/lib64/python2.7/site-packages/scipy/optimize/optimize.pyc in _minimize_bfgs(fun,norm,eps,maxiter,disp,return_all,**unknown_options)
961 else:
962 grad_calls,myfprime = wrap_function(fprime,args)
--> 963 gfk = myfprime(x0)
964 k = 0
965 N = len(x0)
/usr/lib64/python2.7/site-packages/scipy/optimize/optimize.pyc in function_wrapper(*wrapper_args)
291 def function_wrapper(*wrapper_args):
292 ncalls[0] += 1
--> 293 return function(*(wrapper_args + args))
294
295 return ncalls,function_wrapper
/usr/lib64/python2.7/site-packages/scipy/optimize/optimize.pyc in approx_fprime(xk,f,epsilon,*args)
721
722 """
--> 723 return _approx_fprime_helper(xk,args=args)
724
725
/usr/lib64/python2.7/site-packages/scipy/optimize/optimize.pyc in _approx_fprime_helper(xk,f0)
661 ei[k] = 1.0
662 d = epsilon * ei
--> 663 grad[k] = (f(*((xk + d,) + args)) - f0) / d[k]
664 ei[k] = 0.0
665 return grad
ValueError: setting an array element with a sequence.
我已使用以下代码获取持续时间:
SyntaxError: Unexpected token G in JSON at position 0
at JSON.parse (<anonymous>)
at VideoLength (/.../node_modules/video-length/video-length.js:14:24)
我也安装了mediainfo。如果我做错任何事情,请指导我。
调试video-length.js后,我发现在centos和Ubuntu中获得的stdout有以下差异。 在Centos中:
const VideoLength = require('video-length');
VideoLength(video,{
bin: '/usr/bin/mediainfo',extended: true
})
.then(data => {
console.log("data: %j",data)
duration = data['duration']
console.log("duration: " + duration)
})
.catch(err => {
console.log(err);
})
在Ubuntu中:
{
"media": {
"@ref": "/var/kurento/tmp/30/27122019/1514kurento-recording.webm","track": [
{
"@type": "General","VideoCount": "1","FileExtension": "webm","Format": "WebM","Format_Version": "2","FileSize": "157078809","FrameRate": "25.028","IsStreamable": "Yes","Encoded_Date": "UTC 2019-12-27 09:44:33","File_Modified_Date": "UTC 2019-12-27 10:56:31","File_Modified_Date_Local": "2019-12-27 16:26:31","Encoded_Application": "GStreamer Matroska muxer","Encoded_library": "GStreamer matroskamux version 1.8.1.1","extra": {
"IsTruncated": "Yes"
}
},{
"@type": "Video","StreamOrder": "0","ID": "1","UniqueID": "2934041311738436184","Format": "VP8","CodecID": "V_VP8","Width": "1920","Height": "1080","PixelAspectRatio": "1.000","DisplayAspectRatio": "1.778","FrameRate_Mode": "CFR","Compression_Mode": "Lossy","Delay": "0.000","Title": "Video","Language": "en","Default": "Yes","Forced": "No"
}
]
}
}
不知道结构差异的原因。仍在调试原因。任何帮助将不胜感激。