From a8a3e28bef648043e057a2ab65c5d0a390339078 Mon Sep 17 00:00:00 2001 From: BarsTiger Date: Fri, 3 Sep 2021 21:43:37 +0300 Subject: [PATCH] Hehehe shakalizator.py am boop boop --- shakalizator/shakalizator.py | 278 ++++++++++++++++++++++++++++++++++- 1 file changed, 272 insertions(+), 6 deletions(-) diff --git a/shakalizator/shakalizator.py b/shakalizator/shakalizator.py index 3681f2f..97ba0f6 100644 --- a/shakalizator/shakalizator.py +++ b/shakalizator/shakalizator.py @@ -1,10 +1,10 @@ import subprocess, sys, os, shutil try: - from moviepy.editor import * + import ffmpeg except: - subprocess.check_call([sys.executable, "-m", "pip", "install", 'moviepy']) - from moviepy.editor import * + subprocess.check_call([sys.executable, "-m", "pip", "install", 'ffmpeg-python']) + import ffmpeg try: from PIL import Image @@ -12,13 +12,279 @@ except: subprocess.check_call([sys.executable, "-m", "pip", "install", 'pillow']) from PIL import Image +try: + from PyQt5 import QtCore, QtGui, QtWidgets +except: + subprocess.check_call([sys.executable, "-m", "pip", "install", 'PyQt5']) + from PyQt5 import QtCore, QtGui, QtWidgets + +class Ui_MainWindow(object): + def setupUi(self, MainWindow): + MainWindow.setObjectName("MainWindow") + MainWindow.resize(563, 350) + MainWindow.setMinimumSize(QtCore.QSize(563, 350)) + MainWindow.setMaximumSize(QtCore.QSize(563, 350)) + self.centralwidget = QtWidgets.QWidget(MainWindow) + self.centralwidget.setObjectName("centralwidget") + self.shakalizatorHeader = QtWidgets.QLabel(self.centralwidget) + self.shakalizatorHeader.setGeometry(QtCore.QRect(0, 0, 561, 71)) + self.shakalizatorHeader.setText("") + self.shakalizatorHeader.setPixmap(QtGui.QPixmap("resources/shakalizator.jpg")) + self.shakalizatorHeader.setObjectName("shakalizatorHeader") + self.horizontalLayoutWidget = QtWidgets.QWidget(self.centralwidget) + self.horizontalLayoutWidget.setGeometry(QtCore.QRect(0, 80, 561, 252)) + self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget") + self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget) + self.horizontalLayout.setContentsMargins(0, 0, 0, 0) + self.horizontalLayout.setObjectName("horizontalLayout") + self.imgbutton = QtWidgets.QPushButton(self.horizontalLayoutWidget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.imgbutton.sizePolicy().hasHeightForWidth()) + self.imgbutton.setSizePolicy(sizePolicy) + self.imgbutton.setMinimumSize(QtCore.QSize(250, 250)) + self.imgbutton.setStyleSheet("font: 20pt \"Comic Sans MS\";") + self.imgbutton.setObjectName("imgbutton") + self.horizontalLayout.addWidget(self.imgbutton) + self.vidbutton = QtWidgets.QPushButton(self.horizontalLayoutWidget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum) + sizePolicy.setHorizontalStretch(10) + sizePolicy.setVerticalStretch(10) + sizePolicy.setHeightForWidth(self.vidbutton.sizePolicy().hasHeightForWidth()) + self.vidbutton.setSizePolicy(sizePolicy) + self.vidbutton.setMinimumSize(QtCore.QSize(250, 250)) + self.vidbutton.setStyleSheet("font: 20pt \"Comic Sans MS\";") + self.vidbutton.setObjectName("vidbutton") + self.horizontalLayout.addWidget(self.vidbutton) + MainWindow.setCentralWidget(self.centralwidget) + self.menubar = QtWidgets.QMenuBar(MainWindow) + self.menubar.setGeometry(QtCore.QRect(0, 0, 563, 21)) + self.menubar.setObjectName("menubar") + MainWindow.setMenuBar(self.menubar) + self.statusbar = QtWidgets.QStatusBar(MainWindow) + self.statusbar.setObjectName("statusbar") + MainWindow.setStatusBar(self.statusbar) + + self.retranslateUi(MainWindow) + QtCore.QMetaObject.connectSlotsByName(MainWindow) + + def retranslateUi(self, MainWindow): + _translate = QtCore.QCoreApplication.translate + MainWindow.setWindowTitle(_translate("MainWindow", "Shakalizator")) + self.imgbutton.setText(_translate("MainWindow", "Shakalize image")) + self.vidbutton.setText(_translate("MainWindow", "Shakalize video")) + +class Ui_VideoWindow(object): + def setupUi(self, MainWindow): + MainWindow.setObjectName("MainWindow") + MainWindow.resize(790, 585) + MainWindow.setMinimumSize(QtCore.QSize(790, 585)) + MainWindow.setMaximumSize(QtCore.QSize(790, 620)) + MainWindow.setAutoFillBackground(False) + self.centralwidget = QtWidgets.QWidget(MainWindow) + self.centralwidget.setObjectName("centralwidget") + self.gridLayoutWidget = QtWidgets.QWidget(self.centralwidget) + self.gridLayoutWidget.setGeometry(QtCore.QRect(100, 90, 591, 401)) + self.gridLayoutWidget.setObjectName("gridLayoutWidget") + self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget) + self.gridLayout.setContentsMargins(0, 0, 0, 0) + self.gridLayout.setObjectName("gridLayout") + self.soundqual = QtWidgets.QSlider(self.gridLayoutWidget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.soundqual.sizePolicy().hasHeightForWidth()) + self.soundqual.setSizePolicy(sizePolicy) + self.soundqual.setMaximumSize(QtCore.QSize(70, 16777215)) + self.soundqual.setOrientation(QtCore.Qt.Vertical) + self.soundqual.setObjectName("soundqual") + self.gridLayout.addWidget(self.soundqual, 0, 1, 1, 1) + self.vidqual = QtWidgets.QSlider(self.gridLayoutWidget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.vidqual.sizePolicy().hasHeightForWidth()) + self.vidqual.setSizePolicy(sizePolicy) + self.vidqual.setMaximumSize(QtCore.QSize(16777215, 70)) + self.vidqual.setOrientation(QtCore.Qt.Horizontal) + self.vidqual.setObjectName("vidqual") + self.gridLayout.addWidget(self.vidqual, 1, 0, 1, 1) + self.bassboostlevel = QtWidgets.QDial(self.gridLayoutWidget) + self.bassboostlevel.setObjectName("bassboostlevel") + self.gridLayout.addWidget(self.bassboostlevel, 0, 0, 1, 1) + self.backgroung = QtWidgets.QLabel(self.centralwidget) + self.backgroung.setEnabled(True) + self.backgroung.setGeometry(QtCore.QRect(0, 0, 791, 571)) + self.backgroung.setContextMenuPolicy(QtCore.Qt.NoContextMenu) + self.backgroung.setText("") + self.backgroung.setPixmap(QtGui.QPixmap("D:\\RAZNOE\\prgrming\\PyQtUIs\\../../!программирование/KOTIKOTstandalone/shakalizator/resources/videoshakal_bg.jpg")) + self.backgroung.setObjectName("backgroung") + self.bassboostTsiframi = QtWidgets.QSpinBox(self.centralwidget) + self.bassboostTsiframi.setGeometry(QtCore.QRect(340, 240, 42, 22)) + self.bassboostTsiframi.setObjectName("bassboostTsiframi") + self.bassboostNadpis = QtWidgets.QLabel(self.centralwidget) + self.bassboostNadpis.setGeometry(QtCore.QRect(340, 260, 61, 16)) + self.bassboostNadpis.setObjectName("bassboostNadpis") + self.vidQualTsiframi = QtWidgets.QSpinBox(self.centralwidget) + self.vidQualTsiframi.setGeometry(QtCore.QRect(340, 440, 42, 22)) + self.vidQualTsiframi.setObjectName("vidQualTsiframi") + self.VideoQualNadpis = QtWidgets.QTextBrowser(self.centralwidget) + self.VideoQualNadpis.setGeometry(QtCore.QRect(330, 470, 71, 31)) + self.VideoQualNadpis.setObjectName("VideoQualNadpis") + self.soundQualTsiframi = QtWidgets.QSpinBox(self.centralwidget) + self.soundQualTsiframi.setGeometry(QtCore.QRect(630, 240, 42, 22)) + self.soundQualTsiframi.setObjectName("soundQualTsiframi") + self.SoundQualNadpis = QtWidgets.QTextBrowser(self.centralwidget) + self.SoundQualNadpis.setGeometry(QtCore.QRect(620, 270, 71, 41)) + self.SoundQualNadpis.setObjectName("SoundQualNadpis") + self.pathToVideo = QtWidgets.QTextEdit(self.centralwidget) + self.pathToVideo.setGeometry(QtCore.QRect(10, 10, 601, 31)) + self.pathToVideo.setObjectName("pathToVideo") + self.openButton = QtWidgets.QPushButton(self.centralwidget) + self.openButton.setGeometry(QtCore.QRect(610, 10, 131, 31)) + self.openButton.setObjectName("openButton") + self.pushButton = QtWidgets.QPushButton(self.centralwidget) + self.pushButton.setGeometry(QtCore.QRect(610, 490, 171, 51)) + self.pushButton.setStyleSheet("font: 14pt \"Comic Sans MS\";") + self.pushButton.setObjectName("pushButton") + self.label = QtWidgets.QLabel(self.centralwidget) + self.label.setGeometry(QtCore.QRect(110, 120, 151, 16)) + self.label.setObjectName("label") + self.dial = QtWidgets.QDial(self.centralwidget) + self.dial.setGeometry(QtCore.QRect(30, 490, 31, 41)) + self.dial.setObjectName("dial") + self.horizontalScrollBar = QtWidgets.QScrollBar(self.centralwidget) + self.horizontalScrollBar.setGeometry(QtCore.QRect(90, 520, 160, 16)) + self.horizontalScrollBar.setOrientation(QtCore.Qt.Horizontal) + self.horizontalScrollBar.setObjectName("horizontalScrollBar") + self.verticalScrollBar = QtWidgets.QScrollBar(self.centralwidget) + self.verticalScrollBar.setGeometry(QtCore.QRect(760, 220, 16, 160)) + self.verticalScrollBar.setOrientation(QtCore.Qt.Vertical) + self.verticalScrollBar.setObjectName("verticalScrollBar") + self.horizontalSlider = QtWidgets.QSlider(self.centralwidget) + self.horizontalSlider.setGeometry(QtCore.QRect(50, 60, 160, 22)) + self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal) + self.horizontalSlider.setObjectName("horizontalSlider") + self.verticalSlider = QtWidgets.QSlider(self.centralwidget) + self.verticalSlider.setGeometry(QtCore.QRect(20, 90, 22, 160)) + self.verticalSlider.setOrientation(QtCore.Qt.Vertical) + self.verticalSlider.setObjectName("verticalSlider") + self.verticalSlider_2 = QtWidgets.QSlider(self.centralwidget) + self.verticalSlider_2.setGeometry(QtCore.QRect(60, 100, 22, 160)) + self.verticalSlider_2.setOrientation(QtCore.Qt.Vertical) + self.verticalSlider_2.setObjectName("verticalSlider_2") + self.horizontalSlider_2 = QtWidgets.QSlider(self.centralwidget) + self.horizontalSlider_2.setGeometry(QtCore.QRect(440, 500, 160, 22)) + self.horizontalSlider_2.setOrientation(QtCore.Qt.Horizontal) + self.horizontalSlider_2.setObjectName("horizontalSlider_2") + self.label_2 = QtWidgets.QLabel(self.centralwidget) + self.label_2.setGeometry(QtCore.QRect(290, 570, 81, 16)) + self.label_2.setObjectName("label_2") + self.backgroung.raise_() + self.gridLayoutWidget.raise_() + self.bassboostTsiframi.raise_() + self.bassboostNadpis.raise_() + self.vidQualTsiframi.raise_() + self.VideoQualNadpis.raise_() + self.soundQualTsiframi.raise_() + self.SoundQualNadpis.raise_() + self.pathToVideo.raise_() + self.openButton.raise_() + self.pushButton.raise_() + self.label.raise_() + self.dial.raise_() + self.horizontalScrollBar.raise_() + self.verticalScrollBar.raise_() + self.horizontalSlider.raise_() + self.verticalSlider.raise_() + self.verticalSlider_2.raise_() + self.horizontalSlider_2.raise_() + self.label_2.raise_() + MainWindow.setCentralWidget(self.centralwidget) + self.menubar = QtWidgets.QMenuBar(MainWindow) + self.menubar.setGeometry(QtCore.QRect(0, 0, 790, 21)) + self.menubar.setObjectName("menubar") + MainWindow.setMenuBar(self.menubar) + self.statusbar = QtWidgets.QStatusBar(MainWindow) + self.statusbar.setObjectName("statusbar") + MainWindow.setStatusBar(self.statusbar) + + self.retranslateUi(MainWindow) + QtCore.QMetaObject.connectSlotsByName(MainWindow) + + def retranslateUi(self, MainWindow): + _translate = QtCore.QCoreApplication.translate + MainWindow.setWindowTitle(_translate("MainWindow", "Video Shakalizator")) + self.bassboostNadpis.setText(_translate("MainWindow", "Bassboost")) + self.VideoQualNadpis.setHtml(_translate("MainWindow", "\n" +"\n" +"

Video quality

")) + self.SoundQualNadpis.setHtml(_translate("MainWindow", "\n" +"\n" +"

Sound quality

")) + self.pathToVideo.setPlaceholderText(_translate("MainWindow", "Path/To/Original/video.mp4")) + self.openButton.setText(_translate("MainWindow", "Open video or sound file")) + self.pushButton.setText(_translate("MainWindow", "SHAKALIZE!")) + self.label.setText(_translate("MainWindow", "KOTIKOT, script by BarsTiger")) + self.label_2.setText(_translate("MainWindow", "Its joke ui guys ;)")) + +def compress_video(video_full_path, output_file_name): + # Target audio bitrate, in bps + # Target video bitrate, in bps. + # audio_bitrate min 20000, shakal 30000 + # video_bitrate min 100000, shakal 150000 + audio_bitrate = 20000 + video_bitrate = 150000 + + i = ffmpeg.input(video_full_path) + ffmpeg.output(i, os.devnull, + **{'c:v': 'libx264', 'b:v': video_bitrate, 'pass': 1, 'f': 'mp4'} + ).overwrite_output().run() + ffmpeg.output(i, output_file_name, + **{'c:v': 'libx264', 'b:v': video_bitrate, 'pass': 2, 'c:a': 'aac', 'b:a': audio_bitrate} + ).overwrite_output().run() + +def bassboost(video_full_path, output_file_name): + audio_bitrate = 200000 + video_bitrate = 500000 + + i = ffmpeg.input(video_full_path) + + ffmpeg.output(i, os.devnull, + **{'c:v': 'libx264', 'b:v': video_bitrate, 'pass': 1, 'f': 'mp4', + 'af': 'bass=g={0}:f=110:w=0.6'.format(10)} + ).overwrite_output().run() + ffmpeg.output(i, output_file_name, + **{'c:v': 'libx264', 'b:v': video_bitrate, 'pass': 2, 'c:a': 'aac', 'b:a': audio_bitrate, + 'af': 'bass=g={0}:f=110:w=0.6'.format(10)} + ).overwrite_output().run() + videoname = "nominalo" imagename = 'dababy' im1 = Image.open(imagename + ".jpg") IMAGE_10 = imagename + "_shakalized.jpg" im1.save(IMAGE_10, "JPEG", quality=0) -clip = VideoFileClip(str(videoname + ".mp4")) -clip_resized = clip.resize(10) -clip_resized.write_videofile("movie_resized_temp.mp4") + +# compress_video(videoname + '.mp4', 'output.mp4') +# bassboost(videoname + '.mp4', 'outputbass.mp4') + +app = QtWidgets.QApplication(sys.argv) + +MainWindow = QtWidgets.QMainWindow() +uimain = Ui_MainWindow() +uimain.setupUi(MainWindow) +MainWindow.show() + +# VideoWindow = QtWidgets.QMainWindow() +# uivideo = Ui_VideoWindow() +# uivideo.setupUi(VideoWindow) +# VideoWindow.show() + +sys.exit(app.exec_())