Now uses the right minimum and maximum bitrate

Now sets the right file extension with Matroska and DivX files
This commit is contained in:
Sergio Costas 2016-12-15 00:09:40 +01:00
parent c3f8d3531d
commit 27828d2dc5
9 changed files with 987 additions and 928 deletions

View file

@ -1,4 +1,8 @@
## History of versions ## ## History of versions ##
* version 4.8.6 (2016-12-14)
* Now ensures that the average bitrate is never smaller than the minimum bitrate
* Now the matroska and divx files have the right extension
* version 4.8.5 (2016-11-24) * version 4.8.5 (2016-11-24)
* Fixed a bug when loading a project file (thanks to RecursiveProgrammer) * Fixed a bug when loading a project file (thanks to RecursiveProgrammer)
* Updated the german translation * Updated the german translation

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 --> <!-- Generated with glade 3.20.0 -->
<interface> <interface>
<requires lib="gtk+" version="3.10"/> <requires lib="gtk+" version="3.10"/>
<object class="GtkDialog" id="dialog_create"> <object class="GtkDialog" id="dialog_create">
@ -62,9 +62,11 @@
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<child> <child>
<object class="GtkLabel" id="label1"> <object class="GtkLabel" id="label1">
<property name="width_request">380</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="label" translatable="yes">Choose the folder where Devede will create the files and a name for it. Do not use a folder in a VFAT/FAT32 drive. Characters /, | and \ are not accepted and will be replaced by underscores.</property> <property name="label" translatable="yes">Choose the folder where Devede will create the files and a name for it. Do not use a folder in a VFAT/FAT32 drive. Characters /, | and \ are not accepted and will be replaced by underscores.</property>
<property name="justify">fill</property>
<property name="wrap">True</property> <property name="wrap">True</property>
</object> </object>
<packing> <packing>

View file

@ -6,6 +6,7 @@
<object class="GtkDialog" id="done"> <object class="GtkDialog" id="done">
<property name="width_request">640</property> <property name="width_request">640</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="resizable">False</property>
<property name="type_hint">dialog</property> <property name="type_hint">dialog</property>
<child internal-child="vbox"> <child internal-child="vbox">
<object class="GtkBox" id="dialog-vbox1"> <object class="GtkBox" id="dialog-vbox1">

View file

@ -6,6 +6,7 @@
<object class="GtkDialog" id="dialog_error"> <object class="GtkDialog" id="dialog_error">
<property name="width_request">640</property> <property name="width_request">640</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="resizable">False</property>
<property name="modal">True</property> <property name="modal">True</property>
<property name="window_position">center</property> <property name="window_position">center</property>
<property name="type_hint">dialog</property> <property name="type_hint">dialog</property>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.16.1 --> <!-- Generated with glade 3.20.0 -->
<interface> <interface>
<requires lib="gtk+" version="3.10"/> <requires lib="gtk+" version="3.10"/>
<object class="GtkListStore" id="liststore_elements"> <object class="GtkListStore" id="liststore_elements">
@ -12,6 +12,7 @@
<property name="width_request">480</property> <property name="width_request">480</property>
<property name="height_request">360</property> <property name="height_request">360</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="resizable">False</property>
<property name="modal">True</property> <property name="modal">True</property>
<property name="window_position">center</property> <property name="window_position">center</property>
<property name="type_hint">dialog</property> <property name="type_hint">dialog</property>
@ -56,6 +57,7 @@
<object class="GtkLabel" id="label_message"> <object class="GtkLabel" id="label_message">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="justify">fill</property>
<property name="wrap">True</property> <property name="wrap">True</property>
</object> </object>
<packing> <packing>

View file

@ -64,7 +64,7 @@ except:
setup( setup(
name='devedeng', name='devedeng',
version='4.8.5', version='4.8.6',
description='A video DVD creator', description='A video DVD creator',
long_description = "A program that allows to create video DVDs", long_description = "A program that allows to create video DVDs",

View file

@ -231,6 +231,12 @@ class avconv(devedeng.avbase.avbase):
self.command_var.append("libmp3lame") self.command_var.append("libmp3lame")
self.command_var.append("-f") self.command_var.append("-f")
self.command_var.append("avi") self.command_var.append("avi")
self.command_var.append("-maxrate:v")
self.command_var.append(str(maxrate))
self.command_var.append("-minrate:v")
if minrate < (devedeng.project.devede_project.divx_min_bps * 1000):
minrate = devedeng.project.devede_project.divx_min_bps * 1000
self.command_var.append(str(minrate))
elif (self.config.disc_type == "mkv"): elif (self.config.disc_type == "mkv"):
self.command_var.append("-vcodec") self.command_var.append("-vcodec")
self.command_var.append("h264") self.command_var.append("h264")
@ -238,8 +244,13 @@ class avconv(devedeng.avbase.avbase):
self.command_var.append("libmp3lame") self.command_var.append("libmp3lame")
self.command_var.append("-f") self.command_var.append("-f")
self.command_var.append("matroska") self.command_var.append("matroska")
else: self.command_var.append("-maxrate:v")
if (self.config.disc_type=="dvd"): self.command_var.append(str(maxrate))
self.command_var.append("-minrate:v")
if minrate < (devedeng.project.devede_project.mkv_min_bps * 1000):
minrate = devedeng.project.devede_project.mkv_min_bps * 1000
self.command_var.append(str(minrate))
elif (self.config.disc_type=="dvd"):
if not file_project.no_reencode_audio_video: if not file_project.no_reencode_audio_video:
self.command_var.append("-c:v") self.command_var.append("-c:v")
self.command_var.append("mpeg2video") self.command_var.append("mpeg2video")
@ -266,12 +277,12 @@ class avconv(devedeng.avbase.avbase):
self.command_var.append("-pix_fmt") self.command_var.append("-pix_fmt")
self.command_var.append("yuv420p") self.command_var.append("yuv420p")
self.command_var.append("-maxrate:v") self.command_var.append("-maxrate:v")
if maxrate > 9000000: if maxrate > (devedeng.project.devede_project.dvd_max_bps_base[0] * 1000):
maxrate = 9000000 maxrate = devedeng.project.devede_project.dvd_max_bps_base[0] * 1000
self.command_var.append(str(maxrate)) self.command_var.append(str(maxrate))
self.command_var.append("-minrate:v") self.command_var.append("-minrate:v")
if minrate < 15000000: if minrate < (devedeng.project.devede_project.dvd_min_bps * 1000):
minrate = 15000000 minrate = devedeng.project.devede_project.dvd_min_bps * 1000
self.command_var.append(str(minrate)) self.command_var.append(str(minrate))
self.command_var.append("-bufsize") self.command_var.append("-bufsize")
self.command_var.append("1835008") self.command_var.append("1835008")
@ -361,12 +372,12 @@ class avconv(devedeng.avbase.avbase):
self.command_var.append("-pix_fmt") self.command_var.append("-pix_fmt")
self.command_var.append("yuv420p") self.command_var.append("yuv420p")
self.command_var.append("-maxrate:v") self.command_var.append("-maxrate:v")
if maxrate > 2516000: if maxrate > (devedeng.project.devede_project.svcd_max_bps_base[0] * 1000):
maxrate = 2516000 maxrate = devedeng.project.devede_project.svcd_max_bps_base[0] * 1000
self.command_var.append(str(maxrate)) self.command_var.append(str(maxrate))
self.command_var.append("-minrate:v") self.command_var.append("-minrate:v")
if minrate < 1145000: if minrate < (devedeng.project.devede_project.svcd_min_bps * 1000):
minrate = 1145000 minrate = (devedeng.project.devede_project.svcd_min_bps * 1000)
self.command_var.append(str(minrate)) self.command_var.append(str(minrate))
self.command_var.append("-bufsize") self.command_var.append("-bufsize")
self.command_var.append("1835008") self.command_var.append("1835008")

View file

@ -22,6 +22,7 @@ import os
import devedeng.configuration_data import devedeng.configuration_data
import devedeng.executor import devedeng.executor
import devedeng.mux_dvd_menu import devedeng.mux_dvd_menu
import devedeng.project
class ffmpeg(devedeng.executor.executor): class ffmpeg(devedeng.executor.executor):
@ -224,6 +225,12 @@ class ffmpeg(devedeng.executor.executor):
self.command_var.append("libmp3lame") self.command_var.append("libmp3lame")
self.command_var.append("-f") self.command_var.append("-f")
self.command_var.append("avi") self.command_var.append("avi")
self.command_var.append("-maxrate:v")
self.command_var.append(str(maxrate))
self.command_var.append("-minrate:v")
if minrate < (devedeng.project.devede_project.divx_min_bps * 1000):
minrate = devedeng.project.devede_project.divx_min_bps * 1000
self.command_var.append(str(minrate))
elif (self.config.disc_type == "mkv"): elif (self.config.disc_type == "mkv"):
self.command_var.append("-vcodec") self.command_var.append("-vcodec")
self.command_var.append("h264") self.command_var.append("h264")
@ -231,8 +238,13 @@ class ffmpeg(devedeng.executor.executor):
self.command_var.append("libmp3lame") self.command_var.append("libmp3lame")
self.command_var.append("-f") self.command_var.append("-f")
self.command_var.append("matroska") self.command_var.append("matroska")
else: self.command_var.append("-maxrate:v")
if (self.config.disc_type=="dvd"): self.command_var.append(str(maxrate))
self.command_var.append("-minrate:v")
if minrate < (devedeng.project.devede_project.mkv_min_bps * 1000):
minrate = devedeng.project.devede_project.mkv_min_bps * 1000
self.command_var.append(str(minrate))
elif (self.config.disc_type=="dvd"):
if not file_project.no_reencode_audio_video: if not file_project.no_reencode_audio_video:
self.command_var.append("-c:v") self.command_var.append("-c:v")
self.command_var.append("mpeg2video") self.command_var.append("mpeg2video")
@ -259,12 +271,12 @@ class ffmpeg(devedeng.executor.executor):
self.command_var.append("-pix_fmt") self.command_var.append("-pix_fmt")
self.command_var.append("yuv420p") self.command_var.append("yuv420p")
self.command_var.append("-maxrate:v") self.command_var.append("-maxrate:v")
if maxrate > 9000000: if maxrate > (devedeng.project.devede_project.dvd_max_bps_base[0] * 1000):
maxrate = 9000000 maxrate = devedeng.project.devede_project.dvd_max_bps_base[0] * 1000
self.command_var.append(str(maxrate)) self.command_var.append(str(maxrate))
self.command_var.append("-minrate:v") self.command_var.append("-minrate:v")
if minrate < 1500000: if minrate < (devedeng.project.devede_project.dvd_min_bps * 1000):
minrate = 1500000 minrate = devedeng.project.devede_project.dvd_min_bps * 1000
self.command_var.append(str(minrate)) self.command_var.append(str(minrate))
self.command_var.append("-bufsize") self.command_var.append("-bufsize")
self.command_var.append("1835008") self.command_var.append("1835008")
@ -354,12 +366,12 @@ class ffmpeg(devedeng.executor.executor):
self.command_var.append("-pix_fmt") self.command_var.append("-pix_fmt")
self.command_var.append("yuv420p") self.command_var.append("yuv420p")
self.command_var.append("-maxrate:v") self.command_var.append("-maxrate:v")
if maxrate > 2516000: if maxrate > (devedeng.project.devede_project.svcd_max_bps_base[0] * 1000):
maxrate = 2516000 maxrate = devedeng.project.devede_project.svcd_max_bps_base[0] * 1000
self.command_var.append(str(maxrate)) self.command_var.append(str(maxrate))
self.command_var.append("-minrate:v") self.command_var.append("-minrate:v")
if minrate < 1145000: if minrate < (devedeng.project.devede_project.svcd_min_bps * 1000):
minrate = 1145000 minrate = (devedeng.project.devede_project.svcd_min_bps * 1000)
self.command_var.append(str(minrate)) self.command_var.append(str(minrate))
self.command_var.append("-bufsize") self.command_var.append("-bufsize")
self.command_var.append("1835008") self.command_var.append("1835008")

View file

@ -42,6 +42,26 @@ import devedeng.help
class devede_project: class devede_project:
dvd_max_bps_base = {0: 9000}
dvd_min_bps = 300
dvd_max_total = 10000
svcd_max_bps_base = {0: 2700}
svcd_min_bps = 200
svcd_max_total = 2700
divx_max_bps_base = {0: 4854, 720: 9708, 1080: 20000}
divx_min_bps = 300
divx_max_total = -1
mkv_max_bps_base = {0: 192, 240: 2000, 480: 14000, 720: 50000, 1080: 240000}
mkv_min_bps = 192
mkv_max_total = -1
def_max_bps_base = {0: 9000}
def_min_bps = 300
def_max_total = -1
def __init__(self): def __init__(self):
self.config = devedeng.configuration_data.configuration.get_config() self.config = devedeng.configuration_data.configuration.get_config()
@ -344,25 +364,25 @@ class devede_project:
fixed_size += self.menu.get_estimated_size() * 8.0 fixed_size += self.menu.get_estimated_size() * 8.0
if (self.disc_type == "dvd"): if (self.disc_type == "dvd"):
max_bps_base = {0: 9000} max_bps_base = devede_project.dvd_max_bps_base.copy()
min_bps = 300 min_bps = devede_project.dvd_min_bps
max_total = 10000 max_total = devede_project.dvd_max_total
elif (self.disc_type == "svcd") or (self.disc_type == "cvd"): elif (self.disc_type == "svcd") or (self.disc_type == "cvd"):
max_bps_base = {0: 2700} max_bps_base = devede_project.svcd_max_bps_base.copy()
min_bps = 200 min_bps = devede_project.svcd_min_bps
max_total = 2700 max_total = devede_project.svcd_max_total
elif (self.disc_type == "divx"): elif (self.disc_type == "divx"):
max_bps_base = {0: 4854, 720: 9708, 1080: 20000} max_bps_base = devede_project.divx_max_bps_base.copy()
min_bps = 300 min_bps = devede_project.divx_min_bps
max_total = -1 max_total = devede_project.divx_max_total
elif (self.disc_type == "mkv"): elif (self.disc_type == "mkv"):
max_bps_base = {0: 192, 240: 2000, 480: 14000, 720: 50000, 1080: 240000} max_bps_base = devede_project.mkv_max_bps_base.copy()
min_bps = 192 min_bps = devede_project.mkv_min_bps
max_total = -1 max_total = devede_project.mkv_max_total
else: else:
max_bps_base = {0: 9000} max_bps_base = devede_project.def_max_bps_base.copy()
min_bps = 300 min_bps = devede_project.def_min_bps
max_total = -1 max_total = devede_project.def_max_total
if (total_resolution != 0): if (total_resolution != 0):
remaining_disc_size = ((8000.0 * self.get_dvd_size()[0]) - fixed_size) # in kbits remaining_disc_size = ((8000.0 * self.get_dvd_size()[0]) - fixed_size) # in kbits
@ -539,8 +559,14 @@ class devede_project:
except: except:
pass pass
counter = 0 counter = 0
if self.disc_type == "divx":
extension = "avi"
elif self.disc_type == "mkv":
extension = "mkv"
else:
extension = "mpg"
for movie in file_movies: for movie in file_movies:
p = movie.do_conversion(os.path.join(movie_folder,"movie_"+str(counter)+".mpg")) p = movie.do_conversion(os.path.join(movie_folder,"movie_{:d}.{:s}".format(counter,extension)))
run_window.add_process(p) run_window.add_process(p)
final_dependencies.append(p) final_dependencies.append(p)
counter += 1 counter += 1