- 踩坑
- 落坑
- 爬坑
- 猜想
本人Java 开发,最近开发音频转码项目,同事提供了一个 Python 工具脚本。执行脚本可使音频转成对应的格式。这是踩坑的开始。
落坑拿到脚本工具后,我担心不能正常使用,特意在终端上执行了下,发现一切正常,音频转码也正常的。之后正常开发,通过程序去调用脚本,发现无论如何都无法转码出音频。重新在终端上执行也是没有问题(终端环境就是项目部署的服务器),下面是脚本工具部分代码
def get_sr(audio_path,inar): path,file = os.path.split(audio_path) new_path = os.path.join(path,'test.wav') fake = 0 try: os.system('ffmpeg -y -i {0} {1}'.format(audio_path,new_path)) f = wave.open(new_path,'rb') audio_info = f.getparams() f.close os.remove(new_path) except: audio_info = get_pcm_info(audio_path, inar) fake += 1 return audio_info,fake爬坑
通过不断的在脚本中添加日志,最后发现 os.system 执行失败。
再次写脚本测试
import os os.system ('ffmpeg') 返回: os.system ('ffmpeg') sh: ffmpeg: command not found
崩溃了吧 ~~~~
通过不断的百度,最终也没有找到直接的解决问题的办法。最终在一篇博客中得到提示:可以指定到 ffmpeg 安装目录下执行下,于是乎修改脚本:
def get_sr(audio_path,inar): # print("audio_path = " + audio_path + ", inar = " + inar) path,file = os.path.split(audio_path) new_path = os.path.join(path,'test.wav') fake = 0 try: os.system('/usr/local/ffmpeg/bin/ffmpeg -y -i {0} {1}'.format(audio_path,new_path)) with wave.open(new_path,'rb') as f: audio_info = f.getparams() os.remove(new_path) except: audio_info = get_pcm_info(audio_path, inar) fake += 1 return audio_info,fake
音频正常输出,问题解决
猜想大概猜想下通过 java程序去读取 Python 脚本,Python 执行的时候 环境变量不是当前服务器配置的环境变量,这个有待求证,请 Python 大佬们指点下,感激。。。。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)