pyams_media package ⊞

pyams_media.includeme(config)[source]

Pyramid include

pyams_media.audio

class pyams_media.audio.AudioTypeAdapter(context)[source]

Bases: pyams_utils.adapter.ContextAdapter

Default audio content type adapter

audio_type
class pyams_media.audio.AudioTypeExtension(context, request, view)[source]

Bases: pyams_utils.adapter.ContextRequestViewAdapter

extension:audio_type(media) TALES extension

render(context=None)[source]

pyams_media.converter

class pyams_media.converter.AudioConvertersVocabulary(context=None)[source]

Bases: zope.schema.vocabulary.SimpleVocabulary

Audio converters vocabulary

class pyams_media.converter.BaseAudioConverter[source]

Bases: pyams_media.converter.BaseMediaConverter

Base media converter

add_common_filters(document)[source]
class pyams_media.converter.BaseMediaConverter[source]

Bases: object

Base media converter

add_common_filters(document)[source]
add_filters(document)[source]
convert(media)[source]

Convert media

format = None
get_conversion_loop(document)[source]
require_input_file(media)[source]

Check if a physical file is required to handle conversion

require_temp_file = False
class pyams_media.converter.BaseVideoConverter[source]

Bases: pyams_media.converter.BaseMediaConverter

Base video converter

add_filters(document)[source]
get_conversion_loop(document)[source]
class pyams_media.converter.FlvVideoConverter[source]

Bases: pyams_media.converter.BaseVideoConverter

Default FLV media converter

add_common_filters(document)[source]
format = 'flv'
label = 'FLV (Flash Video) video converter'
class pyams_media.converter.Mp3AudioConverter[source]

Bases: pyams_media.converter.BaseAudioConverter

Default MP3 media converter

format = 'mp3'
label = 'MP3 audio converter'
class pyams_media.converter.Mp4VideoConverter[source]

Bases: pyams_media.converter.BaseVideoConverter

Default MP4 media converter

add_common_filters(document)[source]
format = 'mp4'
label = 'MP4 (HTML5) video converter'
require_temp_file = True
class pyams_media.converter.OggAudioConverter[source]

Bases: pyams_media.converter.BaseAudioConverter

Default OGG audio converter

format = 'ogg'
label = 'OGG audio converter'
class pyams_media.converter.OggVideoConverter[source]

Bases: pyams_media.converter.BaseVideoConverter

OGG media converter

format = 'ogg'
label = 'OGG video converter'
class pyams_media.converter.VideoConvertersVocabulary(context=None)[source]

Bases: zope.schema.vocabulary.SimpleVocabulary

Video converters vocabulary

class pyams_media.converter.WavAudioConverter[source]

Bases: pyams_media.converter.BaseAudioConverter

Default WAV media converter

format = 'wav'
label = 'WAV audio converter'
class pyams_media.converter.WebmVideoConverter[source]

Bases: pyams_media.converter.BaseVideoConverter

WebM Media converter

add_common_filters(document)[source]
format = 'webm'
label = 'WebM video converter'
require_temp_file = True

pyams_media.ffbase

class pyams_media.ffbase.FFmpeg(cmd='avconv')[source]

Bases: object

FFmpeg Wrapper

info(input)[source]

Retrieve file information parsing command output

re_audioline = re.compile('^\\s*Stream #(\\d+:\\d+?)\\(?([A-Za-z]*)\\)?: Audio: (.*?), (\\d+?) Hz, (.*?), (.*?), (\\d+?) kb\\/s$')
re_infoline = re.compile('^\\s*Duration: (.*?), start: 0\\.000000, bitrate: (\\d+?) kb\\/s$')
re_mainline = re.compile("^\\s*Input #(\\d+?), (.*?), from '(.*?)':$")
re_videoline = re.compile('^\\s*Stream #(\\d+:\\d+?)\\(?([A-Za-z]*)\\)?: Video: (.*?), (.*?), (.*?), (.*?)$')
render(effectchain, output)[source]

Create a new file by chaining audio/video effects

class pyams_media.ffbase.FFVideoEffect(inputfile=None, **args)[source]

Bases: pyams_media.ffbase.FFEffect

video effect

aspect(aspect=None)[source]

set aspect ratio

bitrate(b=None)[source]

set video bitrate

bitraterange(minrate=None, maxrate=None)[source]

set min/max bitrate (bit/s)

bitratetolerance(bt=None)[source]

set bitrate tolerance

bufsize(bufsize=4096)[source]

set buffer size (bits)

crop(top=0, bottom=0, left=0, right=0)[source]

set the crop size

intra()[source]

use only intra frames

lagrangefactor(lmin=None, lmax=None)[source]

min/max lagrange factor

macroblock(mblmin=None, mblmax=None)[source]

min/max macroblock scale

pad(top=0, bottom=0, left=0, right=0, color='000000')[source]

set the pad band size and color as hex value

passenc(p=1)[source]

select pass number (1 or 2)

picturesize(gop=None)[source]

set of group pictures size

pixelformat(p=None)[source]

set pixelformat

quantizerblur(qblur=None)[source]

video quantizer scale blur

quantizercompression(qcomp=0.5)[source]

video quantizer scale compression

quantizerrange(qmin=None, qmax=None, qdiff=None)[source]

define min/max quantizer scale

quantizerscale(qscale=None)[source]

Fixed quantizer scale

rate(r=None)[source]

set frame rate

sameq()[source]

use same video quality as source

size(s=None)[source]

set frame size

unset_aspect()[source]
unset_bitrate()[source]
unset_bitraterange()[source]
unset_bitratetolerance()[source]
unset_bufsize()[source]
unset_crop()[source]
unset_intra()[source]
unset_lagrangefactor()[source]
unset_macroblock()[source]
unset_pad()[source]
unset_passenc()[source]
unset_picturesize()[source]
unset_pixelformat()[source]
unset_quantizerblur()[source]
unset_quantizercompression()[source]
unset_quantizerrange()[source]
unset_quantizerscale()[source]
unset_rate()[source]
unset_sameq()[source]
unset_size()[source]
unset_vcodec()[source]
unset_vdthreshold()[source]
unset_vframes()[source]
unset_vn()[source]
vcodec(vcodec='copy')[source]

set video codec

vdthreshold(vdt=None)[source]

discard threshold

vframes(vframes=None)[source]

set number of video frames to record

vn()[source]

disable video recording

class pyams_media.ffbase.FFAudioEffect(inputfile, **args)[source]

Bases: pyams_media.ffbase.FFEffect

Audio effect

acodec(acodec='copy')[source]

select audio codec

aframes(aframes=None)[source]

set number of audio frames to record

audiobitrate(ab=64)[source]

set audio bitrate (kbit/s)

audiochannels(ac=1)[source]

set number of audio channels

audiorecording()[source]

disable audio recording

audiosampling(ar=44100)[source]

set audio sampling frequency (Hz)

newaudio()[source]

add new audio track

unset_acodec()[source]
unset_aframes()[source]
unset_audiobitrate()[source]
unset_audiochannels()[source]
unset_audiorecording()[source]
unset_audiosampling()[source]
unset_newaudio()[source]

pyams_media.ffdocument

class pyams_media.ffdocument.FFDocument(file, metadata=None, effects={})[source]

Bases: pyams_media.ffbase.FFVideoEffect, pyams_media.ffbase.FFAudioEffect

audio/video document. A FFDocument describe a higer level action set combining several FF[Audio|Video]Effect methods.

x.__init__(…) initializes x; see x.__class__.__doc__ for signature

chainto(ffdoc)[source]

Prepare to append at the end of another movie clip

get_stream_info(codec_type=None)[source]

Get metadata info for given stream

ltrim(time)[source]

Trim leftmost side (from start) of the clip

resample(width=0, height=0, vstream=0)[source]

Adjust video dimensions. If one dimension is specified, the re-sampling is proportional

resize(width=0, height=0, vstream=0)[source]

Resize video dimensions. If one dimension is specified, the re-sampling is proportional

Width and height can be pixel or % (not mixable)

rtrim(time)[source]

Trim rightmost side (from end) of the clip

split(time)[source]

Return a tuple of FFDocument splitted at a specified time.

Allowed formats: %, sec, hh:mm:ss.mmm

trim(left, right)[source]

Left and right trim (actually calls ltrim and rtrim)

pyams_media.ffexception

exception pyams_media.ffexception.FFException(value)[source]

Bases: Exception

pyams_media.include

pyams_media.media

class pyams_media.media.ConversionsExtension(context, request, view)[source]

Bases: pyams_utils.adapter.ContextRequestViewAdapter

extension:conversions(media) TALES extension

render(context=None)[source]
class pyams_media.media.MediaConversions[source]

Bases: zope.container.folder.Folder

Media conversions

add_conversion(conversion, format, extension=None, width=None)[source]
static get_conversion_width(name)[source]
get_conversions(with_source=False, order=None)[source]
has_conversion(formats)[source]
class pyams_media.media.MediaConversionsTraverser(context)[source]

Bases: pyams_utils.adapter.ContextAdapter

++conversions++ file traverser

traverse(name, furtherpath=None)[source]
pyams_media.media.check_media_conversion(status, media)[source]
pyams_media.media.handle_added_media(event)[source]

Handle added media file

pyams_media.media.media_conversions_factory(context)[source]

Media conversions factory

pyams_media.media.media_info_factory(context)[source]

Media info adapter

pyams_media.process

pyams_media.site

pyams_media.utility

class pyams_media.utility.MediaConversionUtility[source]

Bases: persistent.Persistent, zope.container.contained.Contained

Medias conversions utility

audio_bitrate

Audio bitrate: In kilo-bytes per second. Leave empty to keep original value.

audio_formats

Audio formats conversions: Published audio files will be automatically converted to this format

audio_sampling

Audio frequency: A common value is 22050. Leave empty to keep original value.

check_media_conversion(media)[source]

Check if conversion is needed for given media

convert(media, format)[source]

Send conversion request for given media

get_socket()[source]
test_process()[source]

Send test request to conversion process

video_audio_bitrate

Video audio bitrate: In kilo-bytes per second. Leave empty to keep original value.

video_audio_sampling

Video audio frequency: A common value is 22050. Leave empty to keep original value.

video_bitrate

Video bitrate: In kilo-bytes per second. Leave empty to keep original value

video_formats

Video formats conversions: Published video files will be automatically converted to this format

video_frame_size

Video frames size: Leave empty to keep original frame size…

video_quantisation

Video quantisation scale: Lower value indicates higher quality

zodb_name

ZODB connection name: Name of ZODB connection defining converter connection

pyams_media.video

class pyams_media.video.FlashVideoTypeAdapter(context)[source]

Bases: pyams_utils.adapter.ContextAdapter

Flash video content type adapter

video_type
class pyams_media.video.ThumbnailTraverser(context)[source]

Bases: pyams_utils.adapter.ContextAdapter

++thumb++ video namespace traverser

traverse(name, furtherpath=None)[source]
class pyams_media.video.VideoThumbnailAdapter(video)[source]

Bases: object

Video thumbnail adapter

clear_geometries()[source]
clear_thumbnails()[source]
delete_thumbnail(thumbnail_name)[source]
get_geometry(selection_name)[source]
get_image_size()[source]
get_thumbnail(thumbnail_name, format=None, time=5)[source]
get_thumbnail_name(thumbnail_name, with_size=False)[source]
get_thumbnail_size(thumbnail_name, forced=False)[source]
set_geometry(selection_name, geometry)[source]
class pyams_media.video.VideoTypeAdapter(context)[source]

Bases: pyams_utils.adapter.ContextAdapter

Default video content type adapter

video_type
class pyams_media.video.VideoTypeExtension(context, request, view)[source]

Bases: pyams_utils.adapter.ContextRequestViewAdapter

extension:video_type(media) TALES extension

render(context=None)[source]