diff --git a/nzbtomedia/__init__.py b/nzbtomedia/__init__.py index e7ea1f4b..03546266 100644 --- a/nzbtomedia/__init__.py +++ b/nzbtomedia/__init__.py @@ -276,6 +276,9 @@ def initialize(section=None): FFPROBE = joinPath(FFMPEG_PATH, 'ffprobe.exe') if not (os.path.isfile(FFMPEG) or os.path.isfile(FFMPEG)): # problem + logger.warning("Failed to locate ffmpeg or ffprobe, Transcoding features disabled!") + logger.warning("Install ffmpeg with x264 support to enable transcoding features ...") + FFMPEG = None FFPROBE = None else: @@ -283,14 +286,11 @@ def initialize(section=None): FFPROBE = subprocess.Popen(['which', 'ffprobe'], stdout=subprocess.PIPE).communicate()[0].strip() if not (FFMPEG or FFPROBE): - # Auto-install FFMPEG and FFPROBE - if subprocess.Popen(['which', 'make'], stdout=subprocess.PIPE).communicate()[0].strip() and transcoder.install_ffmpeg(): - FFMPEG = subprocess.Popen(['which', 'ffmpeg'], stdout=subprocess.PIPE).communicate()[0].strip() - FFPROBE = subprocess.Popen(['which', 'ffprobe'], stdout=subprocess.PIPE).communicate()[0].strip() - else: - logger.error("Failed to install ffmpeg. Please install manually") - FFMPEG = None - FFPROBE = None + logger.warning("Failed to locate ffmpeg or ffprobe, Transcoding features disabled!") + logger.warning("Install ffmpeg with x264 support to enable transcoding features ...") + + FFMPEG = None + FFPROBE = None USER_SCRIPT_CATEGORIES = CFG["UserScript"]["user_script_categories"] if not "NONE" in USER_SCRIPT_CATEGORIES: diff --git a/nzbtomedia/transcoder/transcoder.py b/nzbtomedia/transcoder/transcoder.py index 9056f257..ce6088f1 100644 --- a/nzbtomedia/transcoder/transcoder.py +++ b/nzbtomedia/transcoder/transcoder.py @@ -1,11 +1,13 @@ import errno import os import platform +import subprocess import urllib2 import traceback import nzbtomedia from subprocess import call from nzbtomedia import logger +from nzbtomedia.extractor import extractor def isVideoGood(videofile): fileNameExt = os.path.basename(videofile) @@ -19,7 +21,6 @@ def isVideoGood(videofile): bitbucket = open('/dev/null') if not nzbtomedia.FFPROBE: - logger.error("Cannot detect corrupt video files!, set your ffmpeg_path in your autoProcessMedia.cfg ...", 'TRANSCODER') return True command = [nzbtomedia.FFPROBE, videofile] @@ -44,7 +45,6 @@ def Transcode_directory(dirName): bitbucket = open('/dev/null') if not nzbtomedia.FFMPEG: - logger.error("Cannot transcode files!, set your ffmpeg_path in your autoProcessMedia.cfg ...") return 1 logger.info("Checking for files to be transcoded") @@ -129,91 +129,4 @@ def Transcode_directory(dirName): logger.error("Transcoding of video %s to %s failed" % (file, newfilePath)) # this will be 0 (successful) it all are successful, else will return a positive integer for failure. final_result = final_result + result - return final_result - -def install_ffmpeg(): - # goto script folder - os.chdir(os.path.join(os.getcwd(), os.path.dirname(__file__))) - - # path relative to this script file - # where will the dependency packages be downloaded - DOWNLOAD_DIR = "download" - - def my_mkdir(path): - if os.path.exists(path) == False: - os.makedirs(path) - - def my_remove(path): - if os.path.exists(path): - os.remove(path) - - def my_exec(cmd): - print "[cmd] %s" % cmd - os.system(cmd) - - def prepare_package(pkg_url): - ret = True - my_mkdir(DOWNLOAD_DIR) - pkg_name = os.path.basename(urllib2.urlparse.urlparse(pkg_url).path) - pkg_fpath = os.path.join(DOWNLOAD_DIR, pkg_name) - tmp_fpath = os.path.join(DOWNLOAD_DIR, pkg_name + ".downloading") - my_remove(tmp_fpath) - if os.path.exists(pkg_fpath): - print "%s already downloaded" % pkg_name - else: - f = open(tmp_fpath, "wb") - try: - print "downloading %s from %s" % (pkg_name, pkg_url) - f.write(urllib2.urlopen(pkg_url).read()) - os.rename(tmp_fpath, pkg_fpath) - except: - traceback.print_exc() - my_remove(tmp_fpath) - exit(1) - finally: - f.close() - if ret == True: - if pkg_name.endswith(".tar.bz2"): - if os.path.exists(os.path.join(DOWNLOAD_DIR, pkg_name[:-8])) == False: - print "extracting %s" % pkg_name - my_exec("cd '%s' ; tar xjf %s" % (DOWNLOAD_DIR, pkg_name)) - if pkg_name.endswith(".tar.gz"): - if os.path.exists(os.path.join(DOWNLOAD_DIR, pkg_name[:-7])) == False: - print "extracting %s" % pkg_name - my_exec("cd '%s' ; tar xzf %s" % (DOWNLOAD_DIR, pkg_name)) - return ret - - # build yasm - prepare_package("http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz") - my_exec(""" - cd %s/yasm-1.2.0 - ./configure - make - make install - """ % (DOWNLOAD_DIR)) - - - # build x264 - prepare_package("ftp://ftp.videolan.org/pub/x264/snapshots/x264-snapshot-20140420-2245-stable.tar.bz2") - my_exec(""" - cd %s/x264-snapshot-20140420-2245-stable - ./configure --enable-static - make - make install - """ % (DOWNLOAD_DIR)) - - # build ffmpeg - prepare_package("http://ffmpeg.org/releases/ffmpeg-2.2.1.tar.bz2") - my_exec(""" - cd %s/ffmpeg-2.2.1 - ./configure \ - --enable-gpl --enable-nonfree \ - --disable-ffserver \ - --disable-shared --enable-static \ - --extra-cflags='-static' \ - --enable-libx264 --enable-pthreads - make - make install - """ % (DOWNLOAD_DIR)) - - return True \ No newline at end of file + return final_result \ No newline at end of file