Django应用程序,用于上载和转换音频文件(MP3、WAV和OGG格式)

django-audiofield的Python项目详细描述


Django声场

Description:Django Audio Management Tools
Maintainer:Areski
Contributors:list of contributors
Latest VersionDownloadsSupported Python versionsLicense

django audiofield是一个简单的应用程序,允许音频文件上传、管理和转换为不同的音频格式(mp3、wav&ogg),这也使得将音频文件轻松播放到django应用程序中。

我们正在使用html5和flash音频播放器SoundManager2

https://github.com/Star2Billing/django-audiofield/raw/master/docs/source/_static/django-admin-audiofield.pnghttps://github.com/Star2Billing/django-audiofield/raw/master/docs/source/_static/django-admin-audiofield-upload.png

安装

安装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

待办事项

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在panelgrid中填充包含行和列的列表   Java中swing JList作为选项卡   java Zookeeper与spotify kafka图像的cprestproxy连接失败   java maven 3.0+跳过“mvn部署”上的插件执行   多线程在Java中,如何在同一网络上的服务器和客户端之间创建同步连接?   java Hibernate JPA“未找到关联类”,使用另一个实体作为键,可嵌入作为值   java在javamail api中用于会话的库   java活动生命周期回调混乱?   产生乱码输出的java if语句   java我无法从RESTAPI URL获取JSON对象   java如何在dropwizard中禁用cron作业   java公共静态工厂方法   java com。脸谱网。反应桥JavaJSExecutor$ProxyExecutor异常   Java中的安卓事件处理   java如何将p6spy与proxydatasource一起使用   使用JPQL时@Version的java行为   java不支持JDK7NIO。2在Linux上使用Epoll等?   使用Java Redis客户端(莴苣)连接到Amazon ElastiCache   在Java中将SQL Server的所有列中的一种数据类型更改为另一种数据类型   java在程序中删除抽象类的对象