Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
A django app used to encode video from the django admin. Uses ffmpeg to encode the video and django-celery to process it in a queue. Supports any video profile you can write an ffmpeg command to accomplish.
branch: master

This branch is 140 commits behind jbittel:master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
multimedia
.gitignore
AUTHORS
LICENSE
MANIFEST.in
README.rst
setup.py

README.rst

django-multimedia

A django app used to encode video from the django admin. Uses ffmpeg to encode the video and django-celery to process it in a queue. Supports any video profile you can write an ffmpeg command to accomplish.

Dependancies

  • django-celery
  • django-filer
  • paramiko
  • pycrpto==2.0.1
  • ffmpeg

Getting Started

To get started simply install using pip:

pip install django-multimedia

Add multimedia to your installed apps and syncdb. If you are using south you might want to syncdb --all and migrate --fake

Your installed apps should look something like this:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.admin',
    'djcelery',
    'filer',
    'multimedia',
    'appmedia',
    'easy_thumbnails',
)

Next, you'll need to configure your settings. See configuration below.

Please refer to the documentation for each dependency on instructions on how to install them.

Configuration

You'll need to configure your media profiles and tell the app where to upload the encoded file to after completion. You can use any ffmpeg command as long as you have the codecs needed installed. Use the settings ''MULTIMEDIA_VIDEO_PROFILES'' and ''MULTIMEDIA_AUDIO_PROFILES'' to accomplish this.

The following is the default profile for Video.

MULTIMEDIA_VIDEO_PROFILES = {
    'f4v': {
        'encode_cmd': 'ffmpeg -y -i "%(input)s" -f mp4 -acodec libfaac -ab 128k -vcodec libx264 -vpre slow -b 690k -ac 1 -s 620x350 -r 30 "%(output)s"',
        'encode':True,
        'name':'Flash Video',
        'container':'f4v',
        'thumbnail_cmd': 'ffmpeg -y -itsoffset -%(offset)s -i "%(input)s" -vcodec mjpeg -vframes 1 -an -f rawvideo -s 620x350 "%(output)s"'
    },
}

Here is a breakdown of the ffmpeg arguments being used in these examples.

Video:
ffmpeg
-y // Answer YES to all prompts
-i "%(input)s" // Input file path put in automatically by the system, leave this alone
-f mp4 // Video container
-acodec libfaac // Audio codec
-ac 1 // Audio channels
-ab 128k // Audio bitrate
-vcodec libx264 // Video codec
-vpre slow // Preset for video encoding quality (slow, fast, medium, etc)
-b 690k // Video bitrate
-s 620x350 // File dimensions
-r 30 // Framerate
"%(output)s" // Output file path put in automatically by the system, leave this alone

Screenshot:
ffmpeg
-y // Answer YES to all prompts
-itsoffset -%(offset)s // Frame offset, how far into the video to grab a screenshot, leave this alone
-i "%(input)s" // Input file path put in automatically by the system, leave this alone
-vcodec mjpeg // Video (image) codec
-vframes 1 // We only want a single frame
-an // No clue what this does
-f rawvideo // Output image format
-s 620x350 // File dimensions
"%(output)s" // Output file path put in automatically by the system, leave this alone

And here is the default profile for Audio:

MULTIMEDIA_AUDIO_PROFILES = {
    'audio': {
        'encode_cmd': 'ffmpeg -y -i "%(input)s" "%(output)s"',
        'encode':True,
        'name':'MP3 Audio',
        'container':'mp3',
    },
}

The following settings are used to upload the media after encoding:

MEDIA_SERVER_HOST = "some.host.here"
MEDIA_SERVER_USER = "host_user"
MEDIA_SERVER_PASSWORD = "user_pwd"
MEDIA_SERVER_PORT = 22
MEDIA_SERVER_VIDEO_BUCKET = "videobucket"
MEDIA_SERVER_AUDIO_BUCKET = "audiobucket"
MEDIA_SERVER_AUDIO_PATH = "path/on/some/server" % (MEDIA_SERVER_AUDIO_BUCKET,)
MEDIA_SERVER_VIDEO_PATH = "path/on/some/server" % (MEDIA_SERVER_VIDEO_BUCKET,)

Installing FFMPEG

On Mac OS X you should be able to install ffmpeg using homebrew:

brew install ffmpeg

You might need to brew install other codecs you want to use as well.

On Ubuntu, here is a link to a helpful guide with instructions on how to install on different Ubuntu versions: http://ubuntuforums.org/showthread.php?t=786095

Something went wrong with that request. Please try again.