sensible-cinema 0.20.1 → 0.20.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +11 -2
- data/README +16 -13
- data/RUN SENSIBLE CINEMA CLICK HERE.bat +1 -1
- data/Rakefile +7 -3
- data/TODO +26 -10
- data/VERSION +1 -1
- data/bin/{sensible-cinema → sensible-cinema.rb} +17 -11
- data/create or edit sensible cinema delete list files.bat +1 -1
- data/go.bat +1 -1
- data/goc.bat +1 -1
- data/lib/edl_parser.rb +22 -0
- data/lib/mencoder_wrapper.rb +1 -1
- data/lib/overlayer.rb +1 -15
- data/lib/swing_helpers.rb +2 -2
- data/lib/vlc_programmer.rb +1 -2
- data/sensible-cinema.gemspec +4 -4
- data/spec/edl_parser.spec.rb +27 -1
- data/spec/mencoder_wrapper.spec.rb +1 -1
- data/spec/notes +12 -1
- data/spec/overlayer.spec.rb +1 -8
- data/zamples/edit_decision_lists/dvds/COOL_RUNNINGS.txt +10 -10
- data/zamples/edit_decision_lists/dvds/Harry Potter 2.txt +3 -2
- metadata +5 -5
data/ChangeLog
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
== 0.20.3 ==
|
|
2
|
+
|
|
3
|
+
Minor aesthetics, also it works now with mplayer EDL mode.
|
|
4
|
+
|
|
1
5
|
== 0.20.0 ==
|
|
2
6
|
|
|
3
7
|
Add a "fast preview" option which makes editing...faster. Also it incorporates the "arbitrary precision" around settings.
|
|
@@ -115,7 +119,7 @@ Now it offers you a button to either play it on your computer, using VLC, or rip
|
|
|
115
119
|
|
|
116
120
|
== From various previous releases ==
|
|
117
121
|
It now provides for screen tracking of DVD's, youtube, hulu, and anything else you want to play on VLC, and has
|
|
118
|
-
automatic detection of CD-Drives for ripping/playing back. It can handle full screen or
|
|
122
|
+
automatic detection of CD-Drives for ripping/playing back. It can handle full screen or windowed playback.
|
|
119
123
|
It can rip from user specified "title tracks" now. It has a nice GUI. The GUI can tell you which DVD is in which
|
|
120
124
|
drive so you know more easily which one to choose.
|
|
121
125
|
|
|
@@ -126,4 +130,9 @@ via some console or other player, or can be copied to a disc and played in a DVD
|
|
|
126
130
|
|
|
127
131
|
When screen tracking, it uses input to the system (simulated keystrokes) to simulate a user "mute"
|
|
128
132
|
It overlays the playing screen (movie) with a separate window in order to simulate a "blank out" or
|
|
129
|
-
"skip this scene" which can be used with or without the mutes, as well.
|
|
133
|
+
"skip this scene" which can be used with or without the mutes, as well.
|
|
134
|
+
|
|
135
|
+
Note that previous releases had this functionality: VLC could "grab" the various sections from a DVD, one at a time, and
|
|
136
|
+
either play them back in sequence [serially], or save all of them, appending to a single final "file", using either
|
|
137
|
+
a batch file to accomplish the same, or an XSPF playlist that designated the start and stop times and fed that
|
|
138
|
+
into the player.
|
data/README
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
Sensible-cinema (also known to us as "paranoid cinema" [inside joke ha ha]
|
|
2
|
-
programmed delete lists (
|
|
1
|
+
Sensible-cinema (also known to us as "paranoid cinema" [our own inside joke ha ha]) is a program that allows you to apply
|
|
2
|
+
pre-programmed delete lists (e.g. Edit Decision Lists [2]) to DVD's you already own.
|
|
3
3
|
|
|
4
|
-
I.e. you can edit a DVD to "mute out" or skip certain scenes.
|
|
4
|
+
I.e. you can play or edit a DVD to "mute out" or skip certain scenes.
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
a few freely available open source programs [3]
|
|
8
|
-
to accomplish the editing for you. Then you can sit back and relax as you watch the "sensible"
|
|
9
|
-
version of your DVD.
|
|
6
|
+
This allows you to sit back and relax as you watch a more "sensiblized" showing of your DVD.
|
|
10
7
|
|
|
11
8
|
To use it, basically install it, insert an original DVD that you want to see edited, then run sensible cinema.
|
|
12
|
-
It will pop up some windows where you choose what to do
|
|
9
|
+
It will pop up some windows where you choose what to do.
|
|
10
|
+
You can either watch it edited, or created an edited version of the DVD, on your hard drive.
|
|
11
|
+
You could burn that edited file to a new DVD, if you desire and have a DVD burner on your computer.
|
|
12
|
+
|
|
13
|
+
How? Sensible is essentially a linear editor [1] that applies Edit Decision Lists [2] to videos, by wrapping
|
|
14
|
+
a few freely available open source programs [3]
|
|
15
|
+
to accomplish the editing for you.
|
|
13
16
|
|
|
14
17
|
Note that the whole process can at times take hours, so budget some time for it.
|
|
15
18
|
|
|
@@ -172,11 +175,11 @@ Also make sure you aren't out of disk space.
|
|
|
172
175
|
|
|
173
176
|
Also you could try a different computer (desktop computers' DVD drives seem to work better at times than laptops')
|
|
174
177
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
178
|
+
Also (for power users) make sure your version of ffmpeg is relatively new, as older versions (r19313) is known to crop wrong.
|
|
179
|
+
If you don't know what this means then you're probably ok and don't have to worry about it.
|
|
180
|
+
|
|
181
|
+
"DVDNAV stream read error!"
|
|
182
|
+
this typically means a dirty or scratched DVD.
|
|
180
183
|
|
|
181
184
|
== Feedback ==
|
|
182
185
|
|
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
@set RUBYOPT=
|
|
4
4
|
@echo This window will display lots of debug message output!
|
|
5
5
|
@java -version || echo need to install java first && pause
|
|
6
|
-
@cd sensible-cinema && java -cp "./vendor/cache/jruby-complete-1.5.5.jar" org.jruby.Main bin\sensible-cinema || echo ERROR. Please look for error message, above, and report back the error you see, or fix it && pause
|
|
6
|
+
@cd sensible-cinema && java -cp "./vendor/cache/jruby-complete-1.5.5.jar" org.jruby.Main bin\sensible-cinema.rb || echo ERROR. Please look for error message, above, and report back the error you see, or fix it && pause
|
|
7
7
|
@rem taskkill /f /im mencoder.exe
|
data/Rakefile
CHANGED
|
@@ -75,13 +75,14 @@ task 'bundle_dependencies' => 'gemspec' do
|
|
|
75
75
|
system("#{Gem.ruby} -S gem unpack #{d.name}")
|
|
76
76
|
}
|
|
77
77
|
to_here = "jruby-complete-1.5.5.jar"
|
|
78
|
+
p 'do you need to delete your old jruby complete...do you?'
|
|
78
79
|
unless File.exist? to_here
|
|
79
|
-
url = "/downloads/1.
|
|
80
|
+
url = "/downloads/1.6.0.RC1/jruby-complete-1.6.0.RC1.jar"
|
|
80
81
|
puts 'downloading in jruby-complete.jar file ' + url
|
|
81
82
|
# jruby complete .jar file
|
|
82
83
|
Net::HTTP.start("jruby.org.s3.amazonaws.com") { |http|
|
|
83
84
|
resp = http.get(url)
|
|
84
|
-
puts 'copying
|
|
85
|
+
puts 'copying jruby complete in... '
|
|
85
86
|
open(to_here, "wb") { |file|
|
|
86
87
|
file.write(resp.body)
|
|
87
88
|
}
|
|
@@ -125,11 +126,12 @@ task 'deploy' do
|
|
|
125
126
|
p 'copying in'
|
|
126
127
|
raise unless system("scp #{name} rdp@ilab1.cs.byu.edu:~/incoming")
|
|
127
128
|
p 'copying over'
|
|
128
|
-
raise unless system("ssh rdp@ilab1.cs.byu.edu \"scp ~/incoming/#{name} wilkboar@
|
|
129
|
+
raise unless system("ssh rdp@ilab1.cs.byu.edu \"scp ~/incoming/#{name} wilkboar@freemusicformormons.com:~/www/rogerdpackt28/sensible-cinema\"")
|
|
129
130
|
end
|
|
130
131
|
|
|
131
132
|
desc 'j -S rake bundle_dependencies create_distro_dir ... (releases with clean cache dir, which we need now)'
|
|
132
133
|
task 'full_release' => [:bundle_dependencies, :create_distro_dir, :build] do # :release sigh
|
|
134
|
+
system("cp -r vendor/cache ../cache.bak")
|
|
133
135
|
gems = Dir['pkg/*.gem']
|
|
134
136
|
gems[0..-2].each{|f| File.delete f} # kill old versions...
|
|
135
137
|
system("#{Gem.ruby} -S gem push #{gems[-1]}")
|
|
@@ -137,5 +139,7 @@ task 'full_release' => [:bundle_dependencies, :create_distro_dir, :build] do # :
|
|
|
137
139
|
Rake::Task["zip"].execute
|
|
138
140
|
Rake::Task["deploy"].execute
|
|
139
141
|
system("git push origin master")
|
|
142
|
+
system("cp -r ../cache.bak/* vendor/cache")
|
|
143
|
+
|
|
140
144
|
puts "don't forget to blog about it...and upload .zip of it..."
|
|
141
145
|
end
|
data/TODO
CHANGED
|
@@ -5,18 +5,21 @@
|
|
|
5
5
|
edl straight DVD replay:
|
|
6
6
|
work cars
|
|
7
7
|
clear runnings
|
|
8
|
-
finalize
|
|
9
8
|
have ben and chris test it out
|
|
10
|
-
|
|
9
|
+
|
|
11
10
|
== slightly lower than that, somewhat ordered ==
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
the "warning delet lists not there" comes up when you hit the fast preview button
|
|
13
|
+
use .done for the fast files :)
|
|
14
|
+
is there an easy way to change priority?
|
|
15
|
+
if yes then just for the system loop :)
|
|
16
|
+
ask for more beta testers
|
|
17
|
+
note: you need to re-offset your start and end times
|
|
17
18
|
change it to be aggressive sometimes yes, other times no
|
|
18
19
|
note: can make several different versions, with different filenames, and should rewatch the film after finalizing it (edited), like "grab to hard drive" and have a friend watch it, if desired.
|
|
19
|
-
|
|
20
|
+
note to previewer "you are about to preview these edits"
|
|
21
|
+
note you can use fast preview with the other going in the background
|
|
22
|
+
add "revision"...
|
|
20
23
|
the "edited.avi" *must* be playable in WMP
|
|
21
24
|
don't exit program if they don't select a disk :)
|
|
22
25
|
if they type in a "new" start time, use that as the default end time input too
|
|
@@ -24,6 +27,7 @@
|
|
|
24
27
|
don't use them linear, just linearize
|
|
25
28
|
mpeg is lossy (at least my current one pass conversion still is...) and smplayer can't play it right unedited
|
|
26
29
|
frame accurate splitter naive
|
|
30
|
+
vendorize ffmpeg
|
|
27
31
|
more DL's
|
|
28
32
|
my dvd's (loose timestamps...)
|
|
29
33
|
cars backport real EDL :)
|
|
@@ -52,13 +56,20 @@
|
|
|
52
56
|
use DVD navigator ?
|
|
53
57
|
http://msdn.microsoft.com/en-us/library/dd388584(v=VS.85).aspx
|
|
54
58
|
with an avi file sink?
|
|
59
|
+
|
|
60
|
+
D:\dev\sensible-cinema-never-commit-from-here>mv vendor\cache.bak ..
|
|
61
|
+
|
|
55
62
|
|
|
56
63
|
== DVD backlog (unordered, some very low prio, basically all never do) ==
|
|
57
64
|
|
|
65
|
+
@smplayer: provide a command line param for "extra params to run this time around" or what not...
|
|
66
|
+
create a "fantom edit"
|
|
67
|
+
check if a newer version of smplayer (+- forum links) can replace raw usage of mplayer now?
|
|
68
|
+
integrate sub-titles-zy-er (like the Python fella)
|
|
69
|
+
or maybe...use theirs?
|
|
70
|
+
@mplayer: some way to not have to use phreaky pipes in doze ("+1")
|
|
58
71
|
@ffmpeg: do you get slower the farther into large files you are?
|
|
59
|
-
FHE friendly: always harddup, "watch as grabbed" button [plus other ramifications]
|
|
60
72
|
@ffmpeg: gop 12 for ntsc-dvd?
|
|
61
|
-
@ffmpeg: doesn't grab the right time frames?
|
|
62
73
|
@mplayer: why you can't play it when VLC can? huh? (audio sync)
|
|
63
74
|
can watch conference like a music video :)
|
|
64
75
|
can play "this section then that, with this one's audio
|
|
@@ -96,6 +107,7 @@
|
|
|
96
107
|
can pull from imdb at package time [?]
|
|
97
108
|
delete fulli file automatically
|
|
98
109
|
except if it's a specific scene run...
|
|
110
|
+
FHE friendly: an option for "watch EDL as grabbed" (always harddup?)
|
|
99
111
|
.exe installer
|
|
100
112
|
just unzips, runs the .bat file for them [?] :)
|
|
101
113
|
full msi
|
|
@@ -128,7 +140,6 @@
|
|
|
128
140
|
instructions on how to do their own (private) DL or do one and submit it (public), or email their friends :P
|
|
129
141
|
add an option "just save full disk (unedited) to hard drive..."
|
|
130
142
|
note to people: can edit these to your liking, resubmit
|
|
131
|
-
imagemagick (ffmpeg) easier install...
|
|
132
143
|
DRY up dependency installation code
|
|
133
144
|
install dep's to cache2 or something...so I can avoid redownload after a release...
|
|
134
145
|
"Re-run most recent" disabled when there isn't one [?]
|
|
@@ -175,6 +186,11 @@ a single netflix descriptor, just in case
|
|
|
175
186
|
|
|
176
187
|
== random non-DVD backlog ... note: just plow forward, to "grab" available ideas...except that for now, just what *I* plan on needing for myself (filters for what I need/want). ==
|
|
177
188
|
|
|
189
|
+
figure out why I need to uses dvdnav:// sometimes, dvd:// others to not crash :P
|
|
190
|
+
|
|
191
|
+
if sued, could use straight mplayer -ss (+- one at a time, or possibly in a playlist [?] like VLC can...)
|
|
192
|
+
-hr-edl-seek ?
|
|
193
|
+
|
|
178
194
|
fade in/fade out volume, video
|
|
179
195
|
make the other stuff work again, since I no longer use YAML...
|
|
180
196
|
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.20.
|
|
1
|
+
0.20.5
|
|
@@ -18,8 +18,7 @@ This file is part of Sensible Cinema.
|
|
|
18
18
|
=end
|
|
19
19
|
|
|
20
20
|
print 'Loading Sensible Cinema...'
|
|
21
|
-
|
|
22
|
-
require File.dirname(__FILE__) + "/../lib/add_any_bundled_gems_to_load_path.rb"
|
|
21
|
+
require File.expand_path(File.dirname(__FILE__) + "/../lib/add_any_bundled_gems_to_load_path.rb")
|
|
23
22
|
require 'sane' # failure here means you haven't bundled your dependencies...[rake task]
|
|
24
23
|
|
|
25
24
|
require_relative '../lib/mencoder_wrapper'
|
|
@@ -112,7 +111,7 @@ module SensibleSwing
|
|
|
112
111
|
do_mplayer_edl
|
|
113
112
|
}
|
|
114
113
|
|
|
115
|
-
@watch_unedited = new_jbutton("Watch a DVD unedited (while grabbing to hard drive)", true)
|
|
114
|
+
@watch_unedited = new_jbutton("Watch a DVD unedited (while grabbing to hard drive--saves overall time)", true)
|
|
116
115
|
@watch_unedited.on_clicked {
|
|
117
116
|
success_no_run, wrote_to_here_fulli = do_copy_dvd_to_hard_drive false, true, true
|
|
118
117
|
sleep 5 unless success_no_run
|
|
@@ -431,7 +430,7 @@ EOL
|
|
|
431
430
|
freespace = get_freespace(save_to)
|
|
432
431
|
if freespace < 16_000_000_000
|
|
433
432
|
show_blocking_message_dialog("Warning: there may not be enough space on the disk for #{save_to}
|
|
434
|
-
(depending on DVD size, you may need like 16G free, but typically will need around 10GB free--you
|
|
433
|
+
(depending on DVD size, you may need like 16G free, but typically will need around 10GB free--you have #{freespace/1_000_000_000}GB free). Click OK to continue.")
|
|
435
434
|
end
|
|
436
435
|
save_to
|
|
437
436
|
end
|
|
@@ -450,8 +449,14 @@ EOL
|
|
|
450
449
|
# only show this message once :)
|
|
451
450
|
@show_block ||= show_blocking_message_dialog("Ok, let's preview just a portion of it. \nNote that you'll want to preview a section that wholly includes a deleted section in it\n For example, if it mutes from second 1 to second 10, you'll want to play from 00:00 to 00:12 or what not.\nAlso note that the first time you preview a section of a video, it will take a long time as it sets up the video for previewing.\nSubsequent previews will be faster, though, as long as you use the same filename.\n
|
|
452
451
|
Also note that if you change your delete list, you'll need to close, and regenerate the video to see it with your new settings.", "Preview")
|
|
452
|
+
old_start = Storage['start_time']
|
|
453
453
|
start_time = get_user_input("At what point in the video would you like to start your preview? (like 01:00 for starting at 1 minute)", Storage['start_time'])
|
|
454
|
-
|
|
454
|
+
default_end = Storage['end_time']
|
|
455
|
+
if start_time and start_time != old_start
|
|
456
|
+
default_end = EdlParser.translate_string_to_seconds(start_time) + 10
|
|
457
|
+
default_end = EdlParser.translate_time_to_human_readable(default_end)
|
|
458
|
+
end
|
|
459
|
+
end_time = get_user_input("At what point in the video would you like to finish your preview? (like 02:00 for ending at the 2 minute mark)", default_end)
|
|
455
460
|
unless start_time and end_time
|
|
456
461
|
JOptionPane.showMessageDialog(nil, " Please choose start and end", "Failed", JOptionPane::ERROR_MESSAGE)
|
|
457
462
|
return
|
|
@@ -502,10 +507,11 @@ EOL
|
|
|
502
507
|
temp_dir = Dir.tmpdir
|
|
503
508
|
temp_file = temp_dir + '/vlc.temp.bat'
|
|
504
509
|
File.write(temp_file, commands)
|
|
505
|
-
popup = NonBlockingDialog.new(
|
|
506
|
-
"Applying
|
|
507
|
-
"
|
|
508
|
-
"
|
|
510
|
+
popup = NonBlockingDialog.new(
|
|
511
|
+
"Applying #{File.basename edit_list_path} \n against #{drive} (#{dvd_title}).\n" +
|
|
512
|
+
"Copying to #{save_to}.\n" +
|
|
513
|
+
"This could take quite awhile, and will prompt you and chime a noise when it is done.\n" +
|
|
514
|
+
"You can close this window and continue working while it runs in the background.\n" +
|
|
509
515
|
"NB that the created file will be playable only with VLC (possibly with smplayer).",
|
|
510
516
|
"OK")
|
|
511
517
|
|
|
@@ -549,7 +555,7 @@ EOL
|
|
|
549
555
|
show_file = "explorer /e,/select,\"#{File.expand_path(saved_to).to_filename}\""
|
|
550
556
|
system_blocking show_file # returns immediately
|
|
551
557
|
PlayAudio.play(File.expand_path(File.dirname(__FILE__)) + "/../vendor/music.wav")
|
|
552
|
-
show_blocking_message_dialog "Done--you may now watch file #{saved_to} in VLC player (possibly smplayer)"
|
|
558
|
+
show_blocking_message_dialog "Done--you may now watch file\n #{saved_to}\n in VLC player (or possibly smplayer)"
|
|
553
559
|
end
|
|
554
560
|
else
|
|
555
561
|
show_blocking_message_dialog("Failed--please examine console output and report back!\nAlso consult the troubleshooting section of the README file.", "Failed", JOptionPane::ERROR_MESSAGE)
|
|
@@ -564,7 +570,7 @@ EOL
|
|
|
564
570
|
return @_choose_dvd_drive
|
|
565
571
|
end
|
|
566
572
|
show_blocking_message_dialog 'insert a dvd first' unless opticals.find{|d| d.VolumeName }
|
|
567
|
-
names = opticals.map{|d| d.Name + "\\" + " (" + (d.VolumeName || 'Insert DVD
|
|
573
|
+
names = opticals.map{|d| d.Name + "\\" + " (" + (d.VolumeName || 'Insert DVD to use') + ")"}
|
|
568
574
|
|
|
569
575
|
if opticals.length != 1
|
|
570
576
|
dialog = GetDisk.new(self, names)
|
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
@set RUBYOPT=
|
|
4
4
|
@echo This window will display lots of debug message output!
|
|
5
5
|
@java -version || echo need to install java first && pause
|
|
6
|
-
@cd sensible-cinema && java -cp "./vendor/cache/jruby-complete-1.5.5.jar" org.jruby.Main bin\sensible-cinema --create-mode || echo ERROR. Please look for error message, above, and report back the error you see, or fix it && pause
|
|
6
|
+
@cd sensible-cinema && java -cp "./vendor/cache/jruby-complete-1.5.5.jar" org.jruby.Main bin\sensible-cinema.rb --create-mode || echo ERROR. Please look for error message, above, and report back the error you see, or fix it && pause
|
|
7
7
|
@taskkill /f /im mencoder.exe
|
data/go.bat
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
call j bin\sensible-cinema
|
|
1
|
+
call j bin\sensible-cinema.rb
|
|
2
2
|
taskkill /f /im mencoder.exe
|
data/goc.bat
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
call j bin\sensible-cinema --create-mode
|
|
1
|
+
call j bin\sensible-cinema.rb --create-mode
|
|
2
2
|
taskkill /f /im mencoder.exe
|
data/lib/edl_parser.rb
CHANGED
|
@@ -148,6 +148,28 @@ class EdlParser
|
|
|
148
148
|
total += 60* 60 * hours.to_i
|
|
149
149
|
total
|
|
150
150
|
end
|
|
151
|
+
|
|
152
|
+
def self.translate_time_to_human_readable seconds
|
|
153
|
+
# 3600 => "1:00:00"
|
|
154
|
+
out = ''
|
|
155
|
+
hours = seconds.to_i / 3600
|
|
156
|
+
if hours > 0
|
|
157
|
+
out << "%d" % hours
|
|
158
|
+
out << ":"
|
|
159
|
+
end
|
|
160
|
+
seconds = seconds - hours*3600
|
|
161
|
+
minutes = seconds.to_i / 60
|
|
162
|
+
out << "%02d" % minutes
|
|
163
|
+
seconds = seconds - minutes * 60
|
|
164
|
+
out << ":"
|
|
165
|
+
# avoid .0 at the end
|
|
166
|
+
if seconds != seconds.to_i
|
|
167
|
+
out << "%04.1f" % seconds
|
|
168
|
+
else
|
|
169
|
+
out << "%02d" % seconds
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
|
|
151
173
|
|
|
152
174
|
|
|
153
175
|
end
|
data/lib/mencoder_wrapper.rb
CHANGED
|
@@ -30,7 +30,7 @@ class MencoderWrapper
|
|
|
30
30
|
end
|
|
31
31
|
audio_codec = these_settings['audio_codec'] || 'lavc' # not copy...sniff...or you can't hear cars...
|
|
32
32
|
video_opts = "-ovc lavc -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=1:vstrict=0:acodec=ac3:abitrate=192:autoaspect -ofps 30000/1001"
|
|
33
|
-
out + "call mencoder dvdnav://#{@dvd_title_track} -of mpeg -mpegopts format=dvd:tsaf -alang en -nocache -sid 1000 -oac #{audio_codec} #{video_opts} -o #{@big_temp} -dvd-device #{this_drive} && echo
|
|
33
|
+
out + "call mencoder dvdnav://#{@dvd_title_track} -of mpeg -mpegopts format=dvd:tsaf -alang en -nocache -sid 1000 -oac #{audio_codec} #{video_opts} -o #{@big_temp} -dvd-device #{this_drive} && echo done_grabbing > #{@big_temp}.done\n"# -vf harddup
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def calculate_final_filename to_here_final_file
|
data/lib/overlayer.rb
CHANGED
|
@@ -142,21 +142,7 @@ class OverLayer
|
|
|
142
142
|
all[type] = new.sort
|
|
143
143
|
end
|
|
144
144
|
all
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
def translate_time_to_human_readable seconds
|
|
148
|
-
# 3600 => "1:00:00"
|
|
149
|
-
out = ''
|
|
150
|
-
hours = seconds.to_i / 3600
|
|
151
|
-
out << "%d" % hours
|
|
152
|
-
out << ":"
|
|
153
|
-
seconds = seconds - hours*3600
|
|
154
|
-
minutes = seconds.to_i / 60
|
|
155
|
-
out << "%02d" % minutes
|
|
156
|
-
seconds = seconds - minutes * 60
|
|
157
|
-
out << ":"
|
|
158
|
-
out << "%04.1f" % seconds
|
|
159
|
-
end
|
|
145
|
+
end
|
|
160
146
|
|
|
161
147
|
def timestamp_changed to_this_exact_string_might_be_nil, delta
|
|
162
148
|
if @just_unblanked
|
data/lib/swing_helpers.rb
CHANGED
|
@@ -96,7 +96,7 @@ module SensibleSwing
|
|
|
96
96
|
get_content_pane.set_layout nil
|
|
97
97
|
lines.each_with_index{|line, idx|
|
|
98
98
|
jlabel = JLabel.new line
|
|
99
|
-
jlabel.set_bounds(10, 15*idx,
|
|
99
|
+
jlabel.set_bounds(10, 15*idx, 550, 24)
|
|
100
100
|
get_content_pane.add jlabel
|
|
101
101
|
}
|
|
102
102
|
close = JButton.new( close_button_text ).on_clicked {
|
|
@@ -104,7 +104,7 @@ module SensibleSwing
|
|
|
104
104
|
}
|
|
105
105
|
close.set_bounds(125,30+15*lines.length,70,25)
|
|
106
106
|
get_content_pane.add close
|
|
107
|
-
set_size
|
|
107
|
+
set_size 550, 100+15*lines.length # XXX variable width? or use swing build in better?
|
|
108
108
|
set_visible true
|
|
109
109
|
setDefaultCloseOperation JFrame::DISPOSE_ON_CLOSE
|
|
110
110
|
setLocationRelativeTo nil # center it on the screen
|
data/lib/vlc_programmer.rb
CHANGED
data/sensible-cinema.gemspec
CHANGED
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = %q{sensible-cinema}
|
|
8
|
-
s.version = "0.20.
|
|
8
|
+
s.version = "0.20.5"
|
|
9
9
|
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
11
|
s.authors = ["Roger Pack"]
|
|
12
|
-
s.date = %q{2011-01-
|
|
12
|
+
s.date = %q{2011-01-24}
|
|
13
13
|
s.email = %q{rogerdpack@gmail.com}
|
|
14
|
-
s.executables = ["sensible-cinema", "sensible-cinema
|
|
14
|
+
s.executables = ["sensible-cinema-cli", "sensible-cinema.rb"]
|
|
15
15
|
s.extensions = ["ext/mkrf_conf.rb"]
|
|
16
16
|
s.extra_rdoc_files = [
|
|
17
17
|
"ChangeLog",
|
|
@@ -27,8 +27,8 @@ Gem::Specification.new do |s|
|
|
|
27
27
|
"Rakefile",
|
|
28
28
|
"TODO",
|
|
29
29
|
"VERSION",
|
|
30
|
-
"bin/sensible-cinema",
|
|
31
30
|
"bin/sensible-cinema-cli",
|
|
31
|
+
"bin/sensible-cinema.rb",
|
|
32
32
|
"create or edit sensible cinema delete list files.bat",
|
|
33
33
|
"experimental_readme.txt",
|
|
34
34
|
"ext/mkrf_conf.rb",
|
data/spec/edl_parser.spec.rb
CHANGED
|
@@ -152,4 +152,30 @@ describe EdlParser do
|
|
|
152
152
|
|
|
153
153
|
it "should handle edge cases, like where an entry overlaps the divider, or the added stuff causes it to"
|
|
154
154
|
|
|
155
|
-
|
|
155
|
+
def translate x
|
|
156
|
+
EdlParser.translate_string_to_seconds x
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
def english y
|
|
160
|
+
EdlParser.translate_time_to_human_readable y
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
it "should translate strings to ints well" do
|
|
164
|
+
translate("00.09").should == 0.09
|
|
165
|
+
translate("1.1").should == 1.1
|
|
166
|
+
translate("01").should == 1
|
|
167
|
+
translate("1:01").should == 61
|
|
168
|
+
translate("1:01:01.1").should == 60*61+1.1
|
|
169
|
+
translate("1:01:01").should == 60*61+1
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
it "should translate ints to english timestamps well" do
|
|
173
|
+
english(60).should == "01:00"
|
|
174
|
+
english(60.1).should == "01:00.1"
|
|
175
|
+
english(3600).should == "1:00:00"
|
|
176
|
+
english(3599).should == "59:59"
|
|
177
|
+
english(3660).should == "1:01:00"
|
|
178
|
+
english(3660 + 0.1).should == "1:01:00.1"
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
end
|
|
@@ -70,7 +70,7 @@ describe MencoderWrapper do
|
|
|
70
70
|
end
|
|
71
71
|
|
|
72
72
|
it "should create a .done file after ripping" do
|
|
73
|
-
@out.should include("&& echo
|
|
73
|
+
@out.should include("&& echo done_grabbing > to_here.fulli_unedited.tmp.mpg.done")
|
|
74
74
|
end
|
|
75
75
|
|
|
76
76
|
def go
|
data/spec/notes
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
|
+
MPlayer git-20100211-1-g1c6846f-Kovensky-mt (C) 2000-2009 MPlayer Team
|
|
2
|
+
can play dvd:// and dvdnav:// with seeking at the beginning without crashing...[because old, maybe?]
|
|
3
|
+
mulder's: http://mulder.googlecode.com/files/MPUI.2010-10-17.Full-Package.exe crashes like normal [dvdnav only]
|
|
4
|
+
smplayers seem to always play dvd:// so never crash [?]
|
|
5
|
+
|
|
6
|
+
the internet seems to "not tell me" if transcode's avisplit is frame accurate or not.
|
|
7
|
+
|
|
1
8
|
watching a DVD "from the DVD" in smplayer seemed to have the right audio always. yep.
|
|
9
|
+
i.e. transcoding from dvd flick fixed it [probably]
|
|
2
10
|
|
|
3
11
|
previewing section on HP 2 hours or so and the first thing overlapped the muted section in error...went too long...huh?
|
|
4
12
|
call ffmpeg -i C:\HP_AND_THE_CHAMBER_OF_SECRETS_edited_version.fulli_unedited.tmp.mpg -vcodec copy -acodec copy -ss 7260.0 -t 10.499 C:\HP_AND_THE_CHAMBER_OF_SECRETS_edited_version.1.avi
|
|
@@ -6,6 +14,9 @@ previewing section on HP 2 hours or so and the first thing overlapped the muted
|
|
|
6
14
|
call ffmpeg -i C:\HP_AND_THE_CHAMBER_OF_SECRETS_edited_version.fulli_unedited.tmp.mpg -vcodec copy -acodec copy -ss 7272.0 -t 3.999 C:\HP_AND_THE_CHAMBER_OF_SECRETS_edited_version.3.avi
|
|
7
15
|
|
|
8
16
|
resulted in sectors of 13.17 1.93, 5.03 instead of 10.5, 1.5, and 4. huh?
|
|
17
|
+
with FFmpeg version SVN-r19313, [BAD VERSION probably]
|
|
18
|
+
call ffmpeg -i C:\HP_AND_THE_CHAMBER_OF_SECRETS_edited_version.fulli_unedited.tmp.mpg -vcodec copy -acodec copy -ss 7260.0 -t 10.499 yo.1.avi
|
|
19
|
+
with r32676 seemed much more sane (!)
|
|
9
20
|
|
|
10
21
|
$ to fix mplayer out of sync audio:
|
|
11
22
|
$ ffmpeg -i HP_AND_THE_CHAMBER_OF_SECRETS_edited_version.fulli_unedited.tmp.mpg -target ntsc-dvd -t 1600 yo.mpg
|
|
@@ -19,7 +30,7 @@ bob "they will come" has no mplayer overlap (45 minutes long)
|
|
|
19
30
|
|
|
20
31
|
HP 2 "full and edited version" had a twidge off of audio even in VLC (unsure if that was copy or lavc audio)
|
|
21
32
|
seems consistent
|
|
22
|
-
The DVD (flick) appeared to have audio in perfect sync, always.
|
|
33
|
+
The DVD (flick) burned, then played, appeared to have audio in perfect sync, always.
|
|
23
34
|
seems to play fine in smplayer
|
|
24
35
|
the fulli version was *totally off* in smplayer
|
|
25
36
|
fulli, edited version had some artifacts in VLC
|
data/spec/overlayer.spec.rb
CHANGED
|
@@ -430,14 +430,7 @@ describe OverLayer do
|
|
|
430
430
|
@o.status.should include("q") # for quit
|
|
431
431
|
end
|
|
432
432
|
end
|
|
433
|
-
|
|
434
|
-
it "should have human readable output" do
|
|
435
|
-
@o.translate_time_to_human_readable(3600).should == "1:00:00.0"
|
|
436
|
-
@o.translate_time_to_human_readable(3600.0).should == "1:00:00.0"
|
|
437
|
-
@o.translate_time_to_human_readable(3601).should == "1:00:01.0"
|
|
438
|
-
@o.translate_time_to_human_readable(3661).should == "1:01:01.0"
|
|
439
|
-
end
|
|
440
|
-
|
|
433
|
+
|
|
441
434
|
it "should no longer accept human readable style as starting seconds" do
|
|
442
435
|
proc { OverLayer.new 'temp.yml', "01:01.5" }.should raise_error(ArgumentError)
|
|
443
436
|
end
|
|
@@ -6,21 +6,19 @@
|
|
|
6
6
|
"21:58", "22:07", "butt",
|
|
7
7
|
"22:34", "22:34.6", "He..",
|
|
8
8
|
"23:56.5", "23:56.8", "he..",
|
|
9
|
-
"29:44.
|
|
10
|
-
"34:08.5", "34:09", "L...",
|
|
9
|
+
"29:44.5", "29:45", "G.. name",
|
|
10
|
+
"34:08.5", "34:09.1", "L...",
|
|
11
11
|
"40:55", "40:56", "g",
|
|
12
|
-
"47:24.4", "47:25", "A. holes",
|
|
13
12
|
"48:40", "48:41.1", "G",
|
|
14
|
-
"
|
|
13
|
+
"1:01:40.2", "1:01:41", "sled g... does it again",
|
|
15
14
|
"1:02:03", "1:02:04", "butt whipped",
|
|
16
15
|
"1:02:36.2", "1:02:37", "butt whipping",
|
|
17
16
|
"1:11:35", "1:11:35.4", "h..",
|
|
18
|
-
"1:12:43", "1:12:44", "G",
|
|
17
|
+
"1:12:43", "1:12:44.5", "G",
|
|
19
18
|
"1:22:01.5", "1:22:02", "d...",
|
|
20
|
-
"1:22:53", "1:22:54", "dingaling",
|
|
21
|
-
"1:23:03", "1:23:03.
|
|
22
|
-
"1:23:48", "1:23:49", "G.",
|
|
23
|
-
"1:01:40.2", "1:01:41", "sled g... does it again"
|
|
19
|
+
"1:22:53.5", "1:22:54", "dingaling",
|
|
20
|
+
"1:23:03.3", "1:23:03.8", "h.",
|
|
21
|
+
"1:23:48.5", "1:23:49.5", "G.",
|
|
24
22
|
],
|
|
25
23
|
|
|
26
24
|
|
|
@@ -28,10 +26,12 @@
|
|
|
28
26
|
"15:20", "15:30",
|
|
29
27
|
"38:40.4", "38:43.6", "j. c. what h..",
|
|
30
28
|
"58:40", "58:41", "bad arsenic, but I dislike lip reading.",
|
|
29
|
+
"47:24.4", "47:25", "A. holes",
|
|
31
30
|
"59:08", "59:09", " bad arsenic",
|
|
32
31
|
"59:15", "59:49", "bad arsenic ...",
|
|
32
|
+
"59:51.8", "59:52.2", "D",
|
|
33
33
|
"1:14:30.5", "1:14:47", "psalm",
|
|
34
|
-
"1:16:57.
|
|
34
|
+
"1:16:57.3", "1:16:58", "bad a..",
|
|
35
35
|
],
|
|
36
36
|
|
|
37
37
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# comments can go after a # on any line.
|
|
2
2
|
"mutes" => [
|
|
3
3
|
"00:09:44", "00:09:46", "darn",
|
|
4
|
-
"00:12:
|
|
4
|
+
"00:12:54", "00:12:55", "good L..",
|
|
5
5
|
"01:20:59", "01:21:00", "h..",
|
|
6
6
|
"01:21:16", "01:21:17.5", "he..",
|
|
7
7
|
"02:01:10.5", "02:01:12", "h..",
|
|
@@ -14,4 +14,5 @@
|
|
|
14
14
|
"disk_unique_id" => "9a56136cdd5bc321ebff064cd59b8322",
|
|
15
15
|
"title" => "Harry Potter 2 Chamber of secrets",
|
|
16
16
|
"grabbed_md5" => "2f0395de5eaf0c64eae859e17ba270fd",
|
|
17
|
-
"mplayer_dvd_splits" => ["1:16:32"]
|
|
17
|
+
"mplayer_dvd_splits" => ["1:16:32"]
|
|
18
|
+
#plenty of violence at the end with the snake, and also the spiders. hmmmm.
|
metadata
CHANGED
|
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
|
5
5
|
segments:
|
|
6
6
|
- 0
|
|
7
7
|
- 20
|
|
8
|
-
-
|
|
9
|
-
version: 0.20.
|
|
8
|
+
- 5
|
|
9
|
+
version: 0.20.5
|
|
10
10
|
platform: ruby
|
|
11
11
|
authors:
|
|
12
12
|
- Roger Pack
|
|
@@ -14,7 +14,7 @@ autorequire:
|
|
|
14
14
|
bindir: bin
|
|
15
15
|
cert_chain: []
|
|
16
16
|
|
|
17
|
-
date: 2011-01-
|
|
17
|
+
date: 2011-01-24 00:00:00 -07:00
|
|
18
18
|
default_executable:
|
|
19
19
|
dependencies:
|
|
20
20
|
- !ruby/object:Gem::Dependency
|
|
@@ -148,8 +148,8 @@ dependencies:
|
|
|
148
148
|
description:
|
|
149
149
|
email: rogerdpack@gmail.com
|
|
150
150
|
executables:
|
|
151
|
-
- sensible-cinema
|
|
152
151
|
- sensible-cinema-cli
|
|
152
|
+
- sensible-cinema.rb
|
|
153
153
|
extensions:
|
|
154
154
|
- ext/mkrf_conf.rb
|
|
155
155
|
extra_rdoc_files:
|
|
@@ -165,8 +165,8 @@ files:
|
|
|
165
165
|
- Rakefile
|
|
166
166
|
- TODO
|
|
167
167
|
- VERSION
|
|
168
|
-
- bin/sensible-cinema
|
|
169
168
|
- bin/sensible-cinema-cli
|
|
169
|
+
- bin/sensible-cinema.rb
|
|
170
170
|
- create or edit sensible cinema delete list files.bat
|
|
171
171
|
- experimental_readme.txt
|
|
172
172
|
- ext/mkrf_conf.rb
|