问题描述
class Meditation(models.Model):
name = models.CharField(max_length=50)
audio = models.FileField(upload_to='AudioTracks')
length = models.IntegerField(blank=True,null=True)
此外,我还有将音频转换为 .m4a 并计算音频长度的前置信号:
@receiver(pre_save,sender=Meditation)
def setLengthMeditation(sender,**kwargs):
meditation = kwargs['instance']
if kwargs['update_fields']:
audio = mp4.MP4(meditation.audio)
length = audio.info.length
meditation.length = length
@receiver(post_save,sender=Meditation)
def setLengthToCourse(sender,**kwargs):
meditation = kwargs['instance']
if not kwargs['update_fields']:
newPath = meditation.audio.name.split('.')[0] + '.m4a'
command = 'ffmpeg -i {} -movflags +faststart -b:a 128K -af "afade=t=in:st=0:d=2" {}'.format(meditation.audio.name,newPath)
subprocess.call(command,shell=True)
meditation.audio = File(open(newPath,'rb'))
meditation.save(update_fields=['audio','length'])
因此,如您所见,当我将音频从任何格式转换为 .m4a 时,我会尝试将新音频指向现有模型:
command = 'ffmpeg -i {} -movflags +faststart -b:a 128K -af "afade=t=in:st=0:d=2" {}'.format(meditation.audio.name,newPath)
subprocess.call(command,shell=True)
meditation.audio = File(open(newPath,'rb'))
问题是,当我将模型指向现有文件时,Django 将其保存在 upload_to
中,它就像 {Audiotracks/} + file.name {AudioTracks/file.m4a} = AudioTracks/AudioTracks/file.m4a
问题是,我能否以某种方式让 Django 不复制文件或在保存时剪切路径,以免发生重复
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)