123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- import logging
- from lvc import converter
- class WebM_UHD_VP8(converter.FFmpegConverterInfo1080p):
- media_type = 'format'
- extension = 'webm'
- parameters = ('-f webm -vcodec libvpx -g 120 -lag-in-frames 23 '
- '-deadline good -cpu-used 0 -vprofile 0 -qmax 51 -qmin 11 '
- '-slices 4 -b:v 4M -acodec libvorbis -ab 128k '
- '-map_metadata -1 '
- '-ar 44100')
- class WebM_HD_VP8(converter.FFmpegConverterInfo720p):
- media_type = 'format'
- extension = 'webm'
- parameters = ('-f webm -vcodec libvpx -g 120 -lag-in-frames 16 '
- '-deadline good -cpu-used 0 -vprofile 0 -qmax 51 -qmin 11 '
- '-slices 4 -b:v 2M -acodec libvorbis -ab 112k '
- '-map_metadata -1 '
- '-ar 44100')
- class WebM_SD_VP8(converter.FFmpegConverterInfo480p):
- media_type = 'format'
- extension = 'webm'
- parameters = ('-f webm -vcodec libvpx -g 120 -lag-in-frames 16 '
- '-deadline good -cpu-used 0 -vprofile 0 -qmax 53 -qmin 0 '
- '-b:v 768k -acodec libvorbis -ab 112k -map_metadata -1 '
- '-ar 44100')
- class WebM_UHD_VP9(converter.FFmpegConverterInfo1080p):
- media_type = 'format'
- extension = 'webm'
- parameters = ('-f webm -vcodec libvpx-vp9 -g 120 -lag-in-frames 23 '
- '-deadline good -cpu-used 0 -vprofile 0 -qmax 51 -qmin 11 '
- '-slices 4 -b:v 4M -acodec libopus -ab 128k '
- '-map_metadata -1')
- class WebM_HD_VP9(converter.FFmpegConverterInfo720p):
- media_type = 'format'
- extension = 'webm'
- parameters = ('-f webm -vcodec libvpx-vp9 -g 120 -lag-in-frames 16 '
- '-deadline good -cpu-used 0 -vprofile 0 -qmax 51 -qmin 11 '
- '-slices 4 -b:v 2M -acodec libopus -ab 112k '
- '-map_metadata -1')
- class WebM_SD_VP9(converter.FFmpegConverterInfo480p):
- media_type = 'format'
- extension = 'webm'
- parameters = ('-f webm -vcodec libvpx-vp9 -g 120 -lag-in-frames 16 '
- '-deadline good -cpu-used 0 -vprofile 0 -qmax 53 -qmin 0 '
- '-b:v 768k -acodec libopus -ab 112k -map_metadata -1')
- class WebM_VP9(converter.FFmpegConverterInfo):
- media_type = 'format'
- extension = 'webm'
- parameters = ('-f webm -vcodec libvpx-vp9 -g 240 -threads 4 '
- '-quality good -crf 32 '
- '-b:v 0 -acodec libopus -map_metadata -1')
- class WebM_VP8(converter.FFmpegConverterInfo):
- media_type = 'format'
- extension = 'webm'
- parameters = ('-f webm -vcodec libvpx -g 240 -threads 4 '
- '-quality good -crf 32 '
- '-b:v 0 -acodec libvorbis -map_metadata -1')
- class MP4(converter.FFmpegConverterInfo):
- media_type = 'format'
- extension = 'mp4'
- parameters = ('-acodec aac -ab 128k -vcodec libx264 -preset slow '
- '-map_metadata -1 '
- '-f mp4 -crf 22')
- class MP3(converter.FFmpegConverterInfo):
- media_type = 'format'
- extension = 'mp3'
- parameters = '-f mp3 -ac 2'
- audio_only = True
- class OggVorbis(converter.FFmpegConverterInfo):
- media_type = 'format'
- extension = 'ogg'
- parameters = '-f ogg -vn -acodec libvorbis -aq 60'
- audio_only = True
- class OggTheora(converter.FFmpegConverterInfo):
- media_type = 'format'
- extension = 'ogv'
- parameters = ('-f ogg -vcodec libtheora -acodec libvorbis '
- '-qscale:v 7 -qscale:a 5 -map_metadata -1')
- class DNxHD_1080(converter.FFmpegConverterInfo1080p):
- media_type = 'format'
- extension = 'mov'
- parameters = ('-r 23.976 -f mov -vcodec dnxhd -b:v '
- '175M -acodec pcm_s16be -ar 48000')
- class DNxHD_720(converter.FFmpegConverterInfo720p):
- media_type = 'format'
- extension = 'mov'
- parameters = ('-r 23.976 -f mov -vcodec dnxhd -b:v '
- '175M -acodec pcm_s16be -ar 48000')
- class PRORES_720(converter.FFmpegConverterInfo720p):
- media_type = 'format'
- extension = 'mov'
- parameters = ('-f mov -vcodec prores -profile 2 '
- '-acodec pcm_s16be -ar 48000')
- class PRORES_1080(converter.FFmpegConverterInfo1080p):
- media_type = 'format'
- extension = 'mov'
- parameters = ('-f mov -vcodec prores -profile 2 '
- '-acodec pcm_s16be -ar 48000')
- class AVC_INTRA_1080(converter.FFmpegConverterInfo1080p):
- media_type = 'format'
- extension = 'mov'
- parameters = ('-f mov -vcodec libx264 -pix_fmt yuv422p '
- '-crf 0 -intra -b:v 100M -acodec pcm_s16be -ar 48000')
- class AVC_INTRA_720(converter.FFmpegConverterInfo720p):
- media_type = 'format'
- extension = 'mov'
- parameters = ('-f mov -vcodec libx264 -pix_fmt yuv422p '
- '-crf 0 -intra -b:v 100M -acodec pcm_s16be -ar 48000')
- class NullConverter(converter.FFmpegConverterInfo):
- media_type = 'format'
- extension = None
- def get_parameters(self, video):
- params = []
- if not video.audio_only and self.should_copy_video_size(video):
- # -vcodec copy copies the video data exactly. Only use it if the
- # output video is the same size as the input video (#19664)
- params.extend(['-vcodec', 'copy'])
- params.extend(['-acodec', 'copy'])
- return params
- def should_copy_video_size(self, video):
- if self.width is None or self.height is None:
- return True
- return (video.width == self.width and video.height == self.height)
- def get_extra_arguments(self, video, output):
- if not video.container:
- logging.warn("sameformat: video.container is None. Using mp4")
- container = 'mp4'
- elif isinstance(video.container, list):
- # XXX: special case mov,mp4,m4a,3gp,3g2,mj2
- container = 'mp4'
- else:
- container = video.container
- return ['-f', container]
- mp3 = MP3('MP3')
- ogg_vorbis = OggVorbis('Ogg Vorbis')
- audio_formats = ('Audio', [mp3, ogg_vorbis])
- webm_uhd_vp8 = WebM_UHD_VP8('WebM 1080p VP8')
- webm_hd_vp8 = WebM_HD_VP8('WebM 720p VP8')
- webm_sd_vp8 = WebM_SD_VP8('WebM 480p VP8')
- webm_vp8 = WebM_VP8('WebM VP8')
- webm_uhd_vp9 = WebM_UHD_VP9('WebM 1080p VP9')
- webm_hd_vp9 = WebM_HD_VP9('WebM 720p VP9')
- webm_sd_vp9 = WebM_SD_VP9('WebM 480p VP9')
- webm_vp9 = WebM_VP9('WebM VP9')
- mp4 = MP4('MP4')
- theora = OggTheora('Ogg Theora')
- video_formats = ('Video',
- [
- webm_uhd_vp8,
- webm_hd_vp8,
- webm_sd_vp8,
- webm_vp8,
- webm_uhd_vp9,
- webm_hd_vp9,
- webm_sd_vp9,
- webm_vp9,
- mp4,
- theora
- ])
- dnxhd_1080 = DNxHD_1080('DNxHD 1080p')
- dnxhd_720 = DNxHD_720('DNxHD 720p')
- prores_1080 = PRORES_1080('Prores Ingest 1080p')
- prores_720 = PRORES_720('Prores Ingest 720p')
- avc_intra_1080 = PRORES_1080('AVC Intra 1080p')
- avc_intra_720 = PRORES_720('AVC Intra 720p')
- ingest_formats = ('Ingest Formats', [dnxhd_1080, dnxhd_720, prores_1080,
- prores_720, avc_intra_1080,
- avc_intra_720])
- null_converter = NullConverter('Same Format')
- converters = [video_formats, audio_formats, ingest_formats, null_converter]
|