sensible-cinema 0.24.8 → 0.24.9
Sign up to get free protection for your applications and to get access to all the features.
- data/README +13 -4
- data/Rakefile +4 -0
- data/TODO +41 -43
- data/VERSION +1 -1
- data/bin/sensible-cinema +25 -21
- data/change_log_with_feature_list.txt +16 -0
- data/documentation/how_to_create_your_own_delete_lists.txt +2 -0
- data/documentation/troubleshooting.txt +12 -3
- data/history_and_related_works_list.txt +1 -1
- data/lib/drive_info.rb +1 -1
- data/lib/eight_three.rb +23 -0
- data/lib/muter.rb +13 -4
- data/lib/screen_tracker.rb +9 -4
- data/spec/notes +14 -0
- data/spec/sensible_cinema_gui.spec.rb +9 -4
- data/template_bats/RUN SENSIBLE CINEMA CLICK HERE.bat +2 -1
- data/todo.inventionzy.txt +1 -1
- data/todo.upconvert +5 -1
- data/upconvert_netflix/HOW_TO_USE.txt +37 -0
- data/upconvert_netflix/upconvert_from_screen.avs +21 -0
- data/upconvert_netflix/uscreen.GRF +0 -0
- metadata +6 -2
data/README
CHANGED
@@ -71,15 +71,24 @@ Q. How do I watch these on my TV, not just on my computer?
|
|
71
71
|
A. One way is to plug your computer into your TV.
|
72
72
|
For instance, position a laptop near your TV and hook it in. Newer TV's support this.
|
73
73
|
Or buy a very long monitor cord and plug it in from your desktop/laptop.
|
74
|
-
You could also buy a projector, attach it to your computer, and then use that to watch it.
|
74
|
+
You could also buy a projector, attach it to your computer/laptop, and then use that to watch it.
|
75
75
|
If you're interested in also being able to "beam" it from your computer to your game console (ex: PS3) ping me--I might have
|
76
76
|
something in mind that could help, though hasn't been created yet. (Playon.tv does something like this, too, but
|
77
77
|
I might come up with a competitor to it if desired, as the existing one costs money).
|
78
|
-
You may be able to create your own edited DVD, see section "Creating an edited DVD"
|
79
|
-
Another good option is to purchase
|
78
|
+
You may be able to create your own edited version of a DVD, see section "Creating an edited DVD"
|
79
|
+
Another good option is to purchase and use a clearplay player, with accompanying subscription.
|
80
80
|
|
81
81
|
Q. I want to give an edited DVD to a friend, how do I do that well?
|
82
|
-
A. Give them the original, non-edited DVD and email them a link to sensible-cinema's website :)
|
82
|
+
A. Give them the original, non-edited DVD and then email them a link to sensible-cinema's website :)
|
83
|
+
|
84
|
+
Q. Can I use this with Windows Media Center?
|
85
|
+
A. Yes, just use some WMC plugin that allows you to "call out" to a 3rd party software to play your files.
|
86
|
+
Then use the "advanced" mode "create side-by-side EDL file" to create an EDL for your previously existing file.
|
87
|
+
Then make your WMC plugin "call out" to smplayer to play those files (through whatever means it necessary), and
|
88
|
+
it will automatically pick up and use the EDL file.
|
89
|
+
You could also use the same side-by-side EDL file with XBMC, which also honors them, though
|
90
|
+
mutes are broken currently, so it will set it to just always skip. [note: this may not be implemented all the
|
91
|
+
way yet ask on the mailing list if it is or not, for XBMC]
|
83
92
|
|
84
93
|
== Caveats ==
|
85
94
|
|
data/Rakefile
CHANGED
@@ -157,6 +157,10 @@ task 'gem_release' do
|
|
157
157
|
FileUtils.rm_rf 'pkg'
|
158
158
|
end
|
159
159
|
|
160
|
+
task 'update wbo' do
|
161
|
+
|
162
|
+
end
|
163
|
+
|
160
164
|
desc ' (releases with clean cache dir, which we need now)'
|
161
165
|
task 'full_release' => [:clear_and_copy_vendor_cache, :rebundle_copy_in_dependencies, :create_distro_dir] do # this is :release
|
162
166
|
p 'remember to run all the specs first!'
|
data/TODO
CHANGED
@@ -17,19 +17,21 @@
|
|
17
17
|
== high prio like blocking bugs ==
|
18
18
|
|
19
19
|
== under next release specific items: ==
|
20
|
-
a "half mute" demo, using volume downs/ups
|
21
|
-
plus one that also overlays an extra audio LOL
|
22
20
|
cheap minimize via (probably minimize foreground window/windows API)
|
23
21
|
url -> url inference [hopefully this is cake...]
|
24
22
|
can handle multiple dvdid's et al
|
25
|
-
VLC "insert foreign missing scene"
|
23
|
+
VLC "insert foreign missing scene" supah easy demo
|
24
|
+
overlay section with image (mplayer?)
|
26
25
|
|
27
26
|
== yes do ordered in conjunction with the above probably ==
|
28
|
-
|
29
|
-
|
30
|
-
release at some point...Jon?
|
31
|
-
|
27
|
+
release at some point...Oliver? facebook?
|
28
|
+
snapshots of snow white "normal", then deploy pics
|
32
29
|
lightning strike from various outlets...
|
30
|
+
research VOB
|
31
|
+
timesplits?
|
32
|
+
|
33
|
+
== yes do, un-ordered currently, from the various future release options ==
|
34
|
+
split out the "dependency" code from main.
|
33
35
|
try buy edit lists from all x,y,z [?] maybe ask for them for free first? ()
|
34
36
|
http://www.familysafemovies.com
|
35
37
|
cleanflix (earl? that guy [John webster http://www.amazon.com/Make-Edited-Movies-ebook/dp/B004EYT3BU]?)
|
@@ -45,63 +47,49 @@
|
|
45
47
|
http://theeditedmovieencyclopedia.blogspot.com/2008/08/clean-play-dvds-grand-opening-e-mail.html has grande list
|
46
48
|
movie mask wayback machine
|
47
49
|
make it load faster! this is cuh-razy! or splash screen! yes!
|
48
|
-
|
49
|
-
== yes do, un-ordered currently, from the various future release options ==
|
50
|
-
research VOB
|
50
|
+
netflix quality upconverter
|
51
51
|
research XBMC
|
52
|
+
@XBMC: your stuff is broken in at least these two ways (bug reports)
|
53
|
+
also are they 30fps or not? and how do they handle timesplits?
|
54
|
+
is there another format that will actually mute?
|
52
55
|
split into various separate windows themselves...
|
53
|
-
on mac at home: Constitution: is it 'tresor national'? if yes, submit bug report.
|
54
|
-
call out to VLC on DVDNAV_ERROR occurrence? what the... if can reproduce, submit bug report with trace et al.
|
55
56
|
consistency for flight of nav. srt? huh?
|
56
57
|
consistency of others, also "DVD reported full-time versus ts time" for others...
|
57
58
|
XBMC mode doesn't mind the 600 starting offset...
|
58
59
|
oh wait we weren't even using it right to begin with LOL
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
say something if the EDL is blank :)
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
some upconvert specs
|
68
|
-
fix released version downloadable and work in mac?
|
69
|
-
distro
|
70
|
-
facebook survey :)
|
60
|
+
plus it needs to "always just skip instead of mute" for now I guess
|
61
|
+
report XBMC bugs, too.
|
62
|
+
all unit tests
|
63
|
+
subs: if at beginning of a sub, add extra offset...hmm...why not?
|
64
|
+
say something if the EDL is "blank" :)
|
65
|
+
figure out if an offset of '1s' should also be accomodated for...
|
66
|
+
0.3 ... ? huh?
|
67
|
+
fix released version to work in mac
|
71
68
|
"--developer" mode
|
72
69
|
export JSON command line, note it in the docu, show it in --developer mode, no new bat file for developer mode
|
73
|
-
dialog on button aborted, see if I like it :)
|
74
|
-
fan editor (after C player ?? though I suppose we could bring back batch mplayer to also do this...)
|
75
|
-
"fan editor" .bat file LOL
|
76
|
-
|
77
70
|
new button "auto-test" a subtitles file for timing :)
|
78
|
-
new upconv button: take some snapshots (just to straight mjpeg or jpeg or the what not)
|
71
|
+
new upconv button: auto-take some snapshots (just to straight mjpeg or jpeg or the what not)
|
79
72
|
auto-update website on release.
|
80
73
|
publish a ripped raw big bunny
|
81
74
|
update development howto
|
82
75
|
@jruby scan court jester is *so* slow...what the...[mac at least...]
|
83
76
|
urug again?
|
84
77
|
after works in mac. Why not?
|
85
|
-
|
86
|
-
|
87
|
-
add largest title to the generator EDL
|
78
|
+
if 2 EDL's, still can choose a title track
|
79
|
+
auto-add largest title to the generator EDL
|
88
80
|
complain if times looks wrong...on playback? sum time
|
89
|
-
|
90
|
-
tighten splits
|
81
|
+
tighten old splits... [remove, really, I guess...sure while I only have few...and also add better instructions...]
|
91
82
|
"save to" -> same dir as "get from" yeah
|
92
83
|
open EDL can have a rememberable DIR
|
93
84
|
@instructions "this is great for comparing srt's, except...when it isn't, then you have to..."
|
94
|
-
@instructions: full srt how-to document instead of tooltip [?]
|
85
|
+
@instructions: full srt how-to document instead of tooltip [?] or combine the two! yes!
|
95
86
|
volume_name => dvd_volume_name
|
96
87
|
why is the Sintel's EDL seemingly off?
|
97
88
|
ascertain how accurate mplayer EDL is...I guess compared to...umm...something?
|
98
89
|
fix discrepancy between EDL mplayer and ffmpeg...maybe a new button "accurate EDL playback"?
|
99
90
|
maybe search at end of movies for certain things?
|
100
91
|
double check--are my ffmpeg splits really really really the same as mplayer's EDL DVD splits? really?
|
101
|
-
|
102
|
-
decide if I want to just use edl's or my fancy-shmancy, or maybe my fancy-shmancy to wrap EDL's?
|
103
|
-
don't have to use eval!
|
104
|
-
EDL with JSON on top, full timestamps.
|
92
|
+
linearize: EDL with JSON on top, full timestamps.
|
105
93
|
setpriority for several :)
|
106
94
|
bring to top after a conversion, and before prompts...
|
107
95
|
can auto-use tsmuxer at all [?]
|
@@ -145,13 +133,19 @@
|
|
145
133
|
inventionzy: blu-ray stuff from todo.inventionzy
|
146
134
|
|
147
135
|
port to mac OS X
|
148
|
-
ppc dvdid?
|
136
|
+
ppc dvdid? documentation button?
|
149
137
|
the final "edited.avi" really "could/should" be playable in WMP...if possible
|
150
138
|
add button "fast preview segment" (from dvd)
|
151
139
|
add button "fast preview one" (from file) smplayer
|
152
140
|
upconvert research/compare various options
|
141
|
+
test it out (+- with people)
|
142
|
+
propaganda it
|
153
143
|
investigate WMC "call out to smplayer + EDL" or the like...
|
154
144
|
add to docu
|
145
|
+
be a hero and sync the dvdnav repo's [?] also fix mplayer not being able to startup on some dvd's what the...this is nuts!
|
146
|
+
I'm almost beginning to think VLC for files, DEBUG_C player for DVD's (except on mac, where they just have to live hosed)
|
147
|
+
or maybe...umm...ask the dvdnav people why it might work with one and not the other? ask VLC? huh? what the...
|
148
|
+
call out to VLC on DVDNAV_ERROR occurrence? what the... if can reproduce, submit bug report with trace et al.
|
155
149
|
|
156
150
|
== other lists ==
|
157
151
|
|
@@ -176,8 +170,13 @@
|
|
176
170
|
investigate: can I use zoomplayer max?
|
177
171
|
|
178
172
|
== DVD+-DVD-realtime backlog (totally unordered, some very low prio, basically all never do) ==
|
173
|
+
check with WME plugins, add instructions, then note in the README "support for x..."
|
174
|
+
"1:07:5.718" , "1:07:10.447", "profanity", "ba.....", "Faraday that [ba.....] That ba He's gonna wish he never met us",
|
175
|
+
should have dots uh guess...
|
176
|
+
fan editor (after C player ?? though I suppose we could bring back batch mplayer to also do this...)
|
177
|
+
"fan editor" .bat file LOL
|
179
178
|
highlighting doesn't work (upconvert DVD with no title track)
|
180
|
-
|
179
|
+
yet another icon plz
|
181
180
|
@ffmpeg: bounty/plz multi-thread the lanczos filter? plz?
|
182
181
|
@ffmpeg: super video enhancer filter. plz? LOL [bounty?]
|
183
182
|
use mplayerx well [?] like wrap it...
|
@@ -268,7 +267,7 @@
|
|
268
267
|
can I just use mencoder with an EDL parameter to possibly split/join more quickly or something?
|
269
268
|
10 minute splits for much faster viewage [edl fast preview seems way too lossy ?]
|
270
269
|
port to linux
|
271
|
-
"release" it to more developers
|
270
|
+
"release" it to even more developers
|
272
271
|
plug.org, more rubyists than urug?
|
273
272
|
after OS X confidence :)
|
274
273
|
an all online EDL editor
|
@@ -368,7 +367,6 @@
|
|
368
367
|
can blank out the video, with audio continuing through...
|
369
368
|
can use a fast temp drive, save through it to another :P
|
370
369
|
(when they have two...)
|
371
|
-
blu-ray support somehow (OCR maybe)
|
372
370
|
double buffering hard drive/incoming copying from DVD might speed things, if your HD is fast.
|
373
371
|
might not work for all modes tho...
|
374
372
|
make the progress bar map "better" to the actual time that each section should take...
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.24.
|
1
|
+
0.24.9
|
data/bin/sensible-cinema
CHANGED
@@ -149,7 +149,7 @@ module SensibleSwing
|
|
149
149
|
|
150
150
|
@watch_dvd_upconvert = new_jbutton( "Watch a DVD upconverted (unedited)") do
|
151
151
|
popup = warn_if_no_upconvert_options_currently_selected
|
152
|
-
thread = play_dvd_smplayer_unedited false, false
|
152
|
+
thread = play_dvd_smplayer_unedited false, false, false
|
153
153
|
close_when_done(thread, popup)
|
154
154
|
end
|
155
155
|
@watch_dvd_upconvert.tool_tip = "Plays back the currently inserted DVD, using your current upconverter settings.\nIf it fails (dies immediately, blank screen, etc.), try setting upconvert options to a smaller screen resolution multiple.\nOr try playing the DVD with VLC first, then it might work.\nTo playback a DVD edited upconverted, set upconvert options here first, then run them using sensible cinema main--it will automatically use your new upconverting options."
|
@@ -374,7 +374,7 @@ module SensibleSwing
|
|
374
374
|
fps, so you'll need to convert it (the convert timestamp button) to be able to use it in a file.
|
375
375
|
EOL
|
376
376
|
@play_smplayer.on_clicked {
|
377
|
-
play_dvd_smplayer_unedited
|
377
|
+
play_dvd_smplayer_unedited false, true, true
|
378
378
|
}
|
379
379
|
|
380
380
|
@play_mplayer_raw = new_jbutton( "Watch full DVD unedited (realtime mplayer)")
|
@@ -385,7 +385,7 @@ module SensibleSwing
|
|
385
385
|
like "V: 3600.0" should match your subtitle line "01:00:00,000 --> ..."
|
386
386
|
EOL
|
387
387
|
@play_mplayer_raw.on_clicked {
|
388
|
-
play_dvd_smplayer_unedited true
|
388
|
+
play_dvd_smplayer_unedited true, true, true
|
389
389
|
}
|
390
390
|
|
391
391
|
@display_dvd_info = new_jbutton( "Display information about current DVD (ID, etc.)" )
|
@@ -500,7 +500,7 @@ module SensibleSwing
|
|
500
500
|
sleep 0.5 # lodo take out ???
|
501
501
|
background_thread.join if background_thread # let it write out the original fulli, if necessary [?]
|
502
502
|
nice_file = wrote_to_here_fulli
|
503
|
-
run_smplayer_blocking nice_file, nil, "-edl #{normalize_path EdlTempFile}", false
|
503
|
+
run_smplayer_blocking nice_file, nil, "-edl #{normalize_path EdlTempFile}", false, true
|
504
504
|
}
|
505
505
|
|
506
506
|
@reload = new_jbutton("reload bin/sensible-cinema code") do
|
@@ -651,10 +651,10 @@ module SensibleSwing
|
|
651
651
|
}
|
652
652
|
end
|
653
653
|
|
654
|
-
def run_smplayer_blocking play_this, title_track_maybe_nil, extra_options, force_use_mplayer, show_subs
|
654
|
+
def run_smplayer_blocking play_this, title_track_maybe_nil, extra_options, force_use_mplayer, show_subs
|
655
655
|
unless File.exist?(File.expand_path(play_this))
|
656
|
-
_dbg
|
657
|
-
raise play_this
|
656
|
+
#_dbg
|
657
|
+
raise play_this + ' non existing?' # till these go away in mac :)
|
658
658
|
end
|
659
659
|
|
660
660
|
# -framedrop is for slow CPU's
|
@@ -666,8 +666,10 @@ module SensibleSwing
|
|
666
666
|
|
667
667
|
unless show_subs
|
668
668
|
# disable subtitles
|
669
|
-
extra_options << " -
|
669
|
+
extra_options << " -nosub -noautosub -forcedsubsonly -sid 1000 "
|
670
670
|
end
|
671
|
+
extra_options << " -alang en "
|
672
|
+
extra_options += " -slang en "
|
671
673
|
|
672
674
|
parent_parent = File.basename(File.dirname(play_this))
|
673
675
|
force_use_mplayer ||= OS.mac?
|
@@ -689,10 +691,10 @@ module SensibleSwing
|
|
689
691
|
play_this = "dvdnav://#{title_track_maybe_nil}"
|
690
692
|
else
|
691
693
|
# case g:\video\filename.mpg
|
692
|
-
# leave same...
|
694
|
+
# leave it the same...
|
693
695
|
end
|
694
696
|
if play_this =~ /dvdnav/ && title_track_maybe_nil
|
695
|
-
extra_options << " -msglevel identify=4 " # prevent smplayer from using *forever* to look up info on DVD's
|
697
|
+
extra_options << " -msglevel identify=4 " # prevent smplayer from using *forever* to look up info on DVD's with -identify ...
|
696
698
|
end
|
697
699
|
|
698
700
|
extra_options += " -mouse-movements #{get_upconvert_secondary_settings} " # just in case smplayer also needs -mouse-movements... :) LODO
|
@@ -700,11 +702,9 @@ module SensibleSwing
|
|
700
702
|
if force_use_mplayer
|
701
703
|
show_mplayer_instructions_once
|
702
704
|
conf_file = File.expand_path './mplayer_input_conf'
|
703
|
-
|
704
|
-
File.write conf_file, "ENTER {dvdnav} dvdnav select\nMOUSE_BTN0_DBL vo_fullscreen\nMOUSE_BTN2 vo_fullscreen\nKP_ENTER dvdnav select\n" # dvdnav doesn't work here...
|
705
|
+
File.write conf_file, "ENTER {dvdnav} dvdnav select\nMOUSE_BTN0 {dvdnav} dvdnav select\nMOUSE_BTN0_DBL vo_fullscreen\nMOUSE_BTN2 vo_fullscreen\nKP_ENTER dvdnav select\n" # that KP_ENTER doesn't actually work. Nor the MOUSE_BTN0 on windows. Weird.
|
705
706
|
extra_options += " -font #{File.expand_path('subfont.ttf')} "
|
706
707
|
extra_options += " -volume 100 " # why start low? mplayer why oh why
|
707
|
-
extra_options += " -slang en "
|
708
708
|
if OS.windows?
|
709
709
|
# direct3d for windows 7 old nvidia cards' sake [yipes] and also dvdnav sake
|
710
710
|
extra_options += " -vo direct3d "
|
@@ -722,7 +722,7 @@ module SensibleSwing
|
|
722
722
|
set_smplayer_opts extra_options, get_upconvert_vf_settings, show_subs
|
723
723
|
c = "smplayer_portable \"#{play_this}\" -fullscreen -config-path \"#{File.dirname SMPlayerIniFile}\" "
|
724
724
|
if !we_are_in_create_mode
|
725
|
-
#c += " -close-at-end "
|
725
|
+
#c += " -close-at-end " # we're still too unstable...
|
726
726
|
end
|
727
727
|
end
|
728
728
|
puts c
|
@@ -835,7 +835,7 @@ module SensibleSwing
|
|
835
835
|
writeOut.close
|
836
836
|
end
|
837
837
|
|
838
|
-
def play_dvd_smplayer_unedited use_mplayer_instead
|
838
|
+
def play_dvd_smplayer_unedited use_mplayer_instead, show_instructions, show_subs
|
839
839
|
drive_or_file, dvd_volume_name, dvd_id, edl_path_maybe_nil, descriptors_maybe_nil = choose_dvd_or_file_and_edl_for_it false
|
840
840
|
if descriptors_maybe_nil
|
841
841
|
title_track_maybe_nil = get_title_track(descriptors_maybe_nil, false)
|
@@ -844,11 +844,15 @@ module SensibleSwing
|
|
844
844
|
# want this even with smplayer sometimes I guess...
|
845
845
|
show_mplayer_instructions_once
|
846
846
|
end
|
847
|
-
run_smplayer_non_blocking drive_or_file, title_track_maybe_nil, "-osd-fractions 2", use_mplayer_instead
|
847
|
+
run_smplayer_non_blocking drive_or_file, title_track_maybe_nil, "-osd-fractions 2", use_mplayer_instead, show_subs
|
848
848
|
|
849
849
|
end
|
850
850
|
|
851
|
-
|
851
|
+
if OS.doze? # avoid spaces :)
|
852
|
+
EdlTempFile = EightThree.convert_path_to_8_3(Dir.tmpdir + '/mplayer.temp.edl')
|
853
|
+
else
|
854
|
+
EdlTempFile = Dir.tmpdir + '/mplayer.temp.edl'
|
855
|
+
end
|
852
856
|
|
853
857
|
def show_mplayer_instructions_once
|
854
858
|
@_show_mplayer_instructions_once ||= show_non_blocking_message_dialog <<-EOL
|
@@ -882,7 +886,7 @@ module SensibleSwing
|
|
882
886
|
splits = descriptors['mplayer_dvd_splits']
|
883
887
|
end
|
884
888
|
|
885
|
-
if dvd_id == NonDvd
|
889
|
+
if dvd_id == NonDvd && !(File.basename(File.dirname(drive_or_file)) == 'VIDEO_TS') # VOB's...always start at 0
|
886
890
|
# check if starts offset...
|
887
891
|
all = `ffmpeg -i "#{drive_or_file}" 2>&1`
|
888
892
|
# Duration: 01:35:49.59, start: 600.000000
|
@@ -908,7 +912,7 @@ module SensibleSwing
|
|
908
912
|
extra_mplayer_commands << "-edl #{File.expand_path EdlTempFile}"
|
909
913
|
end
|
910
914
|
|
911
|
-
run_smplayer_non_blocking drive_or_file, title_track, extra_mplayer_commands.join(' '), false
|
915
|
+
run_smplayer_non_blocking drive_or_file, title_track, extra_mplayer_commands.join(' '), false, false
|
912
916
|
end
|
913
917
|
|
914
918
|
def assert_ownership_dialog
|
@@ -1353,7 +1357,7 @@ module SensibleSwing
|
|
1353
1357
|
if success
|
1354
1358
|
saved_to = save_to + '.avi'
|
1355
1359
|
if run_mplayer_after_done
|
1356
|
-
run_smplayer_non_blocking saved_to, nil, '', false
|
1360
|
+
run_smplayer_non_blocking saved_to, nil, '', false, false
|
1357
1361
|
else
|
1358
1362
|
if File.exist?(saved_to) && (File.size(saved_to).to_f/File.size(file_from) < 0.5) # less than 50% size is suspicious...indeed...check if exists for unit tests.
|
1359
1363
|
show_blocking_message_dialog("Warning: file size differs by more than 50%--it's possible that transcoding failed somehow")
|
@@ -1432,7 +1436,7 @@ module SensibleSwing
|
|
1432
1436
|
return [filename, File.basename(filename), NonDvd]
|
1433
1437
|
else
|
1434
1438
|
disk = opticals[selected_idx]
|
1435
|
-
out = show_non_blocking_message_dialog "calculating disk's unique id..." # useful, believe it or not
|
1439
|
+
out = show_non_blocking_message_dialog "calculating current disk's unique id..." # useful, believe it or not
|
1436
1440
|
dvd_id = DriveInfo.md5sum_disk(disk.MountPoint)
|
1437
1441
|
out.dispose
|
1438
1442
|
@_choose_dvd_drive_or_file = [disk.MountPoint, opticals[selected_idx].VolumeName, dvd_id]
|
@@ -1,3 +1,19 @@
|
|
1
|
+
== 0.24.9 ==
|
2
|
+
|
3
|
+
Fix so that mplayer can display subtitles again in advanced mode. Hopefully only in advanced mode :)
|
4
|
+
|
5
|
+
NB that already mplayer2 can pull in from multiple source locations for its new EDL format: http://lists.mplayer2.org/pipermail/mplayer2-git/2011-April/000068.html
|
6
|
+
|
7
|
+
Added experimental support for upconverting {youtube, netflix instant, whatever}, complete with demo video even.
|
8
|
+
It tracks exact screen coordinates (if entered manually), and upconverts through a way of a 3rd party upconverter, to another 3rd party player.
|
9
|
+
With variable settings for upconversion.
|
10
|
+
|
11
|
+
Added support for using volume keys to "mute" or "partial" mute (equivalent of hitting down volume key on keyboard) of any 3rd party application.
|
12
|
+
With video.
|
13
|
+
|
14
|
+
Note also that the previous video of how to overlay "static" for muting is also a demonstration of how to overlay any arbitrary audio file
|
15
|
+
over any video file/player, at a given time (example: scene-based audio overlays, fan edit comment tracks, etc.) similar to RiffTrax.
|
16
|
+
|
1
17
|
== 0.24.8 ==
|
2
18
|
|
3
19
|
Fix some bugs in upconverting playback, cleanup UI.
|
@@ -32,6 +32,8 @@ A big helper is the "parse subtitle" button.
|
|
32
32
|
Basically download a subtitle file for your DVD from opensubtitles.org
|
33
33
|
Then check that its timestamp matches (Watch full DVD unedited mplayer button, compare with "V: 3600" type output with your .srt file)
|
34
34
|
Then parse it for known profanities (parse a subtitle... button) and copy and paste the appropriate entries to your EDL.
|
35
|
+
You can also generate your own (super accurate) subtitle .srt file by using the SubtitleEdit to parse them from (unencrypted) DVD or file,
|
36
|
+
or avisynth can also extract subtitles.
|
35
37
|
|
36
38
|
For the rest of the buttons, just "mouse over"/"hover over" them for full descriptions of their potential uses.
|
37
39
|
|
@@ -1,5 +1,15 @@
|
|
1
1
|
== Troubleshooting ==
|
2
2
|
|
3
|
+
Problem: disk (or VOB folder) hangs on a "skip" segment.
|
4
|
+
A. Known problem, just use the right arrow to skip past the problem section for now.
|
5
|
+
|
6
|
+
Problem: disk (or VOB folder) just never play. Nothing happens, smplayer is just blank.
|
7
|
+
Try to playback your DVD in "VLC Media Player" first, then try it again. Also check the "mplayer logs" and report back
|
8
|
+
as a bug report.
|
9
|
+
|
10
|
+
|
11
|
+
General trouble shooting:
|
12
|
+
|
3
13
|
If you run into some snag, try cleaning your DVD and starting over (delete all files, start again).
|
4
14
|
Baking soda toothpaste might help with cleaning it.
|
5
15
|
If it still errs, report it, along with a screen snapshot and steps of
|
@@ -8,8 +18,6 @@ how to reproduce the problem, preferably.
|
|
8
18
|
It can fail also because a deletion is past end of DVD, or
|
9
19
|
Also make sure you aren't out of disk space.
|
10
20
|
|
11
|
-
Try your playback in "VLC Media Player".
|
12
|
-
|
13
21
|
You try to play back a sensible cinema-ized video file and it plays back without
|
14
22
|
audio or video (example: windows media player)?
|
15
23
|
|
@@ -20,8 +28,9 @@ You try to play back a sensible cinema-ized video file and it plays back without
|
|
20
28
|
(there's a button for that). Installing "AC3Filter" may help if you can hear no audio.
|
21
29
|
Really VLC Media Player is your best bet though.
|
22
30
|
|
23
|
-
If the end result
|
31
|
+
If the end result video is too grainy/pixelated or if the overall process is too slow, let me know and I'll work on
|
24
32
|
making it better. No really, I have some ideas, but want to see if there's need first for improvement in those areas.
|
25
33
|
|
26
34
|
Finally, report back! If there are problems that arise, I want to hear about them so we can help you through it.
|
27
35
|
See README for contact info
|
36
|
+
|
@@ -58,7 +58,7 @@ Normal DVD's versus "directors cut" versions of movies (one is at times preferab
|
|
58
58
|
http://en.wikipedia.org/wiki/Edit_decision_list (it's a linear editing tool, after all--so see the vast list of those)
|
59
59
|
Clean Flicks (used to) sell edited movies
|
60
60
|
http://college.swankmp.com/insti/edited.asp prisoners apparently have access to a few "edited" versions of movies (not many though, but there are some listed there)
|
61
|
-
http://www.videoredo.com/en/index.htm lets you "cut out" offensive content (commercials et al) and burn DVD's from mpeg's/h264 streams
|
61
|
+
http://www.videoredo.com/en/index.htm lets you "cut out" offensive content (commercials et al) and burn DVD's from mpeg's/h264 streams, and has its own EDL syntax http://wiki.xbmc.org/?title=EDL_%28commercial_skipping%29_and_SceneMarker_support
|
62
62
|
http://www.microsoft.com/windows/windowsmedia/howto/articles/device_control.aspx Windows Media Encoder supports EDL's by timestamp
|
63
63
|
http://cutlist.at shared "commercial skip" cutlists
|
64
64
|
http://www.mplayerhq.hu/DOCS/HTML/en/edl.html
|
data/lib/drive_info.rb
CHANGED
data/lib/eight_three.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'ffi'
|
2
|
+
|
3
|
+
module EightThree
|
4
|
+
extend FFI::Library
|
5
|
+
ffi_lib 'kernel32'
|
6
|
+
ffi_convention :stdcall
|
7
|
+
|
8
|
+
=begin
|
9
|
+
DWORD WINAPI GetShortPathName(
|
10
|
+
__in LPCTSTR lpszLongPath,
|
11
|
+
__out LPTSTR lpszShortPath,
|
12
|
+
__in DWORD cchBuffer
|
13
|
+
);
|
14
|
+
=end
|
15
|
+
|
16
|
+
attach_function :path_to_8_3, :GetShortPathNameA, [:pointer, :pointer, :uint], :uint
|
17
|
+
def self.convert_path_to_8_3 path
|
18
|
+
out = FFI::MemoryPointer.new 256 # bytes
|
19
|
+
path_to_8_3(path, out, out.length)
|
20
|
+
out.get_string
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
data/lib/muter.rb
CHANGED
@@ -42,25 +42,28 @@ module Muter
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def hit_volume_up_key
|
45
|
+
p 'hitting up volume key'
|
45
46
|
keybd_event(VK_VOLUME_UP, 0, 0, nil)
|
46
47
|
keybd_event(VK_VOLUME_UP, 0, KEYEVENTF_KEYUP, nil)
|
47
48
|
end
|
48
49
|
|
49
50
|
def hit_volume_down_key
|
51
|
+
p 'hitting down volume key'
|
50
52
|
keybd_event(VK_VOLUME_DOWN, 0, 0, nil)
|
51
53
|
keybd_event(VK_VOLUME_DOWN, 0, KEYEVENTF_KEYUP, nil)
|
52
54
|
end
|
53
55
|
|
54
56
|
@@use_mouse = false # inventionzy
|
55
57
|
@@use_static_on_top = false # inventionzy
|
58
|
+
@@use_down_volume_button = true
|
56
59
|
|
57
|
-
def
|
60
|
+
def start_playing_static
|
58
61
|
@player = PlayAudio.new(__DIR__ + '/static.wav')
|
59
62
|
@player.loop
|
60
63
|
p 'STARTED STATIC'
|
61
64
|
end
|
62
65
|
|
63
|
-
def
|
66
|
+
def stop_playing_static
|
64
67
|
if @player
|
65
68
|
p 'STOPPED STATIC'
|
66
69
|
@player.stop
|
@@ -68,13 +71,17 @@ module Muter
|
|
68
71
|
end
|
69
72
|
end
|
70
73
|
|
74
|
+
@@use_down_volume_button_number = 3
|
75
|
+
|
71
76
|
def mute!
|
72
77
|
#unmute! # just in case...somehow this was causing problems...windows 7 perhaps? VLC?
|
73
78
|
# anyway we just use a toggle for now...dangerous but works hopefully
|
74
79
|
if @@use_mouse
|
75
80
|
Mouse.single_click_left_mouse_button
|
76
81
|
elsif @@use_static_on_top
|
77
|
-
|
82
|
+
start_playing_static
|
83
|
+
elsif @@use_down_volume_button
|
84
|
+
@@use_down_volume_button_number.times { hit_volume_down_key }
|
78
85
|
else
|
79
86
|
hit_mute_key
|
80
87
|
end
|
@@ -85,7 +92,9 @@ module Muter
|
|
85
92
|
if @@use_mouse
|
86
93
|
Mouse.single_click_left_mouse_button
|
87
94
|
elsif @@use_static_on_top
|
88
|
-
|
95
|
+
stop_playing_static
|
96
|
+
elsif @@use_down_volume_button
|
97
|
+
@@use_down_volume_button_number.times { hit_volume_up_key }
|
89
98
|
else
|
90
99
|
hit_mute_key # Windows XP...
|
91
100
|
hit_volume_down_key
|
data/lib/screen_tracker.rb
CHANGED
@@ -75,15 +75,19 @@ class ScreenTracker
|
|
75
75
|
@hwnd = Win32::Screenshot::BitmapMaker.hwnd(@name_or_regex, @use_class_name)
|
76
76
|
end
|
77
77
|
|
78
|
-
#
|
78
|
+
# display the 'found it message' only if it was previously lost...
|
79
79
|
unless @hwnd
|
80
80
|
until @hwnd
|
81
81
|
print 'unable to find the player window currently [%s] (maybe need to start program or move mouse over it)' % @name_or_regex.inspect
|
82
82
|
sleep 1
|
83
83
|
STDOUT.flush
|
84
|
-
|
84
|
+
|
85
|
+
hwnd = Win32::Screenshot::BitmapMaker.hwnd(@name_or_regex, @use_class_name)
|
86
|
+
width, height = Win32::Screenshot::Util.dimensions_for(hwnd)
|
87
|
+
p width, height
|
88
|
+
@hwnd = hwnd
|
85
89
|
end
|
86
|
-
puts 're-
|
90
|
+
puts 're-established contact with window'
|
87
91
|
end
|
88
92
|
|
89
93
|
end
|
@@ -175,7 +179,8 @@ class ScreenTracker
|
|
175
179
|
sleep 0.02
|
176
180
|
if(Time.now - time_since_last_screen_change > 2.0)
|
177
181
|
# display a warning
|
178
|
-
p 'warning--unable to track screen time for some reason [perhaps screen obscured or it\'s not playing yet, or paused?]'
|
182
|
+
p 'warning--unable to track screen time for some reason [perhaps screen obscured or it\'s not playing yet, or paused?] ' + @hwnd.to_s
|
183
|
+
p Win32::Screenshot::Util.dimensions_for(hwnd)
|
179
184
|
@previously_displayed_warning = true
|
180
185
|
time_since_last_screen_change = Time.now
|
181
186
|
# also reget window hwnd, just in case that's the problem...(can be with VLC moving from title to title)
|
data/spec/notes
CHANGED
@@ -1,6 +1,20 @@
|
|
1
1
|
|
2
2
|
up next:
|
3
3
|
|
4
|
+
== upconvert netflix ==
|
5
|
+
|
6
|
+
media player classic appears to have no cache.
|
7
|
+
"uscreencapture settings" appears to be per app, so lost with a .grf file save [?]
|
8
|
+
or maybe appear to be overridden...by WMC, mplayer10, not virtualdub, not ffmpeg, yes mplayer
|
9
|
+
works for a demo, long term probably will need my own filter :)
|
10
|
+
though for now I could just tell them "ok download graphedit too LOL, run this in virtualdub, position your window up there"
|
11
|
+
|
12
|
+
== phreaky mplayer dvdnav ==
|
13
|
+
|
14
|
+
Tangled seemed to "not play without VLC help" at work, but not at home mac where it failed.
|
15
|
+
Snow White apparently failed quite well at work, however. Man this is really really weird.
|
16
|
+
|
17
|
+
|
4
18
|
== real time subtitle ==
|
5
19
|
0.4 extra + 0.5 not nuf blacky, marked one, hitchhikers
|
6
20
|
|
@@ -294,6 +294,7 @@ module SensibleSwing
|
|
294
294
|
end
|
295
295
|
|
296
296
|
it "should do something for fast preview" do
|
297
|
+
FileUtils.touch "selected_file.fulli_unedited.tmp.mpg"
|
297
298
|
click_button(:@fast_preview)
|
298
299
|
assert_played_mplayer
|
299
300
|
end
|
@@ -392,7 +393,7 @@ module SensibleSwing
|
|
392
393
|
it "should handle dvd drive -> dvdnav" do
|
393
394
|
for drive in ['d:', 'e:', 'f:', 'g:']
|
394
395
|
if File.exist?(drive + '/VIDEO_TS')
|
395
|
-
@subject.run_smplayer_blocking drive, nil, '', true
|
396
|
+
@subject.run_smplayer_blocking drive, nil, '', true, true
|
396
397
|
@system_blocking_command.should =~ /dvdnav/
|
397
398
|
@system_blocking_command.should =~ /-dvd-device/
|
398
399
|
end
|
@@ -401,11 +402,15 @@ module SensibleSwing
|
|
401
402
|
|
402
403
|
it 'should handle a/b/VIDEO_TS/yo.vob' do
|
403
404
|
FileUtils.mkdir_p f = 'a/b/VIDEO_TS/yo.vob'
|
404
|
-
@subject.run_smplayer_blocking f, 3, '', true
|
405
|
+
@subject.run_smplayer_blocking f, 3, '', true, false
|
405
406
|
@system_blocking_command.should =~ /dvdnav:\/\/3/
|
406
407
|
@system_blocking_command.should =~ /VIDEO_TS\/\.\./
|
407
408
|
@system_blocking_command.should =~ / -alang/ # preceding space :)
|
408
409
|
|
410
|
+
# exercise the yes subtitle options...
|
411
|
+
@subject.run_smplayer_blocking f, 3, '', true, true
|
412
|
+
@system_blocking_command.should_not =~ /-nosub/
|
413
|
+
|
409
414
|
end
|
410
415
|
|
411
416
|
it "should play edl with extra time for the mutes because of the EDL aspect" do
|
@@ -595,12 +600,12 @@ module SensibleSwing
|
|
595
600
|
@subject.stub(:system_blocking) { |c|
|
596
601
|
got = c
|
597
602
|
}
|
598
|
-
@subject.run_smplayer_blocking 'selected_file.avi', nil, "", true
|
603
|
+
@subject.run_smplayer_blocking 'selected_file.avi', nil, "", true, true
|
599
604
|
assert got =~ /hqdn3d/
|
600
605
|
|
601
606
|
# and on smplayer
|
602
607
|
MainWindow::SMPlayerIniFile.gsub!(/^.*$/, File.expand_path('./smplayer_ini_file')) # don't overwrite the real one...
|
603
|
-
@subject.run_smplayer_blocking 'selected_file.avi', nil, "", false
|
608
|
+
@subject.run_smplayer_blocking 'selected_file.avi', nil, "", false, true
|
604
609
|
assert got =~ /mplayer/
|
605
610
|
assert File.read(MainWindow::SMPlayerIniFile) =~ /hqdn3d/
|
606
611
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
@echo Welcome to Sensible Cinema...
|
2
2
|
@IF NOT EXIST sensible-cinema\VENDOR\CACHE GOTO NOVENDORDIR
|
3
|
-
@echo This window will display lots of debug output
|
3
|
+
@echo This window will display lots of debug output
|
4
|
+
@echo (you can just ignore this window or minimize it, but have to leave it open)
|
4
5
|
@setlocal
|
5
6
|
@rem disable any local rubyopt settings, just in case...
|
6
7
|
@set RUBYOPT=
|
data/todo.inventionzy.txt
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
=== patentzy yes actually do vaguely ordered ===
|
2
2
|
blu-ray OCR
|
3
|
-
more blu-ray stuff: can ID them, can playback (through...mkv? VLC?)
|
3
|
+
more blu-ray stuff: can ID them, can playback (through...mkv? VLC? powerdvd OCr/scripted?)
|
4
4
|
some blu-ray player descriptor somehow
|
5
5
|
|
6
6
|
can pick specific profanities to avoid
|
data/todo.upconvert
CHANGED
@@ -5,12 +5,16 @@ compare various computers/monitors...
|
|
5
5
|
experiment with 2x or not with various people...
|
6
6
|
also should I change screen resolution down to 800x600 then double upconvert? better?
|
7
7
|
|
8
|
-
lanczos 10?
|
8
|
+
lanczos 10? is filter length 4 better? huh? what?
|
9
9
|
|
10
10
|
hqdn3d settings?
|
11
11
|
|
12
12
|
upconvert netflix instant yes!
|
13
13
|
|
14
|
+
do I need double tapping? http://archive2.avsforum.com/avs-vb/showthread.php?s=&postid=4760581#post4760581
|
15
|
+
|
16
|
+
my own Dshow input filter, which also has a "command line" way of configuring it, for ease of use.
|
17
|
+
|
14
18
|
== never ==
|
15
19
|
|
16
20
|
add another sharpen filter?
|
@@ -0,0 +1,37 @@
|
|
1
|
+
To use this (upscaling from your own computer):
|
2
|
+
|
3
|
+
Steps:
|
4
|
+
|
5
|
+
download/install uscreencapture: http://www.umediaserver.net/umediaserver/download.html
|
6
|
+
|
7
|
+
download+install "windows sdk" http://msdn.microsoft.com/en-us/windows/bb980924 (rather big one here :) )
|
8
|
+
|
9
|
+
download virtualdub: http://www.virtualdub.org/download.html
|
10
|
+
|
11
|
+
Now start your "subject" to upconvert (ex: hulu, or netflix instant).
|
12
|
+
You can pause it if desired. Don't fullscreen it.
|
13
|
+
You'll want to leave it on its smallest "window" possible, that still has the most detail.
|
14
|
+
So basically don't let your "subject" player do any stretching, you want to leave all of that for
|
15
|
+
this program to do.
|
16
|
+
|
17
|
+
Next you'll need dual monitor, ex: laptop screen plus the VGA out on the laptop.
|
18
|
+
Position your "subject" movie so that it is flush in the top right of either monitor.
|
19
|
+
See the file "position_window.png" for an demo. Installing NiftyWindows then
|
20
|
+
"right mouse button+drag" can help you reposition it just right.
|
21
|
+
|
22
|
+
Now in virtualdub, open the file upconvert_from_screen.avs.
|
23
|
+
|
24
|
+
Click the "play" bottom left button.
|
25
|
+
See if it is capturing the right monitor, how much of the video it is capturing, if any.
|
26
|
+
|
27
|
+
Now search for the program "graphedt.exe", for me, this was in C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin
|
28
|
+
|
29
|
+
Run it. Use it to open the file uscreen.GRF
|
30
|
+
Right click on the box "uscreencapture"
|
31
|
+
Adjust the various properties so that it captures the video region you desire, by editing values, click "Apply",
|
32
|
+
then clicking the "save" icon within graphedit. Then reopen the file within virtualdub to test your new settings.
|
33
|
+
Note the x and y values you use.
|
34
|
+
|
35
|
+
Now edit the text upconvert_from_screen.avs and fill in appropriate values.
|
36
|
+
|
37
|
+
Now run it in virtualdub again, move virtualdub to your output display, enjoy watching it.
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# from http://avisynth.org/mediawiki/Enhancing_dvd_videos
|
2
|
+
|
3
|
+
Video = DirectShowSource("uscreen.GRF", fps=30, audio=False, framecount=1000000)
|
4
|
+
Video = ConvertToYUY2 (Video)
|
5
|
+
|
6
|
+
# get these from examining the window size or through trial and error.
|
7
|
+
subject_x = 720 # CHANGE THIS
|
8
|
+
subject_y = 480 # CHANGE THIS
|
9
|
+
|
10
|
+
# these are the size of your monitor that the output is displayed on. Unless it lags too much, then try experimenting with smaller values
|
11
|
+
screen_width = 1024 # CHANGE THIS
|
12
|
+
screen_height = 768 # CHANGE THIS
|
13
|
+
|
14
|
+
# note that you can get even better looking images by say, upscaling to 2x your current screen resolution, by uncommenting the following two lines
|
15
|
+
screen_width = screen_width*2
|
16
|
+
screen_height = screen_height*2
|
17
|
+
|
18
|
+
Video = Lanczos4Resize (Video, screen_width, screen_height) # said to be a good upsampler...hmm...
|
19
|
+
|
20
|
+
Video = Sharpen (Video, 0.78) # Helps sharpen smoothness enlarging does. 0.78 = (1.25*(1024/720))-1
|
21
|
+
Return Video
|
Binary file
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: sensible-cinema
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.24.
|
5
|
+
version: 0.24.9
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Roger Pack
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-07-
|
13
|
+
date: 2011-07-28 00:00:00 -06:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -247,6 +247,7 @@ files:
|
|
247
247
|
- lib/count_down_timer_jruby_swing.rb
|
248
248
|
- lib/drive_info.rb
|
249
249
|
- lib/edl_parser.rb
|
250
|
+
- lib/eight_three.rb
|
250
251
|
- lib/fake_blanker.rb
|
251
252
|
- lib/file_chooser.rb
|
252
253
|
- lib/frame_accurate.rb
|
@@ -312,6 +313,9 @@ files:
|
|
312
313
|
- todo.subtitle
|
313
314
|
- todo.upconvert
|
314
315
|
- upconvert.bat
|
316
|
+
- upconvert_netflix/HOW_TO_USE.txt
|
317
|
+
- upconvert_netflix/upconvert_from_screen.avs
|
318
|
+
- upconvert_netflix/uscreen.GRF
|
315
319
|
- vendor/jruby-complete-1.6.2.jar
|
316
320
|
- vendor/mac_dvdid/bin/dvdid
|
317
321
|
- vendor/mac_dvdid/include/dvdid/dvdid.h
|