1 .. MediaGoblin Documentation
3 Written in 2011, 2012, 2014, 2015 by MediaGoblin contributors
5 To the extent possible under law, the author(s) have dedicated all
6 copyright and related and neighboring rights to this software to
7 the public domain worldwide. This software is distributed without
10 You should have received a copy of the CC0 Public Domain
11 Dedication along with this software. If not, see
12 <http://creativecommons.org/publicdomain/zero/1.0/>.
14 .. _media-types-chapter:
20 In the future, there will be all sorts of media types you can enable,
21 but in the meanwhile there are six additional media types: video, audio,
22 raw image, ASCII art, STL/3D models, PDF and Document.
24 First, you should probably read ":doc:`configuration`" to make sure
25 you know how to modify the MediaGoblin config file.
31 Media types are now plugins
33 Media types are enabled in your MediaGoblin configuration file.
35 Most media types have additional dependencies that you will have to install.
36 You will find descriptions on how to satisfy the requirements of each media type
39 To enable a media type, add the the media type under the ``[plugins]`` section
40 in you ``mediagoblin.ini``. For example, if your system supported image
41 and video media types, then it would look like this::
44 [[mediagoblin.media_types.image]]
45 [[mediagoblin.media_types.video]]
47 Note that after enabling new media types, you must run dbupdate like so::
51 If you are running an active site, depending on your server
52 configuration, you may need to stop it first (and it's certainly a
53 good idea to restart it after the update).
56 How does MediaGoblin decide which media type to use for a file?
57 ===============================================================
59 MediaGoblin has two methods for finding the right media type for an uploaded
60 file. One is based on the file extension of the uploaded file; every media type
61 maintains a list of supported file extensions. The second is based on a sniffing
62 handler, where every media type may inspect the uploaded file and tell if it
65 The file-extension-based approach is used before the sniffing-based approach,
66 if the file-extension-based approach finds a match, the sniffing-based approach
67 will be skipped as it uses far more processing power.
69 Configuring Media Types
70 =======================
72 Each media type has a ``config_spec.ini`` file with configurable
73 options and comments explaining their intended side effect. For
74 instance the ``video`` media type configuration can be found in
75 ``mediagoblin/media_types/video/config_spec.ini``.
81 To enable video, first install GStreamer and the python-gstreamer
82 bindings (as well as whatever GStreamer extensions you want,
83 good/bad/ugly). On Debianoid systems
87 sudo apt-get install python-gi python3-gi \
89 gir1.2-gstreamer-1.0 \
90 gir1.2-gst-plugins-base-1.0 \
91 gstreamer1.0-plugins-good \
92 gstreamer1.0-plugins-ugly \
93 gstreamer1.0-plugins-bad \
98 Add ``[[mediagoblin.media_types.video]]`` under the ``[plugins]`` section in
99 your ``mediagoblin.ini`` and restart MediaGoblin.
107 Now you should be able to submit videos, and MediaGoblin should
112 You almost certainly want to separate Celery from the normal
113 paste process or your users will probably find that their connections
114 time out as the video transcodes. To set that up, check out the
115 ":doc:`production-deployments`" section of this manual.
121 To enable audio, install the GStreamer and python-gstreamer bindings (as well
122 as whatever GStreamer plugins you want, good/bad/ugly), SciPy and NumPy are
123 also needed for the audio spectrograms.
124 To install these on Debianoid systems, run::
126 sudo apt-get install python-gst-1.0 gstreamer1.0-plugins-{base,bad,good,ugly} \
127 gstreamer1.0-libav python-numpy python-scipy libsndfile1-dev libasound2-dev
130 scikits.audiolab will display a warning every time it's imported if you do
131 not compile it with alsa support. Alsa support is not necessary for the GNU
132 MediaGoblin application.
134 If you're running Python 2, install ``scikits.audiolab`` for the spectrograms::
138 ./bin/pip install numpy==1.9.1
139 ./bin/pip install scikits.audiolab==0.10.2
141 For Python 3 ``scikits.audiolab`` has no package yet. Instead of the cool
142 specrogram image a static icon is used until we found a replacement. (#5467)
144 Add ``[[mediagoblin.media_types.audio]]`` under the ``[plugins]`` section in your
145 ``mediagoblin.ini`` and restart MediaGoblin.
153 You should now be able to upload and listen to audio files!
159 To enable raw image you need to install pyexiv2. On Debianoid systems
163 sudo apt-get install python-pyexiv2
165 Add ``[[mediagoblin.media_types.raw_image]]`` under the ``[plugins]``
166 section in your ``mediagoblin.ini`` and restart MediaGoblin.
174 Now you should be able to submit raw images, and MediaGoblin should
175 extract the JPEG preview from them.
181 To enable ASCII art support, first install the
182 `chardet <http://pypi.python.org/pypi/chardet>`_
183 library, which is necessary for creating thumbnails of ASCII art
187 ./bin/easy_install chardet
190 Next, modify your ``mediagoblin.ini``. In the ``[plugins]`` section, add
191 ``[[mediagoblin.media_types.ascii]]``.
199 Now any .txt file you uploaded will be processed as ASCII art!
202 STL / 3D model support
203 ======================
205 To enable the "STL" 3D model support plugin, first make sure you have
206 a recent `Blender <http://blender.org>`_ installed and available on
207 your execution path. This feature has been tested with Blender 2.63.
208 It may work on some earlier versions, but that is not guaranteed (and
209 is surely not to work prior to Blender 2.5X).
211 Add ``[[mediagoblin.media_types.stl]]`` under the ``[plugins]`` section in your
212 ``mediagoblin.ini`` and restart MediaGoblin.
220 You should now be able to upload .obj and .stl files and MediaGoblin
221 will be able to present them to your wide audience of admirers!
226 To enable the "PDF and Document" support plugin, you need:
228 1. pdftocairo and pdfinfo for PDF only support.
230 2. unoconv with headless support to support converting LibreOffice supported
231 documents as well, such as doc/ppt/xls/odf/odg/odp and more.
232 For the full list see mediagoblin/media_types/pdf/processing.py,
235 All executables must be on your execution path.
237 To install this on Fedora:
241 sudo yum install -y poppler-utils unoconv libreoffice-headless
243 Note: You can leave out unoconv and libreoffice-headless if you want only PDF
244 support. This will result in a much smaller list of dependencies.
246 pdf.js relies on git submodules, so be sure you have fetched them:
253 This feature has been tested on Fedora with:
254 poppler-utils-0.20.2-9.fc18.x86_64
255 unoconv-0.5-2.fc18.noarch
256 libreoffice-headless-3.6.5.2-8.fc18.x86_64
258 It may work on some earlier versions, but that is not guaranteed.
260 Add ``[[mediagoblin.media_types.pdf]]`` under the ``[plugins]`` section in your
261 ``mediagoblin.ini`` and restart MediaGoblin.
270 Blog (HIGHLY EXPERIMENTAL)
271 ==========================
273 MediaGoblin has a blog media type, which you might notice by looking
274 through the docs! However, it is *highly experimental*. We have not
275 security reviewed this, and it acts in a way that is not like normal
276 blogs (the blog posts are themselves media types!).
278 So you can play with this, but it is not necessarily recommended yet
279 for production use! :)