首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用sox在Django窗体类中修剪声音文件

使用sox在Django窗体类中修剪声音文件
EN

Stack Overflow用户
提问于 2017-08-19 22:40:00
回答 1查看 304关注 0票数 0

我试图构建一个应用程序,允许用户编辑他们上传的声音文件。到目前为止,用户能够检索他们的声音,并以波形的形式显示在wavesurfer js库中。其思想是获取选定的wavesurfer区域的起始点和结束点,并使用updateview将这些值传递给form类( sox将在其中修剪文件)。我在虚拟env中安装了比索和sox。到目前为止,我的urls.py就是这样的:

代码语言:javascript
运行
复制
url(r'^update_sound/(?P<pk>[\w-]+)$', UpdateSound.as_view(), name='update_sound'),

我的forms.py:

代码语言:javascript
运行
复制
import sox
class UpdateSound(forms.ModelForm):
def trim_sound(self):
    file = self.cleaned_data.get('sound', False)
    tfm = sox.Transformer(file)
    tfm.trim(0,0.3)



class Meta:
    model = Sounds
    fields = [
    'sound',
    ]

和更新视图

代码语言:javascript
运行
复制
class UpdateSound(UpdateView):      
    model = Sounds
    form_class = UpdateSound    
    template_name= 'sound_detail.html'

我的主要问题是,1.这是编辑声音文件和2的好方法吗?我应该在表单类中添加什么来完成这个工作?我已经看过sox的文件了,还不完全清楚该怎么做。我应该把声音文件作为参数传递给变压器吗?任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-19 22:57:13

  1. pysox模块不使用利布索,而是为每个要处理的音频文件创建一个子进程(源代码这里)。当然可以,但是如果您的服务器处理的QPS超过100个,那么您应该考虑创建和销毁进程的开销。
  2. 就像医生说的,你应该写 Tfm.build(“路径/到/输入_音频”、“路径/到/输出_音频”) 在应用效果之后(在您的情况下是tfm.trim)。 请记住,您应该在您的服务器上安装sox (apt/yum install ),并且它不支持写入MP3/M4A/OGG等,因此您可能需要对lame/ffmpeg进行额外调用来对输出进行编码以供下载。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45776886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档