sensible-cinema 0.28.0 → 0.28.1
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE.TXT +1 -1
- data/README +6 -4
- data/Rakefile +41 -24
- data/TODO +41 -10
- data/VERSION +1 -1
- data/change_log_with_feature_list.txt +12 -0
- data/documentation/is_it_legal_to_copy_dvds.txt +4 -2
- data/go +1 -0
- data/goc +1 -0
- data/history_and_related_works_list.txt +2 -0
- data/inventionzy_files/control_youtube.html +135 -0
- data/inventionzy_files/md5s.txt +53 -0
- data/inventionzy_files/play_with_inserted_scene.bat +8 -0
- data/inventionzy_files/play_with_overlay.bat +24 -0
- data/inventionzy_files/serve.rb +6 -0
- data/inventionzy_files/transcript_mute_vlc.txt +117 -0
- data/lib/add_any_bundled_gems_to_load_path.rb +1 -1
- data/lib/edl_parser.rb +2 -0
- data/lib/gui/sensible-cinema-base.rb +10 -68
- data/lib/gui/sensible-cinema-create.rb +16 -10
- data/lib/gui/sensible-cinema-dependencies.rb +1 -0
- data/lib/gui/sensible-cinema-normal.rb +11 -14
- data/lib/muter.rb +1 -1
- data/lib/subtitle_profanity_finder.rb +3 -2
- data/spec/notes +2 -0
- data/template_bats/README_DISTRO.TXT +6 -0
- data/template_bats/mac/RUN SENSIBLE CINEMA CLICK HERE.sh b/data/template_bats/mac/RUN SENSIBLE CINEMA CLICK → HERE.command +0 -0
- data/template_bats/mac/{advanced--create or edit sensible cinema edit list files.sh → advanced--create or edit sensible cinema edit list files.command } +1 -0
- data/template_bats/mac/{advanced--run-upconverting-video-player.sh → advanced--run-upconverting-video-player.command} +1 -0
- data/todo.inventionzy.txt +11 -0
- data/todo.propaganda +21 -18
- data/vendor/rdp-win32screenshot-0.0.9/.document +5 -0
- data/vendor/rdp-win32screenshot-0.0.9/History.rdoc +53 -0
- data/vendor/rdp-win32screenshot-0.0.9/LICENSE +20 -0
- data/vendor/rdp-win32screenshot-0.0.9/RDP_BRANCH_HAS_MASTER_WITH_CORRECT_VERSION_NUMBER +0 -0
- data/vendor/rdp-win32screenshot-0.0.9/RDP_VERSION_IS_IN_RDP_BRANCH +0 -0
- data/vendor/rdp-win32screenshot-0.0.9/README.rdoc +95 -0
- data/vendor/rdp-win32screenshot-0.0.9/Rakefile +63 -0
- data/vendor/rdp-win32screenshot-0.0.9/VERSION +1 -0
- data/vendor/rdp-win32screenshot-0.0.9/enumerated +55576 -0
- data/vendor/rdp-win32screenshot-0.0.9/lib/aero_offscreen_srccopy_captureblt_doesnt_have_everything.bmp.gz +0 -0
- data/vendor/rdp-win32screenshot-0.0.9/lib/enumerate.rb +6 -0
- data/vendor/rdp-win32screenshot-0.0.9/lib/firefox.bmp +0 -0
- data/vendor/rdp-win32screenshot-0.0.9/lib/normal.bmp +0 -0
- data/vendor/rdp-win32screenshot-0.0.9/lib/normal2.bmp +0 -0
- data/vendor/rdp-win32screenshot-0.0.9/lib/notes +5 -0
- data/vendor/rdp-win32screenshot-0.0.9/lib/snapshot.rb +10 -0
- data/vendor/rdp-win32screenshot-0.0.9/lib/srccopy.bmp +0 -0
- data/vendor/rdp-win32screenshot-0.0.9/lib/srccopyplus.bmp +0 -0
- data/vendor/rdp-win32screenshot-0.0.9/lib/srccopyplusdirectx.bmp +0 -0
- data/vendor/rdp-win32screenshot-0.0.9/lib/vc.bmp +0 -0
- data/vendor/rdp-win32screenshot-0.0.9/lib/win32/screenshot.rb +95 -0
- data/vendor/rdp-win32screenshot-0.0.9/lib/win32/screenshot/bitmap_maker.rb +200 -0
- data/vendor/rdp-win32screenshot-0.0.9/lib/win32/util.rb +93 -0
- data/vendor/rdp-win32screenshot-0.0.9/spec/spec.opts +1 -0
- data/vendor/rdp-win32screenshot-0.0.9/spec/spec_helper.rb +85 -0
- data/vendor/rdp-win32screenshot-0.0.9/spec/win32_screenshot_spec.rb +194 -0
- data/vendor/rdp-win32screenshot-0.0.9/spec/win32_screenshot_util_spec.rb +75 -0
- data/vendor/rdp-win32screenshot-0.0.9/win32screenshot.gemspec +69 -0
- data/{subfont.ttf → vendor/subfont.ttf} +0 -0
- data/zamples/edit_decision_lists/dvds/{edls_being_edited/cars_disney.txt → cars_disney.txt} +0 -0
- data/zamples/edit_decision_lists/dvds/edls_being_edited/king_of_kings.txt +28 -0
- data/zamples/edit_decision_lists/dvds/monsters_vs_aliens.txt +41 -0
- data/zamples/edit_decision_lists/dvds/peter_pan.txt +29 -0
- data/zamples/edit_decision_lists/dvds/speed_racer.txt +47 -0
- data/zamples/edit_decision_lists/notes/tron.txt +4 -0
- metadata +77 -54
- data/go.sh +0 -1
- data/legal2 +0 -3
- data/lib/play_audio.rb +0 -58
- data/lib/ruby_clip.rb +0 -26
- data/template_bats/RUN SENSIBLE CINEMA CLICK HERE.bat +0 -25
- data/template_bats/advanced--create or edit sensible cinema edit list files.bat +0 -1
- data/template_bats/advanced--run-upconverting-video-player.bat +0 -1
- data/transparent.png +0 -0
data/LICENSE.TXT
CHANGED
@@ -5,7 +5,7 @@ All files released under the GPLv3 license [1] unless otherwise specified. Ping
|
|
5
5
|
EDL (delete list/edit list/EDL) files are released under the Creative Commons License, however.
|
6
6
|
|
7
7
|
Note: may call out to some 3rd party libraries/executables under their own (separate, open source) licenses and distributions, but they are contained
|
8
|
-
|
8
|
+
packaged for convenience. They have their own source codes available.
|
9
9
|
|
10
10
|
Note also that we used parts of the 7-Zip program, that 7-Zip is licensed under the GNU LGPL license, see http://www.7-zip.org, where its source code can be found.
|
11
11
|
|
data/README
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
-
This is a README for the Sensible Cinema edited movie playback player
|
2
|
-
for its other aspects like upconverting DVD/Netflix Instant
|
3
|
-
http://rogerdpack.t28.net/sensible-cinema
|
1
|
+
This is a README description for the Sensible Cinema edited movie playback portion of the player
|
2
|
+
for its other aspects like upconverting DVD/Netflix Instant please see
|
3
|
+
http://rogerdpack.t28.net/sensible-cinema for a description.
|
4
4
|
|
5
|
-
|
5
|
+
For installation instructions, see http://rogerdpack.t28.net/sensible-cinema
|
6
|
+
|
7
|
+
===
|
6
8
|
|
7
9
|
Sensible-cinema allows you to apply pre-programmed edit lists
|
8
10
|
(e.g. Edit Decision Lists [2]) to the DVD's you own.
|
data/Rakefile
CHANGED
@@ -10,14 +10,15 @@ Jeweler::Tasks.new do |s|
|
|
10
10
|
s.homepage = "http://github.com/rdp"
|
11
11
|
s.authors = ["Roger Pack"]
|
12
12
|
s.add_dependency 'os', '>= 0.9.4'
|
13
|
-
s.add_dependency 'sane', '>= 0.24.
|
14
|
-
s.add_dependency 'rdp-win32screenshot', '= 0.0.9'
|
13
|
+
s.add_dependency 'sane', '>= 0.24.6'
|
14
|
+
# vendored s.add_dependency 'rdp-win32screenshot', '= 0.0.9'
|
15
15
|
s.add_dependency 'mini_magick', '>= 3.1' # for ocr...
|
16
16
|
s.add_dependency 'whichr', '>= 0.3.6'
|
17
|
-
s.add_dependency 'rdp-rautomation', '> 0.6.3' # LODO
|
17
|
+
s.add_dependency 'rdp-rautomation', '> 0.6.3' # LODO use mainline with next release, though I can't remember why
|
18
18
|
s.add_dependency 'rdp-ruby-wmi' # for windows
|
19
19
|
s.add_dependency 'plist' # for mac
|
20
|
-
|
20
|
+
# jruby-win32ole?
|
21
|
+
s.add_dependency 'ffi' # mouse, etc. needed for windows MRI, probably jruby too [windows]
|
21
22
|
s.files.exclude '**/*.exe', '**/*.wav', '**/images/*'
|
22
23
|
s.add_development_dependency 'hitimes' # now jruby compat!
|
23
24
|
s.add_development_dependency 'rspec', '> 2'
|
@@ -66,6 +67,7 @@ def get_transitive_dependencies dependencies
|
|
66
67
|
new_dependencies.flatten.uniq
|
67
68
|
end
|
68
69
|
|
70
|
+
desc 'clear_and_copy_vendor_cache'
|
69
71
|
task 'clear_and_copy_vendor_cache' do
|
70
72
|
system("rm -rf ../cache.bak")
|
71
73
|
system("cp -r vendor/cache ../cache.bak") # for retrieval later
|
@@ -102,25 +104,38 @@ task 'create_distro_dir' => :gemspec do # depends on gemspec...
|
|
102
104
|
FileUtils.mkdir_p dir_out
|
103
105
|
FileUtils.cp_r(existing, dir_out) # copies files, subdirs in
|
104
106
|
# these belong in the parent dir, by themselves.
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
107
|
+
root_distro = "#{dir_out}/.."
|
108
|
+
FileUtils.cp_r(dir_out + '/template_bats/mac', root_distro) # the executable bit carries through somehow..
|
109
|
+
FileUtils.cp_r(dir_out + '/template_bats/pc', root_distro) # the executable bit carries through somehow..
|
110
|
+
FileUtils.cp('template_bats/README_DISTRO.TXT', root_distro)
|
111
|
+
p 'created (still need to zips it) ' + dir_out
|
109
112
|
FileUtils.rm_rf Dir[dir_out + '/**/{spec}'] # don't need to distribute those..save 3M!
|
110
113
|
end
|
111
114
|
|
115
|
+
def set_executable_bit filename
|
116
|
+
FileUtils.chmod 0755, filename
|
117
|
+
end
|
118
|
+
|
112
119
|
def cur_ver
|
113
120
|
File.read('VERSION').strip
|
114
121
|
end
|
115
122
|
|
123
|
+
def delete_now_packaged_dir name
|
124
|
+
FileUtils.rm_rf name
|
125
|
+
end
|
126
|
+
|
127
|
+
desc 'create *.zip,tgz'
|
116
128
|
task 'zip' do
|
117
129
|
name = 'sensible-cinema-' + cur_ver
|
118
|
-
raise unless File.directory? name
|
130
|
+
raise 'doesnt exist yet to zip?' unless File.directory? name
|
119
131
|
raise unless system("\"c:\\Program Files\\7-Zip\\7z.exe\" a -tzip -r #{name}.zip #{name}")
|
120
|
-
|
121
|
-
|
132
|
+
raise unless system("tar -cvzf #{name}.tgz #{name}")
|
133
|
+
delete_now_packaged_dir name
|
134
|
+
p 'created ' + name + '.zip,tgz and deleted its [create from] folder'
|
122
135
|
end
|
123
136
|
|
137
|
+
|
138
|
+
|
124
139
|
def sys arg
|
125
140
|
3.times { |n|
|
126
141
|
if n > 0
|
@@ -134,20 +149,22 @@ def sys arg
|
|
134
149
|
end
|
135
150
|
|
136
151
|
task 'deploy' do
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
152
|
+
for suffix in [ '.tgz', '.zip']
|
153
|
+
name = 'sensible-cinema-' + cur_ver + suffix
|
154
|
+
p 'copying to ilab'
|
155
|
+
sys "scp #{name} rdp@ilab1.cs.byu.edu:~/incoming"
|
156
|
+
p 'creating sf shell'
|
157
|
+
sys "ssh rdp@ilab1.cs.byu.edu 'ssh rogerdpack,sensible-cinema@shell.sourceforge.net create'" # needed for the next command to be able to work [weird]
|
158
|
+
p 'creating sf dir'
|
159
|
+
begin
|
160
|
+
sys "ssh rdp@ilab1.cs.byu.edu 'ssh rogerdpack,sensible-cinema@shell.sourceforge.net \"mkdir /home/frs/project/s/se/sensible-cinema/#{cur_ver}\"'"
|
161
|
+
rescue => ok_if_dir_already_existing
|
162
|
+
puts 'warning--dir already existing?' + ok_if_dir_already_existing.to_s
|
163
|
+
end
|
164
|
+
p 'copying into sf from ilab'
|
165
|
+
sys "ssh rdp@ilab1.cs.byu.edu 'scp ~/incoming/#{name} rogerdpack,sensible-cinema@frs.sourceforge.net:/home/frs/project/s/se/sensible-cinema/#{cur_ver}/#{name}'"
|
147
166
|
end
|
148
|
-
p '
|
149
|
-
sys "ssh rdp@ilab1.cs.byu.edu 'scp ~/incoming/#{name} rogerdpack,sensible-cinema@frs.sourceforge.net:/home/frs/project/s/se/sensible-cinema/#{cur_ver}/#{name}'"
|
150
|
-
p 'successfully deployed to sf only! ' + cur_ver
|
167
|
+
p 'successfully deployed to sf! ' + cur_ver
|
151
168
|
end
|
152
169
|
|
153
170
|
task 'gem_release' do
|
data/TODO
CHANGED
@@ -2,13 +2,14 @@
|
|
2
2
|
|
3
3
|
remember this stuff is all "oh gosh I have to do that too?" crud time, don't even want it.
|
4
4
|
and "won't even be useful to people in the end so why bother?"
|
5
|
+
"just for fun"
|
5
6
|
netflix
|
6
7
|
upconv netflix
|
7
8
|
mac'ify OCR/Mouse
|
8
|
-
upconvert DVD
|
9
|
-
C EDL
|
10
9
|
|
11
10
|
=== non ordered/eventually (also add line items for them) ===
|
11
|
+
upconvert DVD
|
12
|
+
C EDL
|
12
13
|
create a skype recorder
|
13
14
|
netflix/skype "disable screen saver while running" program [?]
|
14
15
|
linearize [?] hmm...
|
@@ -23,12 +24,11 @@
|
|
23
24
|
== high prio like blocking bugs ==
|
24
25
|
|
25
26
|
== next things I was working on ==
|
26
|
-
unit tests work
|
27
|
+
gui/edl parser unit tests work
|
27
28
|
screen recording sintel
|
28
|
-
netflix instant CGI how good is their HD?
|
29
|
-
Ben's DVD (hook)
|
30
29
|
|
31
30
|
== yes do ordered for release/other projects ja ==
|
31
|
+
OSOH DVD timing for forum
|
32
32
|
test out DVD upscale
|
33
33
|
real "screen record" of upconverting sintel, see if it shows a difference
|
34
34
|
see if I need to fix my capturer...
|
@@ -36,12 +36,28 @@
|
|
36
36
|
|
37
37
|
netflix instant descriptor for OS X/work at all
|
38
38
|
maybe get it to work with say VLC full screen first?
|
39
|
+
it may need the "50% adjuster" fella...
|
39
40
|
netflix upconvert
|
40
41
|
after get DVD down
|
41
|
-
|
42
|
+
after get hulu down
|
42
43
|
nextsprocket...
|
43
44
|
|
44
45
|
== yes do, un-ordered currently, from the various future release options ==
|
46
|
+
|
47
|
+
@ffplay: diagonal bug
|
48
|
+
fix surveillance for dual cams.
|
49
|
+
delete old files :P
|
50
|
+
re-encode them to maybe -r 0.5 ?
|
51
|
+
note...how to screen live movies :)
|
52
|
+
fix dropdown
|
53
|
+
note "netflix instant" on the www stuff once it works
|
54
|
+
netflix instant CGI how crisp is their HD?
|
55
|
+
C player feedback message
|
56
|
+
convert to 29.97 [at least this]
|
57
|
+
just with the "next" frame button I guess...
|
58
|
+
test if I have the same problem...
|
59
|
+
popup_text in EDL's
|
60
|
+
speed racer
|
45
61
|
todo.upconvert
|
46
62
|
netflix quality upconverter, have a go at it
|
47
63
|
finalize screen capturer
|
@@ -50,25 +66,34 @@
|
|
50
66
|
snapshots of Sintel "normal", then deploy the various comparison pics
|
51
67
|
DVD test it (+- with others testing it for me too)
|
52
68
|
|
69
|
+
popup text for EDL's
|
70
|
+
inet22.net
|
71
|
+
|
53
72
|
ri_for updatez
|
73
|
+
add button "check if EDL has valid syntax" ?
|
54
74
|
subtitle -> url everywhere
|
75
|
+
they need/want to realize it's for contribution, not just use...
|
76
|
+
ooh here's a good idea.
|
77
|
+
force them to create any new EDL's on the wiki, and just read them, always, straight from there.
|
78
|
+
or some online gui thing, that would work too...prefer the latter
|
55
79
|
english name (movie name) mass everywhere
|
56
80
|
handle gates of he.....
|
57
81
|
ruby_prof stuff
|
82
|
+
!additive for mplayer_dvd_splits
|
58
83
|
warn other wordpresses
|
59
|
-
legal2
|
60
84
|
test mplayer -vo gl at home
|
61
85
|
add new batch file for play with netflix OCR
|
62
86
|
remove those extra printf's for scanning for matching
|
63
87
|
Ben's other DVD's
|
64
88
|
template-ify for netflix too "create for netflix"
|
65
|
-
|
89
|
+
add netflix instant instructions
|
66
90
|
"note" competitor upconverters
|
67
91
|
add a "record start stop" for screen capture
|
68
92
|
that extra .5s DVD reports for file size...
|
69
93
|
test DVD upconv it at 720*x resolution too...
|
70
94
|
EDL gottman
|
71
95
|
EDL Greg's DVD's
|
96
|
+
minor redcar tweaks
|
72
97
|
opening/creating buttons -> new separate sub-window
|
73
98
|
add a demo of conference "music video from local file"
|
74
99
|
change upconvert options needs its own "close" button
|
@@ -79,6 +104,7 @@
|
|
79
104
|
add new open button "edit EDL for current DVD"
|
80
105
|
add "play at 1.5x speed" mplayer button, I guess
|
81
106
|
short list of todo's for screen capture
|
107
|
+
@mplayer: Mutes on windows shtink
|
82
108
|
"fix" mplayer EDL pausing (within the mplayer code itself)
|
83
109
|
bounty it for now/test with latest ffmpeg et al, maybe on mac with source [?
|
84
110
|
the open button should open in the "editing" EDL dir + save.
|
@@ -109,7 +135,7 @@
|
|
109
135
|
maybe search at end of movies for certain things?
|
110
136
|
double check--are my ffmpeg splits really really really the same as mplayer's EDL DVD splits? really?
|
111
137
|
check with blu-rays...do they match timing-wise? sub-title wise? do subs match something else?
|
112
|
-
youtube/hulu timings
|
138
|
+
youtube/hulu timings different?
|
113
139
|
split LLC's website+consumer
|
114
140
|
get LLC before a "real" domain name
|
115
141
|
employee instructions: watch @ realtime after profanity filter first pass :P
|
@@ -165,8 +191,12 @@
|
|
165
191
|
screen_capture TODO
|
166
192
|
|
167
193
|
== DVD decide later to move up or down ==
|
194
|
+
super subtitle parser watcher for netflix instant...like on-demand...
|
168
195
|
|
169
196
|
== DVD+-DVD-realtime backlog (totally unordered, some very low prio, basically all never do) ==
|
197
|
+
A netflix instant "coordinator" so you can watch a movie while on the phone et al :P (/hulu etc.)
|
198
|
+
bounty qtcapture for ffmpeg LOL/fix VLC
|
199
|
+
compare netflix instant HD to a blu-ray...same?
|
170
200
|
split out the "dependency" codes
|
171
201
|
more netflix instant timing
|
172
202
|
do another srt comparison with netflix...see if it matches less 1s
|
@@ -249,7 +279,8 @@
|
|
249
279
|
"save to" -> same dir as "get from" yeah
|
250
280
|
figure out a way to get to the roku [ps3ms?], +- netflix edited to roku LOL
|
251
281
|
prompt something if the EDL is actually "empty" :)
|
252
|
-
already donated: sox, rubular, mplayer, vlc, menumeter, http://instantitunes.wordpress.com/2010/02/26/use-tsmuxer-on-snow-leopard, unlocker, mac fan thing, open office, many sourceforge tops, 7zip, VLC, mplayer, cannot donate: ffmpeg, http://ffmpeg.zeranoe.com/builds, tsmuxer (sent email), asked mulder, smplayer ($5), http://lame.buanzo.com.ar, sox, smcFanControl (eidac)
|
282
|
+
already donated: sox, rubular, mplayer, vlc, menumeter, http://instantitunes.wordpress.com/2010/02/26/use-tsmuxer-on-snow-leopard, unlocker, mac fan thing, open office, many sourceforge tops, 7zip, VLC, mplayer, cannot donate: ffmpeg, http://ffmpeg.zeranoe.com/builds, tsmuxer (sent email), asked mulder, smplayer ($5), http://lame.buanzo.com.ar, sox, smcFanControl (eidac), free flash webcam tester guy, argentine audacity liblame, VLC
|
283
|
+
todo: audacity, windirstat (done)
|
253
284
|
note "you want to optimize your reverse blitting first... :)"
|
254
285
|
if 2 EDL's, still can choose a title trackfor automatically playing it right.
|
255
286
|
fast preview: change it to be aggressive sometimes yes, other times no
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.28.
|
1
|
+
0.28.1
|
@@ -1,3 +1,15 @@
|
|
1
|
+
== 0.28.1 ==
|
2
|
+
|
3
|
+
NB that we have auto-coordinating subtitle morphing software now
|
4
|
+
to automagically align it with the actual audio/video tracks.
|
5
|
+
|
6
|
+
Note also that it's possible to actually programmatically set the master volume control
|
7
|
+
(viz: Tron), see http://stackoverflow.com/questions/3249550/is-there-a-way-in-java-jna-to-set-the-master-system-volume-reliably-in-xpvi/7550110#7550110
|
8
|
+
and/or set it per application, through Windows Vista+
|
9
|
+
Also in XP: http://blogs.msdn.com/b/larryosterman/archive/2007/03/06/how-do-i-change-the-master-volume-in-windows-vista.aspx
|
10
|
+
|
11
|
+
First attempt at mac friendly release.
|
12
|
+
|
1
13
|
== 0.28.0 ==
|
2
14
|
|
3
15
|
Includes vendored support (experimental) for EDL playback via VLC via its internal libVLC control API
|
@@ -72,6 +72,8 @@ NB: YOU MUST AGREE TO THE gplv3 in order to use this software. See LICENSE.TXT
|
|
72
72
|
[3] http://www.macworld.com/article/150731/2010/04/dvdripping_faqs.html
|
73
73
|
[4] http://www.videolan.org/legal.html
|
74
74
|
|
75
|
-
|
75
|
+
http://en.wikipedia.org/wiki/DVD_Decrypter mentions fair use a bit, though in context of a different program, still interesting nonetheless.
|
76
76
|
|
77
|
-
Also note that this project was done under the gplv3 in Roger's jurisdiction, not a product of anybody else or any other owner.
|
77
|
+
Also note that this project was done under the gplv3 in Roger's jurisdiction, not a product of anybody else or any other owner, nor copyright elsewise.
|
78
|
+
|
79
|
+
Also the footnotes to fanedit.org have some related and applicable discussion of legal issues.
|
@@ -100,3 +100,5 @@ Anydvd HD's "magic file replacement" for DVD's/blu-ray's
|
|
100
100
|
RiffTrax allows for an audio "overlay" to a DVD playback, have their own player to coordinate the two.
|
101
101
|
"fan subs" are edited subtitles, displayed overlaid on the original track/video
|
102
102
|
Avatar DVD was released with an audio track that was "euphemized" of the profanity.
|
103
|
+
|
104
|
+
BYU's Varsity theater used to edit movies, and show them.
|
@@ -0,0 +1,135 @@
|
|
1
|
+
|
2
|
+
<!--
|
3
|
+
You are free to copy and use this sample in accordance with the terms of the
|
4
|
+
Apache license (http://www.apache.org/licenses/LICENSE-2.0.html)
|
5
|
+
-->
|
6
|
+
|
7
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
8
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
9
|
+
<head>
|
10
|
+
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
|
11
|
+
<title>YouTube Player API Sample</title>
|
12
|
+
<style type="text/css">
|
13
|
+
#videoDiv {
|
14
|
+
margin-right: 3px;
|
15
|
+
}
|
16
|
+
#videoInfo {
|
17
|
+
margin-left: 3px;
|
18
|
+
}
|
19
|
+
</style>
|
20
|
+
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
|
21
|
+
<script type="text/javascript">
|
22
|
+
google.load("swfobject", "2.1");
|
23
|
+
</script>
|
24
|
+
<script type="text/javascript">
|
25
|
+
/*
|
26
|
+
* Polling the player for information
|
27
|
+
*/
|
28
|
+
|
29
|
+
// Update a particular HTML element with a new value
|
30
|
+
function updateHTML(elmId, value) {
|
31
|
+
document.getElementById(elmId).innerHTML = value;
|
32
|
+
}
|
33
|
+
|
34
|
+
// This function is called when an error is thrown by the player
|
35
|
+
function onPlayerError(errorCode) {
|
36
|
+
alert("An error occured of type:" + errorCode);
|
37
|
+
}
|
38
|
+
|
39
|
+
// This function is called when the player changes state
|
40
|
+
function onPlayerStateChange(newState) {
|
41
|
+
updateHTML("playerState", newState);
|
42
|
+
}
|
43
|
+
|
44
|
+
|
45
|
+
function pausecomp(millis)
|
46
|
+
{
|
47
|
+
var date = new Date();
|
48
|
+
var curDate = null;
|
49
|
+
do { curDate = new Date(); }
|
50
|
+
while(curDate-date < millis);
|
51
|
+
}
|
52
|
+
|
53
|
+
// we will mute from 2->10 seconds, and skip from second 13 to 18, wash and repeat
|
54
|
+
// have to run this from a web server for it to work
|
55
|
+
|
56
|
+
function muteFromSecondTwoToTen() {
|
57
|
+
ytplayer.mute();
|
58
|
+
setTimeout(
|
59
|
+
function() {
|
60
|
+
ytplayer.unMute();
|
61
|
+
setTimeout(
|
62
|
+
function() {
|
63
|
+
// here we're at second 13
|
64
|
+
// so let's seek to...say...1
|
65
|
+
ytplayer.seekTo(18, true);
|
66
|
+
}, 3000);
|
67
|
+
}, 8000);
|
68
|
+
}
|
69
|
+
|
70
|
+
var madeFirstTrans = false;
|
71
|
+
|
72
|
+
// Display information about the current state of the player
|
73
|
+
function updatePlayerInfo() {
|
74
|
+
// Also check that at least one function exists since when IE unloads the
|
75
|
+
// page, it will destroy the SWF before clearing the interval.
|
76
|
+
|
77
|
+
// mute from 5 to 10
|
78
|
+
// then skip from 15 to 20
|
79
|
+
if(ytplayer && ytplayer.getDuration) {
|
80
|
+
updateHTML("videoDuration", ytplayer.getDuration());
|
81
|
+
updateHTML("videoCurrentTime", ytplayer.getCurrentTime()); // this is it...
|
82
|
+
if(ytplayer.getCurrentTime() > 2 && !madeFirstTrans) {
|
83
|
+
muteFromSecondTwoToTen();
|
84
|
+
madeFirstTrans = true;
|
85
|
+
}
|
86
|
+
updateHTML("bytesTotal", ytplayer.getVideoBytesTotal());
|
87
|
+
updateHTML("startBytes", ytplayer.getVideoStartBytes());
|
88
|
+
updateHTML("bytesLoaded", ytplayer.getVideoBytesLoaded());
|
89
|
+
}
|
90
|
+
}
|
91
|
+
|
92
|
+
// This function is automatically called by the player once it loads
|
93
|
+
function onYouTubePlayerReady(playerId) {
|
94
|
+
ytplayer = document.getElementById("ytPlayer");
|
95
|
+
// This causes the updatePlayerInfo function to be called every 250ms to
|
96
|
+
// get fresh data from the player
|
97
|
+
setInterval(updatePlayerInfo, 25); // 25 ms
|
98
|
+
updatePlayerInfo();
|
99
|
+
ytplayer.addEventListener("onStateChange", "onPlayerStateChange");
|
100
|
+
ytplayer.addEventListener("onError", "onPlayerError");
|
101
|
+
}
|
102
|
+
|
103
|
+
// The "main method" of this sample. Called when someone clicks "Run".
|
104
|
+
function loadPlayer() {
|
105
|
+
// The video to load
|
106
|
+
var videoID = "ylLzyHk54Z0"
|
107
|
+
// Lets Flash from another domain call JavaScript
|
108
|
+
var params = { allowScriptAccess: "always" };
|
109
|
+
// The element id of the Flash embed
|
110
|
+
var atts = { id: "ytPlayer" };
|
111
|
+
// All of the magic handled by SWFObject (http://code.google.com/p/swfobject/)
|
112
|
+
swfobject.embedSWF("http://www.youtube.com/v/" + videoID +
|
113
|
+
"&enablejsapi=1&playerapiid=player1&autoplay=1",
|
114
|
+
"videoDiv", "480", "295", "8", null, null, params, atts);
|
115
|
+
}
|
116
|
+
function _run() {
|
117
|
+
loadPlayer();
|
118
|
+
}
|
119
|
+
google.setOnLoadCallback(_run);
|
120
|
+
</script>
|
121
|
+
</head>
|
122
|
+
<body style="font-family: Arial;border: 0 none;">
|
123
|
+
<table>
|
124
|
+
<tr>
|
125
|
+
<td><div id="videoDiv">Loading...</div></td>
|
126
|
+
<td valign="top">
|
127
|
+
<div id="videoInfo">
|
128
|
+
<p>Player state: <span id="playerState">--</span></p>
|
129
|
+
<p>Current Time: <span id="videoCurrentTime">--:--</span> | Duration: <span id="videoDuration">--:--</span></p>
|
130
|
+
<p>Bytes Total: <span id="bytesTotal">--</span> | Start Bytes: <span id="startBytes">--</span> | Bytes Loaded: <span id="bytesLoaded">--</span></p>
|
131
|
+
</div>
|
132
|
+
</td></tr>
|
133
|
+
</table>
|
134
|
+
</body>
|
135
|
+
</html>
|