diff --git a/README.md b/README.md index 4c9c730d..414c9265 100644 --- a/README.md +++ b/README.md @@ -1,64 +1 @@ -

- VideoConvertor poster -

-

- ᴠɪᴅᴇᴏ ᴄᴏɴᴠᴇʀᴛᴏʀ -

- - -

- -`Main branch` - For personal use -

- -

- -`Public branch` - For your channel -

- -

- -`Telegran Channel` - DroneBots -

- -# Main branch -Main branch is to deploy a bot for your `personal` use only. Deploy from `public` branch if you need bot for your channel. - -VARIABLES required are: - -* `API_ID` - -* `API_HASH` - -* `BOT_TOKEN` - -* `BOT_UN` - Username of yout Bot. - -# Deploy (🌟Star the repo) - -Deploy your bot on `heroku` - -`Warning` - There are two different branches available, go to [public](github.com/vasusen-code/videoconvertor) branch if you need bot for your `channel`. - -`Fork and Click on Deploy in your fork` -

- -`Alternate way:` - -If you are facing any problem while deploying through heroku button, just fork and `deploy manually` by creating a new app in heroku. - -Add these buildpacks if you are deploying manually (Read tutorial) : - -- `https://github.com/jonathanong/heroku-buildpack-ffmpeg-latest.git` -- `heroku/python` - -

- -Deploy your bot on `Okteto` - -[![Develop on Okteto](https://okteto.com/develop-okteto.svg)](https://cloud.okteto.com) - -LICENSE: - -[![License](https://www.gnu.org/graphics/gplv3-127x51.png)](LICENSE) - +Don't deploy this branch!! diff --git a/main/plugins/compressor.py b/main/plugins/compressor.py index be9b557e..ad5b9868 100644 --- a/main/plugins/compressor.py +++ b/main/plugins/compressor.py @@ -12,7 +12,7 @@ # # License can be found in < https://github.com/vasusen-code/VIDEOconvertor/blob/public/LICENSE> . -import asyncio, time, subprocess, re, os, ffmpeg +import asyncio, time, subprocess, re, os from datetime import datetime as dt from telethon import events @@ -24,7 +24,7 @@ from .. import Drone, BOT_UN from LOCAL.localisation import SUPPORT_LINK, JPG, JPG2, JPG3 -from LOCAL.utils import ffmpeg_progress +from LOCAL.utils import ffmpeg_progress, ffmpeg_exec_progress async def compress(event, msg, ffmpeg_cmd=0, ps_name=None): Drone = event.client @@ -63,8 +63,6 @@ async def compress(event, msg, ffmpeg_cmd=0, ps_name=None): name = '__' + dt.now().isoformat("_", "seconds") + ".mp4" os.rename(n, name) await edit.edit("Extracting metadata...") - vid = ffmpeg.probe(name) - codec = vid['streams'][0]['codec_name'] hgt = video_metadata(name)["height"] wdt = video_metadata(name)["width"] if ffmpeg_cmd == 2: @@ -72,29 +70,29 @@ async def compress(event, msg, ffmpeg_cmd=0, ps_name=None): await edit.edit("Fast compress cannot be used for this media, try using HEVC!") os.rmdir("encodemedia") return - if ffmpeg_cmd == 3: - if codec == 'hevc': - await edit.edit("The given video is already in H.265 codec.") - os.rmdir("encodemedia") - return - if ffmpeg_cmd == 4: - if codec == 'h264': - await edit.edit("The given video is already in H.264 codec.") - os.rmdir("encodemedia") - return FT = time.time() progress = f"progress-{FT}.txt" - cmd = f'ffmpeg -hide_banner -loglevel quiet -progress {progress} -i """{name}""" None """{out}""" -y' + cmd = "Join @MaheshChauhan" if ffmpeg_cmd == 1: cmd = f'ffmpeg -hide_banner -loglevel quiet -progress {progress} -i """{name}""" -preset ultrafast -vcodec libx265 -crf 28 -acodec copy -c:s copy """{out}""" -y' elif ffmpeg_cmd == 2: - cmd = f'ffmpeg -hide_banner -loglevel quiet -progress {progress} -i """{name}""" -c:v libx265 -crf 22 -preset ultrafast -s 640x360 -c:a copy -c:s copy """{out}""" -y' + cmd = [ + "ffmpeg", "-hide_banner", "-loglevel", "quiet", "-progress", progress, + "-i", name, + "-c:v", "libx265", "-crf 22", "-preset", "ultrafast", "-vf", "scale=640:trunc(ow/a/2)*2", + "-c:a", "copy", + "-c:s", "copy", + out, "-y" + ] elif ffmpeg_cmd == 3: - cmd = f'ffmpeg -hide_banner -loglevel quiet -progress {progress} -i """{name}""" -preset ultrafast -vcodec libx265 -crf 20 -acodec copy -c:s copy """{out}""" -y' + cmd = f'ffmpeg -hide_banner -loglevel quiet -progress {progress} -i """{name}""" -preset ultrafast -vcodec libx265 -acodec copy -c:s copy """{out}""" -y' elif ffmpeg_cmd == 4: - cmd = f'ffmpeg -hide_banner -loglevel quiet -progress {progress} -i """{name}""" -preset ultrafast -vcodec libx264 -crf 20 -acodec copy -c:s copy """{out}""" -y' + cmd = f'ffmpeg -hide_banner -loglevel quiet -progress {progress} -i """{name}""" -preset ultrafast -vcodec libx264 -acodec copy -c:s copy """{out}""" -y' try: - await ffmpeg_progress(cmd, name, progress, FT, edit, ps_name) + if ffmpeg_cmd != 2: + await ffmpeg_progress(cmd, name, progress, FT, edit, ps_name) + else: + await ffmpeg_exec_progress(cmd, name, progress, FT, edit, ps_name) except Exception as e: os.rmdir("encodemedia") print(e) diff --git a/main/plugins/encoder.py b/main/plugins/encoder.py index 54a0b324..d65f5783 100644 --- a/main/plugins/encoder.py +++ b/main/plugins/encoder.py @@ -12,7 +12,7 @@ # # License can be found in < https://github.com/vasusen-code/VIDEOconvertor/blob/public/LICENSE> . -import asyncio, time, subprocess, re, os, ffmpeg +import asyncio, time, subprocess, re, os from datetime import datetime as dt from telethon import events @@ -24,7 +24,7 @@ from .. import Drone, BOT_UN from LOCAL.localisation import SUPPORT_LINK, JPG, JPG2, JPG3 -from LOCAL.utils import ffmpeg_progress +from LOCAL.utils import ffmpeg_exec_progress async def encode(event, msg, scale=0): Drone = event.client @@ -61,9 +61,9 @@ async def encode(event, msg, scale=0): name = '__' + dt.now().isoformat("_", "seconds") + ".mp4" os.rename(n, name) await edit.edit("Extracting metadata...") - vid = ffmpeg.probe(name) - hgt = int(vid['streams'][0]['height']) - wdt = int(vid['streams'][0]['width']) + vid = video_metadata(name) + hgt = int(vid['height']) + wdt = int(vid['width']) if scale == hgt: os.rmdir("encodemedia") return await edit.edit(f"The video is already in {scale}p resolution.") @@ -85,17 +85,45 @@ async def encode(event, msg, scale=0): return await edit.edit(f"The video is already in {scale}p resolution.") FT = time.time() progress = f"progress-{FT}.txt" - cmd = '' + cmd = ["Join @MaheshChauhan"] if scale == 240: - cmd = f'ffmpeg -hide_banner -loglevel quiet -progress {progress} -i """{name}""" -c:v libx264 -pix_fmt yuv420p -preset ultrafast -s 426x240 -crf 18 -c:a libopus -ac 2 -ab 128k -c:s copy """{out}""" -y' + cmd = [ + "ffmpeg", "-hide_banner", "-loglevel", "quiet", "-progress", progress, + "-i", name, + "-c:v", "libx264", "-pix_fmt", "yuv420p", "-preset", "faster", "-vf", "scale=426:trunc(ow/a/2)*2", "-crf", "22", + "-c:a", "libopus", "-ac", "2", "-ab", "128k", + "-c:s", "copy", + out, "-y" + ] elif scale == 360: - cmd = f'ffmpeg -hide_banner -loglevel quiet -progress {progress} -i """{name}""" -c:v libx264 -pix_fmt yuv420p -preset ultrafast -s 640x360 -crf 20 -c:a libopus -ac 2 -ab 128k -c:s copy """{out}""" -y' + cmd = [ + "ffmpeg", "-hide_banner", "-loglevel", "quiet", "-progress", progress, + "-i", name, + "-c:v", "libx264", "-pix_fmt", "yuv420p", "-preset", "faster", "-vf", "scale=640:trunc(ow/a/2)*2", "-crf", "22", + "-c:a", "libopus", "-ac", "2", "-ab", "128k", + "-c:s", "copy", + out, "-y" + ] elif scale == 480: - cmd = f'ffmpeg -hide_banner -loglevel quiet -progress {progress} -i """{name}""" -c:v libx264 -pix_fmt yuv420p -preset ultrafast -s 854x480 -crf 23 -c:a libopus -ac 2 -ab 128k -c:s copy """{out}""" -y' + cmd = [ + "ffmpeg", "-hide_banner", "-loglevel", "quiet", "-progress", progress, + "-i", name, + "-c:v", "libx264", "-pix_fmt", "yuv420p", "-preset", "faster", "-vf", "scale=854:trunc(ow/a/2)*2", "-crf", "22", + "-c:a", "libopus", "-ac", "2", "-ab", "256k", + "-c:s", "copy", + out, "-y" + ] elif scale == 720: - cmd = f'ffmpeg -hide_banner -loglevel quiet -progress {progress} -i """{name}""" -c:v libx264 -pix_fmt yuv420p -preset ultrafast -s 1280x720 -crf 27 -c:a libopus -ac 2 -ab 128k -c:s copy """{out}""" -y' + cmd = [ + "ffmpeg", "-hide_banner", "-loglevel", "quiet", "-progress", progress, + "-i", name, + "-c:v", "libx264", "-pix_fmt", "yuv420p", "-preset", "faster", "-vf", "scale=1280:trunc(ow/a/2)*2", "-crf", "22", + "-c:a", "libopus", "-ac", "2", "-ab", "256k", + "-c:s", "copy", + out, "-y" + ] try: - await ffmpeg_progress(cmd, name, progress, FT, edit, '**ENCODING:**') + await ffmpeg_exec_progress(cmd, name, progress, FT, edit, '**ENCODING:**') except Exception as e: os.rmdir("encodemedia") print(e) diff --git a/requirements.txt b/requirements.txt index a0a60872..fb7a2d7e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,3 @@ cryptg ethon==1.3.8 #for VC -ffmpeg-python tgcrypto