Django应用程序,用于上载和转换音频文件(MP3、WAV和OGG格式)
django-audiofield的Python项目详细描述
Django声场
Description: | Django Audio Management Tools |
---|---|
Maintainer: | Areski |
Contributors: | list of contributors |
django audiofield是一个简单的应用程序,允许音频文件上传、管理和转换为不同的音频格式(mp3、wav&ogg),这也使得将音频文件轻松播放到django应用程序中。
我们正在使用html5和flash音频播放器SoundManager2
安装
安装Django AudioField:
python setup.py install
依赖性
在debian上安装依赖项:
apt-get -y install libsox-fmt-mp3 libsox-fmt-all mpg321 dir2ogg libav-tools
在redhat/centos上安装依赖项:
yum -y install python-setuptools libsox-fmt-mp3 libsox-fmt-all mpg321 dir2ogg
在redhat/centos上安装avconv:
git clone git://git.libav.org/libav.git cd libav sudo ./configure --disable-yasm sudo make sudo make install
设置
在settings.py文件中:
# Set Following variable MEDIA_ROOT = '' MEDIA_URL = '' In MIDDLEWARE_CLASSES add 'audiofield.middleware.threadlocals.ThreadLocals' In INSTALLED_APPS add 'audiofield' # Frontend widget values # 0-Keep original, 1-Mono, 2-Stereo CHANNEL_TYPE_VALUE = 0 # 0-Keep original, 8000-8000Hz, 16000-16000Hz, 22050-22050Hz, # 44100-44100Hz, 48000-48000Hz, 96000-96000Hz FREQ_TYPE_VALUE = 8000 # 0-Keep original, 1-Convert to MP3, 2-Convert to WAV, 3-Convert to OGG CONVERT_TYPE_VALUE = 0
用法
在models.py文件中添加以下行:
from django.conf import settings from audiofield.fields import AudioField import os.path # Add the audio field to your model audio_file = AudioField(upload_to='your/upload/dir', blank=True, ext_whitelist=(".mp3", ".wav", ".ogg"), help_text=("Allowed type - .mp3, .wav, .ogg")) # Add this method to your model def audio_file_player(self): """audio player tag for admin""" if self.audio_file: file_url = settings.MEDIA_URL + str(self.audio_file) player_string = '<audio src="%s" controls>Your browser does not support the audio element.</audio>' % (file_url) return player_string audio_file_player.allow_tags = True audio_file_player.short_description = ('Audio file player')
在admin.py中添加以下行:
from your_app.models import your_model_name # add 'audio_file_player' tag to your admin view list_display = (..., 'audio_file_player', ...) actions = ['custom_delete_selected'] def custom_delete_selected(self, request, queryset): #custom delete code n = queryset.count() for i in queryset: if i.audio_file: if os.path.exists(i.audio_file.path): os.remove(i.audio_file.path) i.delete() self.message_user(request, ("Successfully deleted %d audio files.") % n) custom_delete_selected.short_description = "Delete selected items" def get_actions(self, request): actions = super(AudioFileAdmin, self).get_actions(request) del actions['delete_selected'] return actions
然后执行以下命令创建表并收集静态文件:
./manage.py syncdb ./manage.py collectstatic
创建audiofield.log文件:
touch /var/log/audio-field.log
贡献
如果你发现了一个bug,实现了一个特性或者定制了模板 觉得有用的话请考虑贡献。修补程序、拉取请求或 欢迎提出建议!
源代码:http://github.com/Star2Billing/django-audiofield
错误跟踪器:https://github.com/Star2Billing/django-audiofield/issues
文档
文档可在“阅读文档”中找到: http://django-audiofield.readthedocs.org
学分
django audiofield是一个2亿赞助的社区项目,有关更多信息,请访问http://www.star2billing.com或发送电子邮件至info@star2billing.com
许可证
Django AudioField是麻省理工学院授权的,请参见mit-license.txt。
待办事项
- 使用pydub(http://pydub.com)从django audiofield中提升音频转换
- 与django存储集成(http://django-storages.readthedocs.org/)
- 支持更多格式