FE 'tkGooie' Utilities'VIDEOtools' & 'AUDIOtools' group
A Tk GUI utility to
|
(FE = Freedom Environment) |
FE Home Page >
FE Downloads Page >
FE 'tkGooies' Description Page >
FE 'tkGooies' 'VIDEOtools' Page OR
FE 'tkGooies' 'AUDIOtools' Page >
This
'tkPlayMediaFilesInPlaylist'
VIDEOtools/AUDIOtools tkGooie Page
INTRODUCTION to the On 2014mar02, I contributed code at the Tcler's Wiki at wiki.tcl.tk in a page titled 'tkShowImageFilesInPlaylist - a front-end for multiple image viewers'. That Tk script code uses several image viewers ('eog', 'display', 'ffplay') in making a 'show-image-files-in-a-playlist' Tk-script utility. That page mentioned that another utility would follow --- a utility to show 'media' (video/movie or audio) files, named in a 'playlist' file --- using media-players such as
That 'play-media-files-in-a-playlist' utility is the subject of this page. One Way to Build the Media Playlist These two (images and media) 'show/play-files-in-a-PLAYLIST' utilities are follow-up's to two corresponding 'batch' 'find-and-show/play-files-in-a-DIRECTORY-HIERARCHY' utilities. Those two utilities were posted at wiki.tcl.tk in 2013 December on pages titled and The first provides a Tk GUI 'front end' to a combination of the 'find' command and a user-selectable image viewer command/program. The second provides a Tk GUI 'front end' to a combination of the 'find' command and a user-selectable media-player command/program. These two 'batch-find' utilities have GUI's that were designed to offer the user the ability to 'automatically' select image/media files within a DIRECTORY HIERARCHY --- according to criteria such as filename-mask, file-size, file-age, and file-type --- and show the image/media files in a sequence --- with a choice from several image-viewer/media-player programs. (In these Tk scripts, it is quite easy to switch out any of these viewer/player programs/commands to replace them with another viewer/player that is available in a user's operating environment.) Each of these two 'Batch-Find' utilities was implemented as a Tk script and 2 shell scripts. As such, they should be implementable with very few changes in various Linux, BSD, Mac, and Unix operating system environments. An intended use of the 'batch-image-viewer' and 'batch-media-player' utilities was to allow for quickly surveying image/media files that may be scattered throughout a directory hierarchy --- such as sub-directories of a web site --- OR sub-directories of a home directory --- OR sub-directories on multiple disk drives mounted on a computer --- OR sub-directories of a removable storage device mounted on a computer. However, two drawbacks of these batch find-and-show/play utilities are that
A nice feature: These batch-find utilities can be used to find image or media files from a vast hierarchy of directories --- and relatively quickly review them. The 'batch-image-viewer' and 'batch-media-player' utilities have a 'show-selected-files' button-option that lists the files selected via the search criteria (filename-mask, file-size, file-age, and/or file-type). The filenames list is shown in a popup window, in a Tk 'text' widget. So the list of filenames could be pasted in a text-editor window --- and the user could change the ORDER of the files and ELIMINATE files that the user does not want to view/play, for this particular group of files. In other words, the user could rather easily make a 'playlist' of files to be viewed with an image-viewer program --- or a playlist of movie/audio files to be played with a 'media-player' program --- in particular, for use in the utility presented on this page. If I were to prepare a playlist file of movie/audio files, I just needed a utility to 'play' the files --- preferably a low-cost (like free) utility that is easily enhanced/modified/fixed. That is the purpose of the 'play-media-files-in-a-playlist' utility whose Tcl-Tk code is presented below. --- PLAYERS FOR MOVIE FILES --- in a Tk GUI It is conceivable that a person could make an image viewer with Tcl-Tk --- one that reads image files named in a 'playlist' --- by using the 'photo image' reading capability of Tk along with the Tk 'canvas' widget capabilites. However, it is not so feasible to make a video player with Tcl-Tk --- one that reads video files named in a 'playlist' and displays the frames of each video in a Tk GUI --- because (it seems to me) that there is no capability for showing video frames in the Tk GUI (say, on the 'canvas' widget) --- at least no efficent way. Furthermore, there does not seem to be a nice/easy way to play the audio track(s) in a movie file AND show the video frames of the movie in a Tk GUI. (Another problem is that there are so many different video and audio formats. An overview of these formats is provided at the bottom of this page.) BUT, one could make a movie/audio player --- for filenames in a 'playlist' file --- by using existing media-players, such as the ones listed above. And that is the type of utility presented on this page --- a utility that reads a 'media playlist' file and uses some 'external' media-players to play the media. In other words, the Tk GUI utility on this page is a 'front end' for reading a media playlist file (containing names of movie and/or audio files) and playing the sequence of files in the playlist, using 'external' media-players. --- THE GOALS My goals for the Tcl-Tk script were:
--- THE GUI LAYOUT Like for the 'show-image-files-in-a-playlist' 'slideshow' utility, I made a 'text-sketch' for the GUI for this 'play-media-files-in-a-playlist' utility: |
--------------------------------------------------------------------------------------------
Play *Media* Files of a *Playlist* ... with a choice of media-players
[window title]
--------------------------------------------------------------------------------------------
{Exit} {Help} {LaunchPlayerJob} {Stop (no more files)} {CountMediaFiles} {ShowMediaFilenames}
Playlist Filename: ____________________________________________________________ {Browse...}
Player Program: O 1 mplayer O 2 ffplay O 3 totem O 4 gmplayer O 5 VLC O 6 smplayer
Display Size: O Default O Fullscreen
--------------------------------------------------------------------------------------------
where
Square brackets indicate a comment (not to be placed on the GUI).
Braces indicate a Tk 'button' widget.
Underscores indicate a Tk 'entry' widget.
A colon indicates that the text before the colon is on a 'label' widget.
Capital-O indicates a Tk 'radiobutton' widget.
Capital-X indicates a Tk 'checkbutton' widget (if any).
GUI Components From the GUI 'sketch' above, it is seen that the GUI consists of about
about 19 widgets in all (not counting 'frame' widgets). THE PLAYLIST FILE FORMAT The intent of this utility is to allow the user to easily specify media files to be played ... by building a simple 'playlist'. The playlist file for this utility contains three types of lines: |
1 - Comment lines may be indicated in the file by a # sign
in column 1.
2 - Lines that contain a fully-qualified directory name
or a 'dot' directory name.
Examples: /data/movies/tennis2013 or
$env(HOME)/tennis2013 or
/home/fred/tennis2013 or
. or
./USopen
These lines must start with either slash(/) or $ or dot(.).
The dot can be used to represent the directory in which
the playlist file lies. This useful when putting the playlist
file in a directory of media files and using the dot to
represent the directory of the media files. The directory of
media files may have sub-directories of media files, as indicated
by the last example. The dot allows for moving/copying the
media files (with the playlist file) to different directories
without having to change the internals of the playlist file.
3 - Lines that contain a relative filename (relative to the
previous directory name)
Example: Federer_vs_Nadal_2013.mp4
These lines DO NOT start with either slash (/) or $ or dot(.)
or #.
The first non-comment line of the playlist file should be a directory name. There can be more than one directory name in the file. Each directory-name-line is followed by names of image files that are in the specified directory. A SAMPLE media playlist file: |
# A description of this file could go here.
#
# First directory:
$env(HOME)/tennis2013
Federer_vs_Nadal_2013.mp4
Djokovic_vs_Murray_2013.flv
#
# Second directory:
/data/sports/tennis/movies/1972
McEnroe_vs_Connors_1972.mpg
FRONT END FOR OPTIONS FOR THE MEDIA PLAYERS This 'Front End' Tk script is essentially a 'front end' for the media-player programs that are offered via radiobuttons on the GUI. --- the first set of radiobuttons. A second set of radiobuttons allow for running the several media-players in 'fullscreen' mode, instead of a 'default' mode. The 'default' mode may vary, depending on the player chosen, but it is typically play-a-movie-at-its-original-size- unless-it-is-too-large-for-the-screen. In the future, if there are some other options --- other than 'fullscreen' --- (of at least one of the media-players) that would seem nice to implement, then additional widgets could be added to the GUI to support those choices. Beautification of the GUI I should point out here that I was not especially interested in coming up with a 'beautiful utility'. I just wanted a utility for playing media files
I am certainly interested in making pretty GUI's --- as I have indicated by Tk script examples that I posted at wiki.tcl.tk on pages titled and But at this time, I am satisfied to implement the 'functionality', and let the 'beauty' go for a later date (when I have more beauty tools/code at hand). SCREENSHOT OF THE GUI On the basis of the GUI-layout sketch above, I ended up with the GUI seen in the following image. |
Note that there are several radiobuttons that allow you to choose the media-player to use --- and a couple of radiobuttons to choose fullscreen-mode, or not. --- TYPICAL SEQUENCE OF OPERATIONS WITH THE GUI You can use the 'Browse...' button to retrieve a full filename to the filename entry field. Before clicking on the 'LaunchPlayerJob' button, you can also change radiobutton settings as needed --- for
and
*NOTE*: Use the 'Stop' button to skip playing the remaining files in the playlist file. --- Optionally, if you want to check the number or names of the media files specified in the 'playlist' file, then, after selecting a playlist file, click on the 'CountMediaFiles' or 'ShowMediaFilenames' button. --- BREADTH AND FLEXIBILITY FEATURES OF THIS UTILITY Note that this utility has the flexibility of a 'playlist' approach. The user is given an opportunity to SELECT the files to be shown and is given the opportunity to choose the ORDER in which the selected image files are shown. This utility is oriented toward playing movie or audio files which may be scattered throughout various PARENT DIRECTORIES and THEIR SUB-DIRECTORIES --- in a play-back ORDER DETERMINED BY THE USER (that is, determined by the order of directories and files in the playlist file). DESCRIPTION OF THE CODE Below, I provide the Tk script code for this 'play-media-files-in-a-playlist' utility. I follow my usual 'canonical' structure for Tk code for this Tk script: |
0) Set general window & widget parms (win-name, win-position,
win-color-scheme, fonts-for-widgets, widget-geometry-parms,
text-array-for-labels-etc, win-size-control).
1a) Define ALL frames (and sub-frames, if any).
1b) Pack ALL frames and sub-frames.
2) Define & pack all widgets in the frames, frame by frame.
Within each frame, define ALL the widgets.
Then pack the widgets.
3) Define keyboard and mouse/touchpad/touch-sensitive-screen action
BINDINGS, if needed.
4) Define PROCS, if needed.
5) Additional GUI initialization (typically with one or more of
the procs), if needed.
This Tk coding structure is discussed in more detail on the page A Canonical Structure for Tk Code --- and variations. This structure makes it easy for me to find code sections --- while generating and testing a Tk script, and when looking for code snippets to include in other scripts (code re-use). I call your attention to step-zero. One thing that I started doing in 2013 is use of a text-array for text in labels, buttons, and other widgets in the GUI. This can make it easier for people to internationalize my scripts. I will be using a text-array like this in most of my scripts in the future. Experimenting with the GUI As in all my scripts that use the 'pack' geometry manager (which is all of my 100-plus scripts, so far), I provide the four main 'pack' parameters --- '-side', '-anchor', '-fill', '-expand' --- on all of the 'pack' commands for the frames and widgets. That helps me when I am initially testing the behavior of a GUI (the various widgets within it) as I resize the main window. I think that I have used a pretty nice choice of the 'pack' parameters. The label and button and radiobutton widgets stay fixed in size and relative-location if the window is re-sized --- while the entry widget expands/contracts horizontally whenever the window is re-sized horizontally. You can experiment with the '-side', '-anchor', '-fill', and '-expand' parameters on the 'pack' commands for the various frames and widgets --- to get the widget behavior that you want. --- Additional experimentation with the GUI: You might want to change the fonts used for the various GUI widgets. For example, you could change '-weight' from 'bold' to 'normal' --- or '-slant' from 'roman' to 'italic'. Or change font families. In fact, you may NEED to change the font families, because the families I used may not be available on your computer --- and the default font that the 'wish' interpreter chooses may not be very pleasing. I use variables to set geometry parameters of widgets --- parameters such as border-widths and padding. And I have included the '-relief' parameter on the definitions of frames and widgets. Feel free to experiment with those 'appearance' parameters as well. If you find the gray 'palette' of the GUI is not to your liking, you can change the value of the RGB parameter supplied to the 'tk_setPalette' command near the top of the code. --- In fact, here are images from a couple of experiments with the variable-width fonts used for text on Tk 'label' and 'button' and 'radiobutton' widgets --- and experimentation with the color 'palette' of the Tk window. |
The image above uses the rather staid 'Times New Roman' font --- and a brownish palette (to blend with the brownish desktop background image that came with my Ubuntu 9.10 Gnome 2.28 desktop system). |
The image above uses the not-so-staid 'Zachary' font (modeled on the hand-writing of the son of a font-maker) --- and a bluish palette. Some features in the code There are plenty of comments in the code to describe what most of the code-sections are doing. You can look at the top of the PROCS section of the code to see a list of the procs used in this script, along with brief descriptions of how they are called and what they do. The main procs are : |
'get_playlist_filename' - called by the 'Browse...' button
next to the filename entry field
'count_media_files' - called by the 'CountMediaFiles' button.
'show_media_filenames' - called by the 'ShowMediaFilenames' button.
'play_media_files' - called by the 'LaunchPlayerJob' button.
'popup_msgVarWithScroll' - called by 'Help' button to show HELPtext var.
Also called via the 'CountMediaFiles' and
and 'ShowMediaFilenames' buttons
Like with the 'batch-find-images-and-view' and 'batch-find-media-and-play' and 'show-images-of-a-playlist' Tk GUI utilities, I used the following statement to allow the GUI to be expanded in the x-direction, but NOT the y-direction. wm resizable . 1 0 --- To get the 'Stop' button to work, I used the technique that I used for the 'show-images-of-a-playlist' utility. I could not use the Tcl 'exec' command to start the 'external' player(s) in a 'foreground' mode, because that would 'lock up' the Tk GUI while a media file was being played by the 'external' player. Instead, I use the 'exec' command to start the media-player in a 'background' mode. Example: |
catch {eval exec $PLAYERcommand "$MEDIAfilename" &} PlayerPID
Thus I had a PID (process ID) for the media-player process. I used a Tcl 'while' loop, including an 'after 500' statement to occasionally check, with the 'ps' list-processes command of the operating system, whether the process was still running --- thanks to a code snippet seen at http://stackoverflow.com/questions/ 16012040/ how-do-i-check-for-spawn-id-thats-alive-tcl. Based on that example, I used the following simple loop |
while {1} {
update
after 500
if {[catch {exec ps $PlayerPID} CatchMsg] != 0} {break}
}
This code was used to check if the player-program, which is running 'in the background', is still running. When the player-program is no longer running (because it reached end-of-file or the user closed the program), the Tcl-Tk file-reading program loop checks whether the 'Stop' button was pressed. (The Stop button sets a stop-variable to 1 rather than 0. That variable is what is checked.) If 'Stop' was pressed, the Tk script breaks out of the file reading loop. Comments in the script It is my hope that the copious comments in the code will help Tcl-Tk coding 'newbies' get started in making GUI's like this. Without the comments, potential young Tcler's might be tempted to return to their iPhones and iPads and iPods --- to watch videos of Russian helicopters flying over a highway into the Crimea (apparently as captured on the smartPhone of a Ukrainian motorist). The Tcl-Tk CODE Here is a link to CODE for the script 'playMediaFilesInPlaylist_FrontEnd.tk'. INSTALLING THE SCRIPT: For this 'media-playlist' utility, a SINGLE Tk script can be put in a sub-directory of the user's home directory, such as $HOME/apps/tkPlayMediaInPlaylist. (I used two auxiliary shell scripts, in addition to a Tk script, to implement the 'batch-find-images-and-view' and 'batch-find-media-and-play' utilities. So those two utilities involved the installation of THREE scripts. No auxiliary shell script is used in this media-playlist utility, however.) The user can use their desktop system (such as Gnome or KDE) to set up the Tk script as an icon on the desktop. Then the user can click on the icon to startup the 'front end'. --- Below is an image of the 4 icons that I set up on an Ubuntu 9.10 Gnome 2.28 desktop for the 4 show/play utilities that I have provided at the following pages of this FE web site: and
SOME POSSIBLE ENHANCEMENTS This Tk script adds another utility to my list of 'done' utilities --- in the 'Front Ends' category. I plan to work on other 'front ends' --- for commands with many command-line optons --- such as 'mplayer', 'xrandr', 'ffmpeg', 'rsync', and several other commands (or combinations of commands). But I may return to this 'play-media-files-in-a-playlist' Tk script to provide some enhancements. Additional options may be added to the GUI, via adding a few widgets, to allow for
See 'UPDATE 2014apr22', near the bottom of this page, for some unforeseen enhancements. |
FILE FORMATS for MOVIES and AUDIO As I promised above, here is an overview of movie and audio file formats. Note that this 'play-media-files-of-a-playlist' utility will play whatever media file types are supported by the media player that is chosen. Most of these media players, listed above, support most of the common types of movie files. However, in some cases, they may fail to play a media file --- especially if a needed 'decoder' library is not available on the user's computer. In case of failures, it will probably be good to know a little about the 'nature' of movie and audio files. Basically, a movie file involves THREE different formats:
--- Movie Container Formats The Linux/Unix 'file' command, when applied to a movie file, typically reports on the 'container' format of the movie file. Example output from the 'file' command: |
Typical movie suffix output from the 'file' command
-------------------- -----------------------------------------
mp4 ISO Media, MPEG v4 system, version 1
mpg or mpeg MPEG sequence, v1, system multiplex
flv Macromedia Flash Video
mov ISO Media, Apple QuickTime movie
wmv Microsoft ASF
avi (with DivX video) RIFF (little-endian) data, AVI, 640 x 480, 30.00 fps,
video: DivX 3 Fast-Motion
avi (with Xvid video) RIFF (little-endian) data, AVI, 640 x 480, 30.00 fps,
video: XviD
avi (w. Cinepak video) RIFF (little-endian) data, AVI, 160 x 120, 10.00 fps,
video: Cinepak, audio: uncompressed PCM (mono, 8000 Hz)
ISO = International Standards Organization
MPEG = Motion Picture Experts Group
ASF = Advanced Systems Format
RIFF = Resource Interchange File Format
AVI = Audio Video Interleave
PCM = Pulse Code Modulation
The 'mp4' and 'flv' container formats are commonly used in recent times (2010-2014). The 'mpg/mpeg', 'wmv', and 'avi' container formats are formats that are getting rather 'long in the tooth'. --- Audio-only Formats 'file' returns text strings like the following on AUDIO files: |
Typical
suffix output from the 'file' command
------- -----------------------------------------
mp3 MPEG ADTS, layer III, v1, 128 kbps, 44.1 kHz, Stereo
wav RIFF (little-endian) data, WAVE audio, Microsoft PCM, 8 bit, mono 22050 Hz
MPEG = Motion Picture Experts Group
ADTS = Audio Data Transport Stream
RIFF = Resource Interchange File Format
PCM = Pulse Code Modulation
These are audio 'encoding' formats --- not 'container' formats. Note that 'layer III' indicates the popular 'mp3' audio file format. ---
Tyical Video-and-Audio Formats Some of the popular video-and-audio 'encodings' seen in various movie 'container' files --- via applying the 'ffmpeg -i' command to the movie file or using the File Properties option of the Gnome2-Nautilus file manager: |
Container
file suffix Video-Audio encodings typically found in the container
---------------- -------------------------------------------------------------
mp4 h264-aac
flv (a.k.a. Flash) vp6f-mp3 , flv(Sorensen)-mp3, h264-aac , flv(Sorensen)-adpcm_swf
mpg or mpeg mpeg1video-mp2 , mpeg4-mp3
mov mpeg4-aac , cinepak-adpcm_ima_qt , svq3(Sorensen)-mp3, svq3-qdm2 , h263-qcelp
wmv (a.k.a. asf) wmv3-wmav2 , wmv2-wmav2 , wmv1-wmav2 , msmpeg4-wmav2
avi mpeg4-pcm_s16le , msmpeg4-none , cinepak-pcm_u8
Note that there are a 'mess' of video-audio combinations out there. |
INFO on the MEDIA-PLAYERS ---
FEATURES & IDIOSYNCRACIES OF The 'man' page for the 'mplayer' command is more than 8,000 lines long (100-plus pages). There is an overwhelming number of command-line options for 'mplayer'. The '-fs' (fullscreen) option is the main one that is implemented in this Tk script utility. Here are some of the keyboard controls that you can use when the 'mplayer' display window comes up : |
q or ESC Stop playing and quit.
f Toggle fullscreen.
p or SPACE Pause (pressing again unpauses).
<- and -> Seek backward/forward 10 seconds.
up and down Seek forward/backward 1 minute.
pgup and pgdown Seek forward/backward 10 minutes.
. Step forward. Pressing once will pause movie,
every consecutive press will play one frame and
then go into pause mode again (any other key unpauses).
[ and ] Decrease/increase current playback speed by 10%.
{ and } Halve/double current playback speed.
backspace Reset playback speed to normal.
+ and - Adjust audio delay by +/- 0.1 seconds.
/ and * Decrease/increase volume.
9 and 0 Decrease/increase volume.
( and ) Adjust audio balance in favor of left/right channel.
m Mute sound.
I Show filename on the OSD (OnScreen Display).
You can consult the 'man mplayer' info for more information on controlling 'mplayer' as a media file is played. ---
FEATURES & IDIOSYNCRACIES OF Although the 'ffplay' command (which is usually packaged with the 'ffmpeg' command) does not have nearly as many parameter options as the 'mplayer' command, the 'ffplay' command may be handy to try if 'mplayer' fails to play a media file. 'ffplay' does not have any control options in a GUI. But there a few 'ffplay' keyboard controls: |
q or ESC Quit.
f Toggle full screen.
p or SPC Pause.
left/right Seek backward/forward 10 seconds.
down/up Seek backward/forward 1 minute.
mouse click Seek to percentage in file corresponding to fraction of width.
w Show audio waves.
a Cycle audio channel
v Cycle video channel
t Cycle subtitle channel
'ffplay' automatically expands each media file image to fit in the 'ffplay' window when it is 'fullscreen'. This can be convenient, however, for media files with small image size, the scale-up may result in crude-looking images (frames). ---
FEATURES & IDIOSYNCRACIES OF 'totem' has a pretty elaborate GUI for controlling the display of a media file. In addition, it has a rather plentiful set of keyboard control options, including: |
q Quit.
Esc Exit full screen mode.
f Toggle full screen.
p Toggle between play and pause.
h Toggle display of on-screen controls.
0 Resize window to 50% original size.
1 Resize window to 100% original size.
2 Resize window to 200% original size.
r Zoom in the video.
t Zoom out the video.
Left-arrow Skip back 15 seconds
Right-arrow Skip forward 60 seconds
Shift+Left-arrow Skip back 5 seconds
Shift+Right-arrow Skip forward 15 seconds
Ctrl+Left-arrow Skip back 3 minutes
Ctrl+Right arrow Skip forward 10 minutes
Up-arrow Increase volume by 8%
Down-arrow Decrease volume by 8%
The 'totem' player has a nice 'audio-visualization' feature. When you play an audio file, a psychelic animation is displayed in the window where movies would be displayed in the 'totem' interface. ---
FEATURES & IDIOSYNCRACIES OF The 'gnome-mplayer' program seems to have some bugs (that are confirmed by searches on the internet). The '--fullscreen' parameter does not seem to work --- nor the '--width' and --'height' parameters. This made it impossible to offer a fullscreen mode (at least for the version of 'gnome-mplayer' on the test computer --- version 0.8.8, 2008, lead developer: Kevin DeKorte). So instead of offering 'gnome-mplayer' on this GUI, I have offered the 'gmplayer' program (which was delivered with the version of 'mplayer' on my development-and-test computer --- version 4.4.1, 2009). ---
FEATURES & IDIOSYNCRACIES OF 'gmplayer' offers a small subset of the 'mplayer' command line options as comand line options for 'gmplayer'. The '-fs' (fullscreen) option is the main one that is implemented in this Tk script utility. The 'gmplayer' program offers a small, minimal GUI --- with buttons to control things like
and two slider bars to
As an alternative to (and augmentation of) those GUI controls, 'gmplayer' has the following keyboard control options : |
q or ESC stop playing and quit program
p or SPACE pause movie (press any key to continue)
<- or -> seek backward/forward 10 seconds
down or up seek backward/forward 1 minute
pgdown or pgup seek backward/forward 10 minutes
+ or - adjust audio delay by +/- 0.1 second
* or / increase or decrease PCM (audio) volume
x or z adjust subtitle delay by +/- 0.1 second
r or t adjust subtitle position up/down, also see -vf expand
o cycle OSD mode: none / seekbar / seekbar + timer
(OSD = OnScreenDisplay info)
FEATURES & IDIOSYNCRACIES OF The 'man' page for the 'vlc' command is more than 4,500 lines long (50-plus pages). There is an overwhelming number of command-line options for 'vlc'. The 'fullscreen' option is the main one that is implemented in this Tk script utility. 'vlc' has a rather elaborate GUI. You can determine most of its keyboard shortcuts from the items on the toolbar drop-down menus. ---
FEATURES & IDIOSYNCRACIES OF 'smplayer' has a rather simple GUI --- like 'gmplayer'. You can determine most of its keyboard shortcuts from the items on the toolbar drop-down menus. The GUI of 'smplayer' has a little different 'look' versus the GUI of 'gmplayer' --- because 'smplayer' was programmed using the Qt library to build the GUI, while the Gtk library was used to build the 'gmplayer' GUI. |
IN CONCLUSION As I have said on several other code-donation pages on this wiki ... There's a lot to like about a utility that is 'free freedom' --- that is, no-cost and open-source so that you can modify/enhance/fix it without having to wait for someone else to do it for you (which may be never). A BIG THANK YOU to Ousterhout for starting Tcl-Tk, and a BIG THANK YOU to the Tcl-Tk developers and maintainers who have kept the simply MAH-velous 'wish' interpreter going. UPDATE 2014apr22 In using this utility, I found a few changes were advisable:
The code above has been replaced with the updated code. |
Bottom of this page for
To return to a previously visited web page location, click on the
Back button of your web browser a sufficient number of times.
OR, use the History-list option of your web browser.
< Go to Top of Page, above. >Page history: The code was created in 2014 --- and posted 2014 Mar 06 at http://wiki.tcl.tk/39481.
This FE web page was created 2014 May 07.
NOTE: |