使用 sox trim Django 形式的声音文件 class
Using sox to trim a sound file within Django form class
我正在尝试构建一个允许用户编辑他们上传的声音文件的应用程序。到目前为止,用户能够使用 wavesurfer js 库检索他们的声音并显示为波形。这个想法是获取所选 wavesurfer 区域的起点和终点,并使用更新视图将这些值传递给 class 形式(其中 sox 将 trim 文件)。我 pip 安装了 pysox 并在我的虚拟环境中安装了 sox。这是我目前的 urls.py:
url(r'^update_sound/(?P<pk>[\w-]+)$', UpdateSound.as_view(), name='update_sound'),
我的forms.py:
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',
]
以及更新视图
class UpdateSound(UpdateView):
model = Sounds
form_class = UpdateSound
template_name= 'sound_detail.html'
我的主要问题是,1.Is 这是一种编辑声音文件的好方法,并且 2. 我应该在我的表单中添加什么 class 才能完成这项工作?我查看了 sox 文档,但仍然不完全清楚该怎么做。我应该将声音文件作为参数传递给转换器吗?任何帮助深表感谢。
pysox模块不使用libsox but creates a subprocess for each audio file to process (source code here)。它当然有效,但如果您的服务器处理超过 100 QPS,那么您应该考虑创建和销毁进程的开销。
如文档所述,您应该写
tfm.build('path/to/input_audio', 'path/to/output_audio')
应用效果后(tfm.trim 在你的情况下)。
请记住,您应该在服务器上安装 sox(apt/yum 安装 sox),它不支持写入 MP3/M4A/OGG 等,因此您可能需要额外调用lame/ffmpeg 编码输出以供下载。
我正在尝试构建一个允许用户编辑他们上传的声音文件的应用程序。到目前为止,用户能够使用 wavesurfer js 库检索他们的声音并显示为波形。这个想法是获取所选 wavesurfer 区域的起点和终点,并使用更新视图将这些值传递给 class 形式(其中 sox 将 trim 文件)。我 pip 安装了 pysox 并在我的虚拟环境中安装了 sox。这是我目前的 urls.py:
url(r'^update_sound/(?P<pk>[\w-]+)$', UpdateSound.as_view(), name='update_sound'),
我的forms.py:
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',
]
以及更新视图
class UpdateSound(UpdateView):
model = Sounds
form_class = UpdateSound
template_name= 'sound_detail.html'
我的主要问题是,1.Is 这是一种编辑声音文件的好方法,并且 2. 我应该在我的表单中添加什么 class 才能完成这项工作?我查看了 sox 文档,但仍然不完全清楚该怎么做。我应该将声音文件作为参数传递给转换器吗?任何帮助深表感谢。
pysox模块不使用libsox but creates a subprocess for each audio file to process (source code here)。它当然有效,但如果您的服务器处理超过 100 QPS,那么您应该考虑创建和销毁进程的开销。
如文档所述,您应该写
tfm.build('path/to/input_audio', 'path/to/output_audio')
应用效果后(tfm.trim 在你的情况下)。
请记住,您应该在服务器上安装 sox(apt/yum 安装 sox),它不支持写入 MP3/M4A/OGG 等,因此您可能需要额外调用lame/ffmpeg 编码输出以供下载。