diff --git a/FSStorage.py b/FSStorage.py index 18a19e4..54d13ad 100644 --- a/FSStorage.py +++ b/FSStorage.py @@ -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() diff --git a/README b/README index a58b1eb..0c39ca2 100644 --- a/README +++ b/README @@ -79,6 +79,8 @@ Ideas for future improvements: drop them? How do we detect them to prevent blocking other clients. Add support to call Browse in a thread. Convert Browse to be a deferredGenerator so we can + Support transcoding to mp4 format, video will be h.264 and audio will + be AAC. v0.x: Ignore AppleDouble Resource Fork Files. (Maybe we should ignore all