|
|
@@ -4,6 +4,7 @@ |
|
|
|
__version__ = '$Change$' |
|
|
|
# $Id$ |
|
|
|
|
|
|
|
ffmpeg_path = '/a/home/jmg/src/ffmpeg/ffmpeg' |
|
|
|
ffmpeg_path = '/usr/local/bin/ffmpeg' |
|
|
|
|
|
|
|
import FileDIDL |
|
|
@@ -130,29 +131,39 @@ class DynamTransfer(protocol.ProcessProtocol): |
|
|
|
path = self.path |
|
|
|
request = self.request |
|
|
|
|
|
|
|
mimetype = { 'xvid': 'video/x-msvideo', |
|
|
|
'mpeg2': 'video/mpeg', |
|
|
|
'mp4': 'video/mp4', |
|
|
|
} |
|
|
|
|
|
|
|
vcodec = mods[0] |
|
|
|
if mods[0] not in ('xvid', 'mpeg2', ): |
|
|
|
vcodec = 'xvid' |
|
|
|
if mods[0] not in mimetype: |
|
|
|
vcodec = 'mp4' |
|
|
|
|
|
|
|
mimetype = { 'xvid': 'video/avi', 'mpeg2': 'video/mpeg', } |
|
|
|
mimetype = { 'xvid': 'video/x-msvideo', 'mpeg2': 'video/mpeg', } |
|
|
|
request.setHeader('content-type', mimetype[vcodec]) |
|
|
|
if request.method == 'HEAD': |
|
|
|
return '' |
|
|
|
|
|
|
|
audiomp3 = [ '-acodec', 'mp3', '-ab', '192', ] |
|
|
|
audiomp2 = [ '-acodec', 'mp2', '-ab', '256', ] |
|
|
|
audiomp3 = [ '-acodec', 'mp3', '-ab', '192k', '-ac', '2', ] |
|
|
|
audiomp2 = [ '-acodec', 'mp2', '-ab', '256k', '-ac', '2', ] |
|
|
|
audioac3 = [ '-acodec', 'ac3', '-ab', '640k', ] |
|
|
|
audioaac = [ '-acodec', 'aac', '-ab', '640k', ] |
|
|
|
optdict = { |
|
|
|
'xvid': [ '-vcodec', 'xvid', |
|
|
|
#'-mv4', '-gmc', '-g', '240', |
|
|
|
'-f', 'avi', ] + audiomp3, |
|
|
|
'mpeg2': [ '-vcodec', 'mpeg2video', #'-g', '60', |
|
|
|
'-f', 'mpeg', ] + audiomp2, |
|
|
|
'-f', 'mpegts', ] + audioac3, |
|
|
|
'mp4': [ '-vcodec', 'libx264', #'-g', '60', |
|
|
|
'-f', 'mpegts', ] + audioaac, |
|
|
|
} |
|
|
|
args = [ 'ffmpeg', '-i', path, '-b', '4000', |
|
|
|
args = [ 'ffmpeg', '-i', path, |
|
|
|
'-sameq', |
|
|
|
'-threads', '4', |
|
|
|
#'-vb', '8000k', |
|
|
|
#'-sc_threshold', '500000', '-b_strategy', '1', '-max_b_frames', '6', |
|
|
|
] + optdict[vcodec] + [ '-', ] |
|
|
|
#log.msg(*[`i` for i in args]) |
|
|
|
log.msg(*[`i` for i in args]) |
|
|
|
self.proc = process.Process(reactor, ffmpeg_path, args, |
|
|
|
None, None, self) |
|
|
|
self.proc.closeStdin() |
|
|
|