multimedia_paradise 1.1.344 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (218) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +99 -77
  3. data/bin/audio_player +1 -1
  4. data/bin/extract_images_from_this_video_file +1 -1
  5. data/bin/loop_this_video +1 -1
  6. data/bin/merge_avi_files +1 -1
  7. data/bin/merge_mp3 +1 -1
  8. data/bin/mp3_to_opus +1 -1
  9. data/bin/mpg_to_mp4 +1 -1
  10. data/bin/multimedia_paradise +1 -1
  11. data/bin/to_aiff +2 -5
  12. data/bin/to_flac +7 -0
  13. data/bin/to_mp3 +8 -0
  14. data/bin/to_mp4 +1 -1
  15. data/bin/to_ogg +7 -0
  16. data/bin/verbose_analyse_this_mp3_file_for_id3_tags +1 -1
  17. data/bin/video_codec +1 -1
  18. data/bin/video_thumbnail +1 -1
  19. data/bin/video_to_images +1 -1
  20. data/doc/README.gen +88 -51
  21. data/doc/{CHANGELOG.md → changelog/changelog.md} +8 -6
  22. data/doc/{LINKS.md → links/links.md} +2 -2
  23. data/doc/{MOTIVATION_FOR_THIS_PROJECT.md → motivation_for_the_multimedia_paradise_project/motivation_for_the_multimedia_paradise_project.md} +5 -5
  24. data/doc/todo/todo_for_the_multimedia_paradise_project.md +79 -93
  25. data/lib/multimedia_paradise/actions/actions.rb +224 -0
  26. data/lib/multimedia_paradise/audio/audio_player/audio_player.rb +61 -64
  27. data/lib/multimedia_paradise/audio/audio_tag_reader/audio_tag_reader.rb +17 -8
  28. data/lib/multimedia_paradise/audio/base.rb +0 -5
  29. data/lib/multimedia_paradise/audio/compress.rb +8 -5
  30. data/lib/multimedia_paradise/audio/create_m3u_playlist.rb +7 -11
  31. data/lib/multimedia_paradise/audio/extract_audio/constants.rb +0 -37
  32. data/lib/multimedia_paradise/audio/extract_audio/extract_audio.rb +90 -68
  33. data/lib/multimedia_paradise/audio/file_duration/file_duration.rb +134 -80
  34. data/lib/multimedia_paradise/audio/genres/boogie.rb +1 -6
  35. data/lib/multimedia_paradise/audio/genres/concerts.rb +1 -6
  36. data/lib/multimedia_paradise/audio/genres/constants.rb +1 -1
  37. data/lib/multimedia_paradise/audio/genres/eurodance.rb +1 -6
  38. data/lib/multimedia_paradise/audio/genres/genre.rb +36 -33
  39. data/lib/multimedia_paradise/audio/genres/hip_hop.rb +1 -6
  40. data/lib/multimedia_paradise/audio/genres/italian_songs.rb +1 -6
  41. data/lib/multimedia_paradise/audio/genres/the_1980s.rb +1 -6
  42. data/lib/multimedia_paradise/audio/genres/trance.rb +4 -7
  43. data/lib/multimedia_paradise/audio/lyrics_fetcher.rb +27 -22
  44. data/lib/multimedia_paradise/audio/merge_audio_files.rb +18 -11
  45. data/lib/multimedia_paradise/audio/modify_year_of_audio_file.rb +23 -11
  46. data/lib/multimedia_paradise/audio/n_audio_songs.rb +3 -2
  47. data/lib/multimedia_paradise/audio/play_all_audio_files.rb +41 -16
  48. data/lib/multimedia_paradise/audio/playlist/playlist.rb +163 -123
  49. data/lib/multimedia_paradise/audio/remove_audio.rb +11 -6
  50. data/lib/multimedia_paradise/audio/remove_last_second.rb +2 -3
  51. data/lib/multimedia_paradise/audio/report_missing_id.rb +22 -12
  52. data/lib/multimedia_paradise/audio/streamripper/streamripper_wrapper.rb +7 -5
  53. data/lib/multimedia_paradise/audio/to_mp3.rb +7 -5
  54. data/lib/multimedia_paradise/audio/to_ogg.rb +3 -1
  55. data/lib/multimedia_paradise/audio/wav_to_mp3.rb +5 -5
  56. data/lib/multimedia_paradise/base/base.rb +854 -15
  57. data/lib/multimedia_paradise/base/colours.rb +28 -31
  58. data/lib/multimedia_paradise/base/{commandline_arguments.rb → commandline_arguments_module/commandline_arguments_module.rb} +12 -9
  59. data/lib/multimedia_paradise/colours/colours.rb +4 -1
  60. data/lib/multimedia_paradise/commandline/{menu.rb → commandline.rb} +19 -16
  61. data/lib/multimedia_paradise/constants/constants.rb +504 -14
  62. data/lib/multimedia_paradise/constants/web_constants.rb +2 -4
  63. data/lib/multimedia_paradise/gui/gui_base.rb +2 -2
  64. data/lib/multimedia_paradise/gui/libui/lyrics/lyrics.rb +1 -1
  65. data/lib/multimedia_paradise/gui/libui/simple_play_widget/simple_play_widget.rb +1 -1
  66. data/lib/multimedia_paradise/gui/libui/video_player/video_player.rb +1 -1
  67. data/lib/multimedia_paradise/gui/libui/youtube_channels/youtube_channels.rb +1 -1
  68. data/lib/multimedia_paradise/gui/shared_code/multimedia_converter/multimedia_converter_module.rb +0 -478
  69. data/lib/multimedia_paradise/gui/shared_code/playlist/playlist_module.rb +94 -41
  70. data/lib/multimedia_paradise/gui/shared_code/simple_play_widget/simple_play_widget_module.rb +0 -257
  71. data/lib/multimedia_paradise/gui/universal_widgets/change_metadata_widget/change_metadata_widget.rb +2 -2
  72. data/lib/multimedia_paradise/gui/universal_widgets/information_about_a_mp3_file/information_about_a_mp3_file.rb +1 -1
  73. data/lib/multimedia_paradise/gui/universal_widgets/lyrics/lyrics.rb +1 -1
  74. data/lib/multimedia_paradise/gui/universal_widgets/multimedia_converter/multimedia_converter.rb +589 -0
  75. data/lib/multimedia_paradise/gui/universal_widgets/playlist/playlist.rb +197 -0
  76. data/lib/multimedia_paradise/gui/universal_widgets/radio/radio.rb +1 -1
  77. data/lib/multimedia_paradise/gui/{gtk2 → universal_widgets}/simple_play_widget/README.md +1 -1
  78. data/lib/multimedia_paradise/gui/universal_widgets/simple_play_widget/simple_play_widget.rb +404 -0
  79. data/lib/multimedia_paradise/gui/universal_widgets/tag_mp3_files/tag_mp3_files.rb +3 -6
  80. data/lib/multimedia_paradise/java/Playlist.class +0 -0
  81. data/lib/multimedia_paradise/java/Playlist.java +198 -0
  82. data/lib/multimedia_paradise/multimedia/analyse_multimedia_file.rb +21 -19
  83. data/lib/multimedia_paradise/multimedia/avisynth/avisynth_code.avs +441 -442
  84. data/lib/multimedia_paradise/multimedia/base.rb +0 -18
  85. data/lib/multimedia_paradise/multimedia/chord.rb +1 -1
  86. data/lib/multimedia_paradise/multimedia/cut_multimedia/cut_multimedia.rb +7 -5
  87. data/lib/multimedia_paradise/multimedia/cut_multimedia/evaluate_from_this_file.rb +2 -2
  88. data/lib/multimedia_paradise/multimedia/interactive_shell.rb +22 -3
  89. data/lib/multimedia_paradise/multimedia/merge_multimedia.rb +4 -3
  90. data/lib/multimedia_paradise/multimedia/play_from_this_list.rb +4 -27
  91. data/lib/multimedia_paradise/multimedia/{read_meta_tags.rb → read_meta_tags/read_meta_tags.rb} +14 -19
  92. data/lib/multimedia_paradise/multimedia/start_length_duration.rb +3 -3
  93. data/lib/multimedia_paradise/project/project.rb +8 -4
  94. data/lib/multimedia_paradise/requires/require_the_multimedia_paradise_project.rb +5 -5
  95. data/lib/multimedia_paradise/requires/require_toplevel_methods_files.rb +1 -1
  96. data/lib/multimedia_paradise/sinatra/app.rb +3 -3
  97. data/lib/multimedia_paradise/statistics/README.md +6 -5
  98. data/lib/multimedia_paradise/statistics/video.rb +34 -14
  99. data/lib/multimedia_paradise/{misc → time}/long_format_to_milliseconds_converter.rb +4 -2
  100. data/lib/multimedia_paradise/{misc → time}/milliseconds_to_long_format_converter.rb +2 -2
  101. data/lib/multimedia_paradise/toplevel_methods/audio_related_code.rb +138 -0
  102. data/lib/multimedia_paradise/toplevel_methods/chop_into_segments_of_n_seconds_size.rb +2 -2
  103. data/lib/multimedia_paradise/{conversions → toplevel_methods}/conversions.rb +140 -48
  104. data/lib/multimedia_paradise/toplevel_methods/copy_and_merge_this_video_n_times.rb +5 -5
  105. data/lib/multimedia_paradise/toplevel_methods/create_video_from_this_audio.rb +7 -6
  106. data/lib/multimedia_paradise/toplevel_methods/cut_from_to.rb +2 -2
  107. data/lib/multimedia_paradise/toplevel_methods/denoise.rb +2 -2
  108. data/lib/multimedia_paradise/toplevel_methods/deshake.rb +3 -6
  109. data/lib/multimedia_paradise/toplevel_methods/{output_directory.rb → directory_related_code.rb} +38 -1
  110. data/lib/multimedia_paradise/toplevel_methods/encode_this_video.rb +8 -4
  111. data/lib/multimedia_paradise/toplevel_methods/esystem.rb +43 -4
  112. data/lib/multimedia_paradise/{ffmpeg → toplevel_methods}/ffmpeg.rb +200 -193
  113. data/lib/multimedia_paradise/toplevel_methods/{files_and_directories.rb → files_related_code.rb} +19 -56
  114. data/lib/multimedia_paradise/toplevel_methods/flip_and_rotate.rb +3 -3
  115. data/lib/multimedia_paradise/toplevel_methods/is_audio_file_is_video_file_is_image_file_is_multimedia_file.rb +115 -0
  116. data/lib/multimedia_paradise/toplevel_methods/is_on_roebe.rb +1 -1
  117. data/lib/multimedia_paradise/toplevel_methods/{merge_multimedia_file.rb → merge.rb} +98 -4
  118. data/lib/multimedia_paradise/toplevel_methods/opn.rb +5 -4
  119. data/lib/multimedia_paradise/toplevel_methods/player_in_use.rb +14 -7
  120. data/lib/multimedia_paradise/toplevel_methods/query_the_audio_codec_of_this_file.rb +4 -3
  121. data/lib/multimedia_paradise/toplevel_methods/radio.rb +1 -3
  122. data/lib/multimedia_paradise/toplevel_methods/return_all_video_files.rb +4 -4
  123. data/lib/multimedia_paradise/toplevel_methods/return_path_to_random_simpsons_video_file.rb +1 -1
  124. data/lib/multimedia_paradise/toplevel_methods/return_random_video_file_from_the_video_collection.rb +9 -7
  125. data/lib/multimedia_paradise/toplevel_methods/scale_video.rb +3 -4
  126. data/lib/multimedia_paradise/toplevel_methods/set_title_of.rb +6 -6
  127. data/lib/multimedia_paradise/{help/help.rb → toplevel_methods/show_help.rb} +14 -8
  128. data/lib/multimedia_paradise/toplevel_methods/slow_down_this_video_file.rb +2 -3
  129. data/lib/multimedia_paradise/toplevel_methods/start_screencast.rb +3 -2
  130. data/lib/multimedia_paradise/toplevel_methods/{misc.rb → toplevel_methods.rb} +485 -527
  131. data/lib/multimedia_paradise/toplevel_methods/total_duration.rb +4 -3
  132. data/lib/multimedia_paradise/toplevel_methods/use_lame_codec.rb +1 -2
  133. data/lib/multimedia_paradise/toplevel_methods/video_dataset.rb +1 -1
  134. data/lib/multimedia_paradise/version/version.rb +2 -2
  135. data/lib/multimedia_paradise/video/all_videos.rb +12 -19
  136. data/lib/multimedia_paradise/video/check_numbers.rb +76 -32
  137. data/lib/multimedia_paradise/video/columbo/columbo.rb +36 -14
  138. data/lib/multimedia_paradise/video/guess_video_name.rb +2 -10
  139. data/lib/multimedia_paradise/video/mike_hammer/mike_hammer.rb +2 -2
  140. data/lib/multimedia_paradise/video/missing_video_files/missing_video_files.rb +1 -9
  141. data/lib/multimedia_paradise/video/movie_searcher.rb +2 -10
  142. data/lib/multimedia_paradise/video/mplayer_wrapper.rb +1 -9
  143. data/lib/multimedia_paradise/video/random_video.rb +1 -2
  144. data/lib/multimedia_paradise/video/registered_video_file.rb +2 -10
  145. data/lib/multimedia_paradise/video/report_local_videos.rb +1 -9
  146. data/lib/multimedia_paradise/video/simpsons.rb +2 -10
  147. data/lib/multimedia_paradise/video/smart_animals/smart_animals.rb +10 -8
  148. data/lib/multimedia_paradise/video/speed_up_video.rb +28 -10
  149. data/lib/multimedia_paradise/video/store_available_video_files.rb +49 -33
  150. data/lib/multimedia_paradise/video/the_simpsons/README.md +0 -0
  151. data/lib/multimedia_paradise/video/the_simpsons/good_the_simpsons_episodes.rb +8 -8
  152. data/lib/multimedia_paradise/video/the_simpsons/the_simpsons.rb +14 -10
  153. data/lib/multimedia_paradise/video/video_information.rb +55 -49
  154. data/lib/multimedia_paradise/{configuration → yaml/configuration}/play_zoomed.yml +0 -0
  155. data/lib/multimedia_paradise/yaml/{playlist.yml → playlist/playlist.yml} +14 -15
  156. data/lib/multimedia_paradise/yaml/video/video.yml +1 -1
  157. data/lib/multimedia_paradise/yaml/video_collection/video_collection.yml +34 -32
  158. data/lib/multimedia_paradise/yaml/youtube/alltagsgeschichte/alltagsgeschichte.yml +61 -11
  159. data/lib/multimedia_paradise/yaml/youtube/songs/songs.yml +5 -3
  160. data/multimedia_paradise.gemspec +1 -1
  161. data/test/testing_audio_player.rb +3 -3
  162. data/test/testing_file_duration.rb +5 -5
  163. metadata +45 -76
  164. data/lib/multimedia_paradise/audio/file_duration/constants.rb +0 -53
  165. data/lib/multimedia_paradise/audio/waveform/class.rb +0 -341
  166. data/lib/multimedia_paradise/audio/waveform/constants.rb +0 -38
  167. data/lib/multimedia_paradise/audio/waveform/log.rb +0 -101
  168. data/lib/multimedia_paradise/base/constants.rb +0 -19
  169. data/lib/multimedia_paradise/base/encoding.rb +0 -31
  170. data/lib/multimedia_paradise/base/misc.rb +0 -665
  171. data/lib/multimedia_paradise/base/namespace.rb +0 -36
  172. data/lib/multimedia_paradise/base/time.rb +0 -25
  173. data/lib/multimedia_paradise/constants/conversions.rb +0 -62
  174. data/lib/multimedia_paradise/constants/directory_constants.rb +0 -139
  175. data/lib/multimedia_paradise/constants/encodings.rb +0 -26
  176. data/lib/multimedia_paradise/constants/file_constants.rb +0 -176
  177. data/lib/multimedia_paradise/constants/misc.rb +0 -80
  178. data/lib/multimedia_paradise/constants/my_video_directory.rb +0 -30
  179. data/lib/multimedia_paradise/constants/namespace.rb +0 -14
  180. data/lib/multimedia_paradise/constants/newline.rb +0 -14
  181. data/lib/multimedia_paradise/constants/video_filetypes.rb +0 -27
  182. data/lib/multimedia_paradise/conversions/README.md +0 -2
  183. data/lib/multimedia_paradise/ffmpeg/README.md +0 -2
  184. data/lib/multimedia_paradise/gui/gtk2/multimedia_converter/multimedia_converter.rb +0 -33
  185. data/lib/multimedia_paradise/gui/gtk2/notebook.rb +0 -144
  186. data/lib/multimedia_paradise/gui/gtk2/play_video_from_my_collection/play_video_from_my_collection.rb +0 -43
  187. data/lib/multimedia_paradise/gui/gtk2/simple_play_widget/simple_play_widget.rb +0 -40
  188. data/lib/multimedia_paradise/gui/gtk2/widget_increase_or_decrease_audio/widget_increase_or_decrease_audio.rb +0 -42
  189. data/lib/multimedia_paradise/gui/gtk2/youtube_downloader/youtube_downloader.rb +0 -32
  190. data/lib/multimedia_paradise/gui/gtk3/lyrics/lyrics.rb +0 -0
  191. data/lib/multimedia_paradise/gui/gtk3/multimedia_converter/multimedia_converter.rb +0 -34
  192. data/lib/multimedia_paradise/gui/gtk3/playlist/playlist.rb +0 -34
  193. data/lib/multimedia_paradise/gui/gtk3/simple_play_widget/simple_play_widget.rb +0 -38
  194. data/lib/multimedia_paradise/toplevel_methods/analyze_audio_stream.rb +0 -31
  195. data/lib/multimedia_paradise/toplevel_methods/codecs.rb +0 -50
  196. data/lib/multimedia_paradise/toplevel_methods/copy_file.rb +0 -18
  197. data/lib/multimedia_paradise/toplevel_methods/delay_audio.rb +0 -31
  198. data/lib/multimedia_paradise/toplevel_methods/ensure_that_the_output_directory_exists.rb +0 -27
  199. data/lib/multimedia_paradise/toplevel_methods/has_audio.rb +0 -48
  200. data/lib/multimedia_paradise/toplevel_methods/increase_volume_of_this_audio_file.rb +0 -61
  201. data/lib/multimedia_paradise/toplevel_methods/is_a_multimedia_file.rb +0 -27
  202. data/lib/multimedia_paradise/toplevel_methods/is_audio_file.rb +0 -27
  203. data/lib/multimedia_paradise/toplevel_methods/is_image_file.rb +0 -31
  204. data/lib/multimedia_paradise/toplevel_methods/is_video_file.rb +0 -62
  205. data/lib/multimedia_paradise/toplevel_methods/merge_these_videos.rb +0 -106
  206. data/lib/multimedia_paradise/toplevel_methods/run_sys_command.rb +0 -30
  207. data/lib/multimedia_paradise/toplevel_methods/to_flac.rb +0 -30
  208. data/lib/multimedia_paradise/toplevel_methods/to_mp4.rb +0 -24
  209. /data/doc/{MergingVideoLectures.md → merging_video_lectures/merging_video_lectures.md} +0 -0
  210. /data/doc/{Readme_for_the_cut_audio_component.md → readme_for_the_cut_audio_component/Readme_for_the_cut_audio_component.md} +0 -0
  211. /data/lib/multimedia_paradise/yaml/{audio_formats.yml → audio_formats/audio_formats.yml} +0 -0
  212. /data/lib/multimedia_paradise/yaml/{image_formats.yml → image_formats/image_formats.yml} +0 -0
  213. /data/lib/multimedia_paradise/yaml/{lyrics.yml → lyrics/lyrics.yml} +0 -0
  214. /data/lib/multimedia_paradise/yaml/{music_genres.yml → music_genres/music_genres.yml} +0 -0
  215. /data/lib/multimedia_paradise/yaml/{song_tags.yml → song_tags/song_tags.yml} +0 -0
  216. /data/lib/multimedia_paradise/yaml/{use_this_video_player.yml → use_this_video_player/use_this_video_player.yml} +0 -0
  217. /data/lib/multimedia_paradise/yaml/{video_encoding_settings.yml → video_encoding_settings/video_encoding_settings.yml} +0 -0
  218. /data/lib/multimedia_paradise/yaml/{video_filter_aliases.yml → video_filter_aliases/video_filter_aliases.yml} +0 -0
data/doc/README.gen CHANGED
@@ -4,79 +4,83 @@ DEFAULT_HEADER
4
4
 
5
5
  <img src="https://i.imgur.com/Qh4Fve1.png" style="margin: 1em; margin-left: 2.5em">
6
6
 
7
- The **multimedia paradise** project bundles together code that can be
8
- used for "multimedia data" - in particular for **audio** and **video** files.
9
-
10
- Most of the functionality found within the **multimedia paradise**
11
- projects depends on <b>ffmpeg</b>, but in principle the code in the
12
- main module called **MultimediaParadise** should work with other
13
- toolkits as well, if a toolkit supports certain actions (such as
14
- <b>sox</b>). As is often the case, support for other toolkits depends
15
- on time investment - and time availability - of the main author of
16
- this project, but in principle support for other toolkits can be
17
- added as-is, at any moment in time. It is just that **ffmpeg** is
18
- really good, so other toolkits will have a hard time competing
19
- against it.
20
-
21
- For multimedia-related purposes, **ffmpeg** is a really excellent
22
- project. Thus, the MultimediaParadise gem will focus on **ffmpeg**
7
+ The <b>multimedia paradise</b> project bundles together code that can be
8
+ used for "multimedia data" - in particular for <b>audio</b> and <b>video</b>
9
+ files.
10
+
11
+ Most of the functionality found within the <b>multimedia paradise</b>
12
+ projects depends on the external project called <b>ffmpeg</b>. However had,
13
+ in principle the code in the toplevel-module called <b>MultimediaParadise</b>
14
+ should also work with other toolkits as well, provided that said toolkit
15
+ supports certain actions - such as <b>sox</b> does.
16
+
17
+ As is often the case, support for other toolkits depends on time investment
18
+ though - and time availability - of the main author of this project. Nonetheless,
19
+ whenever possible, support for other toolkits will be added as-is. It is
20
+ just that <b>ffmpeg</b> is really an excellent project, so other toolkits
21
+ will have a hard time competing against <b>ffmpeg</b>.
22
+
23
+ For multimedia-related purposes, <b>ffmpeg</b> can be recommended. Thus,
24
+ the MultimediaParadise gem will also focus primarily on <b>ffmpeg</b>
23
25
  by default.
24
26
 
25
- You can obtain a copy of ffmpeg from the following URL:
27
+ A copy of ffmpeg can be obtained from the following URL:
26
28
 
27
29
  https://www.ffmpeg.org/download.html
28
30
 
29
31
  ## Installation of the MultimediaParadise project
30
32
 
31
- There are several ways how to install this project, including using
32
- oldschool **setup.rb** - but I recommend the following way, for
33
- simplicity, on any modern system:
33
+ There are several ways how to install the multimedia_paradise project. Personally
34
+ I still use the oldschool way via <b>setup.rb</b>, but the more modern, and
35
+ recommend way, to install this gem goes via <b>gem install</b>, specifically:
34
36
 
35
37
  gem install multimedia_paradise --user-install
36
38
 
37
- The reason as to why I recommend the **--user-install** option is to be
38
- used is because the various files under the **bin/** subdirectory that
39
+ The reason as to why it is recommended to use the <b>--user-install</b> option
40
+ is because the various files under the <b>bin/</b> subdirectory that
39
41
  are part of this gem will be made available in your home directory
40
42
  (under e. g. ~/.gem/ruby/2.5.0/bin or whatever your local ruby
41
43
  version is). That way you can easily add that directory to $PATH
42
44
  or not, and make use of these files if you want to - and if not,
43
45
  just ignore the bin/ subdirectory of this gem altogether.
44
46
 
45
- You can find out the paths used by **gem** via:
47
+ You can find out the paths used by <b>gem</b> by issuing the following
48
+ command:
46
49
 
47
50
  gem environment
48
51
 
49
- Note that even if you can not find such a bin/ subdirectory on your
50
- system, these files are distributed within the **multimedia_paradise**
52
+ Note that even if you can not find such a <b>bin/</b> subdirectory on your
53
+ system, these files are distributed within the <b>multimedia_paradise</b>
51
54
  gem itself as such, so just extract the gem, then copy the bin/ files
52
- to wherever you want to. There is more than one way to do
53
- things! If you still have a hard time doing so, you can use a
54
- toplevel method that will copy all bin/ files into the current
55
- working directory. So, for instance, create a directory at:
55
+ to wherever you want to. There is more than one way to do things!
56
+
57
+ If you still have a hard time doing so, you can use a toplevel method that
58
+ will copy all bin/ files into the current working directory. So, for
59
+ instance, create a directory at the following location:
56
60
 
57
61
  mkdir /tmp/multimedia_paradise # just an example
58
62
 
59
- Then start **irb** and issue:
63
+ Then start <b>irb</b> and issue:
60
64
 
61
65
  require 'multimedia_paradise'
62
66
  MultimediaParadise.copy_bin_directory
63
67
 
64
- This will create a directory called **bin/** and then proceed
65
- to copy all bin/ files into that directory. This is just a
66
- convenience workaround if --user-dir does not work on your
67
- system, for whatever the reason. (Note that this assumes
68
- that these bin/ entries are in your HOME directory under
69
- bin/ which may not always be the case; I have no idea why
70
- this does not work anymore. It used to work in the past.
68
+ This will create a directory called <b>bin/</b> and then proceed
69
+ to copy all bin/ files that are distributed via the multimedia_paradise
70
+ gem into that directory. This is just a convenience workaround if
71
+ --user-dir does not work on your system, for whatever the reason.
72
+ (Note that this assumes that these bin/ entries are in your HOME
73
+ directory under bin/ which may not always be the case; I have no idea
74
+ why this does not work anymore. It used to work in the past.
71
75
  Ask the rubygems maintainers what they broke over the
72
76
  years if this does not work for you. :P But, even in that
73
77
  case, you can just download the .gem file from rubygems.org
74
78
  and extract it on your own, and then you will 100% have
75
79
  the bin/ hierarchy there.)
76
80
 
77
- It is recommended to install **ffmpeg** and have it made
78
- available on your system - ffmpeg really is a great project,
79
- and the multimedia_paradise gem taps into the functionality
81
+ It is also recommended to install <b>ffmpeg</b> and have it made
82
+ available on the given computer system at hand - ffmpeg really is
83
+ a great project, and the multimedia_paradise gem taps into the functionality
80
84
  made available by ffmpeg. In many ways the multimedia_paradise
81
85
  gem is a convenient wrapper over **some** of ffmpeg's
82
86
  functionality.
@@ -91,11 +95,11 @@ not necessarily a professional-grade software suite.
91
95
  ## Removing the audio from a local video file
92
96
 
93
97
  Let us begin with a fairly simply use case here: say that you
94
- want to **remove the audio from a local video file**.
98
+ want to <b>remove the audio from a local video file</b>.
95
99
 
96
100
  So if you have such a use case that requires of you to
97
101
  **remove audio from a local video file**, use the
98
- following **API**:
102
+ following <b>API</b>:
99
103
 
100
104
  require 'multimedia_paradise/audio/remove_audio.rb'
101
105
  MultimediaParadise.remove_audio(path_to_the_file_goes_in_here)
@@ -1623,7 +1627,7 @@ So, how to use class <b>MultimediaParadise::CreateM3uPlaylist</b>?
1623
1627
 
1624
1628
  The input to class <b>MultimediaParadise::CreateM3uPlaylist</b>
1625
1629
  should ideally be a **yaml file** describing your songs (at the
1626
- least **the path to these songs**), but you could also use the **API**
1630
+ least **the path to these songs**), but you could also use the <b>API</b>
1627
1631
  from within Ruby, naturally and thus use a **ruby array** directly
1628
1632
  that is to be passed to the class; just pass this Array to
1629
1633
  **.new()**.
@@ -1915,14 +1919,14 @@ Usage example if you want to do only one image per second:
1915
1919
 
1916
1920
  MultimediaParadise.video_to_images("foobar.mp4", :default, 1)
1917
1921
 
1918
- See the file **multimedia_paradise/toplevel_methods/conversion.rb**
1922
+ See the file <b>multimedia_paradise/toplevel_methods/conversions.rb</b>
1919
1923
  for more information about that functionality - it is made possible
1920
1924
  thanks to ffmpeg.
1921
1925
 
1922
1926
  ## Radio stations and a graphical user interface to it (GUI)
1923
1927
 
1924
- Since as of **October 2018**, the **MultimediaParadise** project comes
1925
- with a small **yaml file** called **radio_stations.yml**.
1928
+ Since as of <b>October 2018</b>, the **MultimediaParadise** project comes
1929
+ with a small **yaml file** called <b>radio_stations.yml</b>.
1926
1930
 
1927
1931
  x = YAML.load_file('radio_stations.yml')
1928
1932
 
@@ -2018,6 +2022,38 @@ It now looks like this:
2018
2022
  Not sure if this was an actual improvement, but for now it'll stay
2019
2023
  that way.
2020
2024
 
2025
+ ## MultimediaParadise.action()
2026
+
2027
+ The toplevel-method <b>MultimediaParadise.action()</b> was added
2028
+ during the March 2024 rewrite of the multimedia_paradise gem.
2029
+
2030
+ The basic idea behind actions, implemented via the aforementioned
2031
+ method, is to bundle all activities that may seem useful to most
2032
+ users in a centralized manner.
2033
+
2034
+ So, for instance: say that you wish to extract the audio from
2035
+ a given video file, via ffmpeg. The file at hand will be called
2036
+ <b>foobar.mp4</b>.
2037
+
2038
+ You can generalize this via actions like in this way:
2039
+
2040
+ MultimediaParadise.action(:extract_audio, 'foobar.mp4')
2041
+
2042
+ That's it!
2043
+
2044
+ Of course the simpler method called
2045
+ <b>MultimediaParadise.action()</b> is also available, but
2046
+ the main benefit of MultimediaParadise.action() is that you
2047
+ do not have to require any specific file. You can ignore
2048
+ the file paths there, and just think in terms of
2049
+ actionable components. This is especially useful when we
2050
+ use MultimediaParadise in a GUI. It will simplify a lot
2051
+ of the GUI code past this point, which is why this is
2052
+ a win-win situation for the multimedia_paradise gem. I
2053
+ will eventually add java-swing components as well, thus
2054
+ allowing users to make use of the multimedia_paradise
2055
+ gem on windows as well.
2056
+
2021
2057
  ## Converting a .mp4 or .avi file to an animated .gif
2022
2058
 
2023
2059
  You can use the following API to convert a video to an
@@ -2599,7 +2635,7 @@ automatically create a thumbnail from a video file.
2599
2635
 
2600
2636
  Usage example:
2601
2637
 
2602
- require 'multimedia_paradise/toplevel_methods/misc.rb' # ← This file includes the code shown below.
2638
+ require 'multimedia_paradise/toplevel_methods/toplevel_methods.rb' # ← This file includes the code shown below.
2603
2639
  this_file = '/Depot/j/foobar.mp4'
2604
2640
 
2605
2641
  MultimediaParadise.automatically_create_a_thumbnail_for_this_video()
@@ -2643,11 +2679,12 @@ by ffmpeg <b>does</b> work.
2643
2679
 
2644
2680
  ## Learning to play the piano
2645
2681
 
2646
- Since a few months I am (again) learning to play the piano, although
2647
- I use a Yamaha keyboard rather than a piano.
2682
+ Since early <b>2024</b> I am (again) learning to play the piano, although
2683
+ I use a <b>Yamaha keyboard</b> rather than a piano.
2648
2684
 
2649
- This subsection here will collect various snippets that may relate
2650
- to playing songs. This is very random though.
2685
+ This subsection here will collect various snippets that may relate to
2686
+ playing songs, including how to practice properly. This is very random,
2687
+ though, as it will change as I learn new things.
2651
2688
 
2652
2689
  Phantom of the Opera:
2653
2690
 
@@ -3,15 +3,15 @@
3
3
  #
4
4
  # Note that since as of 2016, this changelog is barely updated anymore.
5
5
  #
6
- # Features are more important than listing when they may have been
7
- # added or changed. :)
6
+ # Features are more important than listing when they may have been added
7
+ # or changed. :)
8
8
  #
9
9
  # when | what
10
10
  # ---------------------------------------------------------------------------
11
11
  #
12
12
  # 22.02.2006: Added audio_player.rb, yay! \o/
13
- # 24.02.2006: Changed ARGV behaviour. Now the arg that is supplied
14
- # will be the default file to use.
13
+ # 24.02.2006: Changed ARGV behaviour. Now the arg that is supplied will
14
+ # be the default file to use.
15
15
  # 10.03.2006: Umount dvds has been added.
16
16
  # 09.08.2006: Unified ways to exit the script.
17
17
  # 15.09.2006: Added readline support, thus we are now able to scroll
@@ -39,6 +39,8 @@
39
39
  # code clean-up job) and increased the version to 1.1.0.
40
40
  # 08.06.2021: Improved the sinatra-specific part of MultimediaParadise.
41
41
  # It is now possible to play the registered video files
42
- # via sinatra as well, even on windows. This was tested
43
- # on that day also.
42
+ # via sinatra as well, even on windows. This was also tested
43
+ # on that very day.
44
+ # 07.03.2024: The multimedia_paradise gem was cleaned up and partially
45
+ # rewritten.
44
46
  # =========================================================================== #
@@ -1,6 +1,6 @@
1
1
  This file gathers some useful website resources about ffmpeg.
2
2
 
3
- The entries may become outdated quickly, though, as the www
4
- is very volatile:
3
+ The entries may become outdated quickly, though, as the www is
4
+ very volatile:
5
5
 
6
6
  https://www.ostechnix.com/20-ffmpeg-commands-beginners/
@@ -4,11 +4,11 @@ back then was called "multimedia" and the other project was called
4
4
  "videotools".
5
5
 
6
6
  I wanted to be able to manipulate audio and video data, and I found it
7
- increasingly difficult to reason why the two projects called "multimedia"
8
- and "videotools" were separate projects. This may not sound problematic
9
- to other people, but my brain had a hard time remembering where I put
10
- in code, and why it is only available there, but not in the other
11
- project as well.
7
+ increasingly difficult to reason as to why the two projects called
8
+ "multimedia" and "videotools" were separate projects. This may not sound
9
+ problematic to other people, but my brain had a hard time remembering
10
+ where I put in code, and why it is only available there, but not in
11
+ the other project as well.
12
12
 
13
13
  Hence, the simplest solution was to go ahead and merge both projects
14
14
  into a single new project which will handle multimedia formats - be
@@ -1,111 +1,97 @@
1
1
  --------------------------------------------------------------------------------
2
- (1) in the sinatra-api of multimedia paradise, add
3
- add video/random_simpsons
4
-
5
- also add various conversions, such as
6
-
7
- to_mp4/FILE_PATH_HERE
8
- ^^^ this works now, but it has to be better documented, linked in
9
- from the index, as well as an entry point at /to_mp4 shown.
2
+ (1) go through the GUIs
3
+ then add actions to them
4
+ ^^^^ and integrate all of them there, also document it.
10
5
  --------------------------------------------------------------------------------
11
- (2) enhance the sinatra stuff for MultimediaParadise:
12
-
13
- In particular we need to be able to do:
6
+ AND ... simplify the conversion parts
7
+ into module Conversions
8
+ then .to_mp3
9
+ .to_momma
10
+ --------------------------------------------------------------------------------
11
+ (11) → in multimedia player
12
+ in java/
13
+ build a commandline player
14
+ a simple one.
15
+ somehow this breaks after a few seconds so somehow it dies
16
+ off...
14
17
 
18
+ --------------------------------------------------------------------------------
19
+ (2) → make sure that for all lib-ui-based variants we have aliases.
20
+ that way we can call them directly on windows via cmd.exe
21
+ --------------------------------------------------------------------------------
22
+ (3) → in the sinatra-api of multimedia paradise, add
23
+ add video/random_simpsons
24
+ also add various conversions, such as
25
+ to_mp4/FILE_PATH_HERE
26
+ ^^^ this works now, but it has to be better documented, linked in
27
+ from the index, as well as an entry point at /to_mp4 shown.
28
+ --------------------------------------------------------------------------------
29
+ (4) → enhance the sinatra stuff for MultimediaParadise:
30
+ In particular we need to be able to do:
15
31
  (a) show how many videos are available locally, in total [IMPLEMENTED]
16
32
  (b) be: able to view all registered videos files [IMPLEMENTED]
17
33
  (c) links (also to IMDB) ^^^ done above [IMPLEMENTED]
18
-
19
34
  (d) metadata there + <- show the metadata too, codec stuff and so
20
- forth via the web-interface
35
+ forth via the web-interface
21
36
  ALSO
22
37
  (e) be able to convert stuff ... eaudio and stuff ... hmm
23
- and some overview page... what does this mean
38
+ and some overview page... what does this mean
24
39
  (f) play a video by embedding the video tag.
25
- ok this one.^^^
26
- (g) also make sure play/ works.
27
-
28
- And document this properly in the README.gen file.
29
-
40
+ ok this one.^^^
41
+ (g) also make sure play/ works.
42
+ And document this properly in the README.gen file.
30
43
  --------------------------------------------------------------------------------
31
- (1) Add support for:
32
-
33
- Uncompressed audio formats, such as AIFF, AU or raw
34
- header-less PCM
35
-
36
- esystem "ffmpeg -i file.wav -f aiff -ab 128000 -ar 44100 file.aif"
37
-
38
- to_aiff now exists but we must test it still.
39
-
40
- I tested it but we may have to test it more thoroughly first.
41
-
42
- → Formats with lossless compression, such as FLAC, Monkey's
43
- Audio (filename extension .ape), TTA, ATRAC Advanced
44
- Lossless, ALAC (filename extension .m4a), MPEG-4 SLS,
45
- MPEG-4 ALS, MPEG-4 DST, Windows Media Audio Lossless
46
- (WMA Lossless), and Shorten (SHN).
47
- → Formats with lossy compression, such as Opus, Vorbis,
48
- Musepack, AAC, ATRAC and Windows Media Audio Lossy (WMA
49
- lossy).
50
- Opus has what format? Opus conversion now works.
51
-
52
- ^^^ look to get these formats back.
44
+ (5) Add support for:
45
+ → Uncompressed audio formats, such as AIFF, AU or raw
46
+ header-less PCM
47
+ esystem "ffmpeg -i file.wav -f aiff -ab 128000 -ar 44100 file.aif"
48
+ to_aiff now exists but we must test it still.
49
+ I tested it but we may have to test it more thoroughly first.
50
+ → Formats with lossless compression, such as FLAC, Monkey's
51
+ Audio (filename extension .ape), TTA, ATRAC Advanced
52
+ Lossless, ALAC (filename extension .m4a), MPEG-4 SLS,
53
+ MPEG-4 ALS, MPEG-4 DST, Windows Media Audio Lossless
54
+ (WMA Lossless), and Shorten (SHN).
55
+ → Formats with lossy compression, such as Opus, Vorbis,
56
+ Musepack, AAC, ATRAC and Windows Media Audio Lossy (WMA
57
+ lossy).
58
+ Opus has what format? Opus conversion now works.
59
+ ^^^ look to get these formats back.
53
60
  --------------------------------------------------------------------------------
54
- (2) Include and connect this into the GTK stuff
55
-
56
- Das ganze soll langsam zu einer richtigen "MULTIMEDIA STATION"
57
- werden. Und auch den GUI dazu anschaun für Verbesserungen.
58
-
59
- Todos:
60
- phed> format conversion is one thing, but a batch
61
- wav→tagged ogg,mp3,flac - tool would be nice
62
- shevy> batch wav tagged ... tool?
63
- phed> convert a list of wav files (an album) to
64
- a fully releasable zip/zips would be fun.
61
+ (6) Include and connect this into the GTK stuff
62
+ Das ganze soll langsam zu einer richtigen "MULTIMEDIA STATION"
63
+ werden. Und auch den GUI dazu anschaun für Verbesserungen.
64
+ Todos:
65
+ phed> format conversion is one thing, but a batch
66
+ wav→tagged ogg,mp3,flac - tool would be nice
67
+ phed> convert a list of wav files (an album) to
68
+ a fully releasable zip/zips would be fun.
65
69
  --------------------------------------------------------------------------------
66
- (3) a downloader for random audio tracks. What does this even mean?
67
-
70
+ (7) a downloader for random audio tracks. What does this even mean?
68
71
  --------------------------------------------------------------------------------
69
- (4) llogan> perhaps you should use the concat demuxer
70
- instead of the concat protocol
71
-
72
+ (8) llogan> perhaps you should use the concat demuxer
73
+ instead of the concat protocol
72
74
  --------------------------------------------------------------------------------
73
- (7) continue with porting OLD_video.rb
75
+ (9) continue libui-id-tagger.
76
+ also find out whether the id-tagger works on windows
77
+ if so or not (it does not right now), document this
78
+ on the README.gen of multimediaparaidse.
79
+ The compiling does not work. :(
74
80
  --------------------------------------------------------------------------------
75
- (8) continue libui-id-tagger.
76
- also find out whether the id-tagger works on windows
77
- if so or not (it does not right now), document this
78
- on the README.gen of multimediaparaidse.
79
- The compiling does not work. :(
81
+ (10) all gtk3 apps should have libui counterparts.
80
82
  --------------------------------------------------------------------------------
81
- (9) make sure that for all lib-ui-based variants we have aliases.
82
- that way we can call them directly on windows via cmd.exe
83
- -------------------------------------------------------------------------------
84
- (10) all gtk3 apps should have libui counterparts.
85
- -------------------------------------------------------------------------------
86
- (11) in multimedia player
87
- in java/
88
- build a commandline player
89
- a simple one.
90
-
91
- somehow this breaks after a few seconds so somehow it dies
92
- off...
93
- -------------------------------------------------------------------------------
94
- (12) Add a "play-this-video-file.cgi" and sinatra app.
95
-
96
- The UI should be simple, start with sinatra. The view-videos
97
- URL aka /view
98
- should work. and
99
- then add:
100
-
83
+ (12) Add a "play-this-video-file.cgi" and sinatra app.
84
+ The UI should be simple, start with sinatra. The view-videos
85
+ URL aka /view
86
+ should work. and
87
+ then add:
101
88
  play/134
102
-
103
- ^^^ this should work as well. and allow query-based too.
104
- once sinatra works, try to make it work via the .cgi page
105
- but well... replace the / with _ perhaps to make ti work.
106
- hmmm... yeah. well.
107
- first we must add support for play/134 in sinatra.
108
- Ok this works now ... we have to enable this via .cgi
109
- too. This in order to complete the old functionality
110
- that used to exist here at one point in time.
111
- --------------------------------------------------------------------------------
89
+ ^^^ this should work as well. and allow query-based too.
90
+ once sinatra works, try to make it work via the .cgi page
91
+ but well... replace the / with _ perhaps to make ti work.
92
+ hmmm... yeah. well.
93
+ first we must add support for play/134 in sinatra.
94
+ Ok this works now ... we have to enable this via .cgi
95
+ too. This in order to complete the old functionality
96
+ that used to exist here at one point in time.
97
+ --------------------------------------------------------------------------------