Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

subs(1p) [debian man page]

SUBS(1p)						User Contributed Perl Documentation						  SUBS(1p)

NAME
subs - convert, join, split, and re-time subtitles FORMAT
subs [options] subfile [ subfile ... ] OPTIONS
-a coeff, -b time a and b coefficients in linear transformation u=at+b, where t and u are src and dest times ( default(identity transform) is [a=1,b=0] ). -a can be set as ratio, f.ex. 23.9/25 -c codec Use codec to write file. Run 'subs -h' for list of installed codecs. -d Try to prolong duration of quickly disappearing text. 'Quickly' is less than 0.8 second per line of text. -e command Run perl code for each line of text in file. On each run, the text and time variables are initialized, and new values, if any, written to the file. The variables are used for: $_ subtitle text line $b cue beginning $e cue end $i line number $n number of lines %p persistent data between runs The -e option can be specified several times -h Display help -i Edit files in place ( makes backup in .bak files ) -j sec Time interval between joins, seconds (default 2) -o file File to save processed subtitles (default out.sub) -O Separate overlapped lines -p t1 t2 or -P t2 t1 Set a control point, where t1 is time of a phrase spoken in the film and t2 is time when the same phrase as appears in the subtitle. Two points are required for deducing -a and -b coefficients; if only one point is specified, it is assumed that the other one is [0,0]. Times can be relative, f.ex. -p 01:00 +3.5 -p -20 1:00:00 Options -P and -p are the same except the argument sequence is reversed. -P is to be used when arguments to -p were typed manually and in wrong order. -q t1 t2 Restrict changes, if any, in time span t1-t2. Word 'end' can be used as an alias to the end of the file. Default values are '0' and 'end'. -r rate Force frame-per-second rate for frame-based subs -s time Split in two parts by time -v Be verbose -z file.sub Zip subtitle files so time information is read from file.sub, while text information is read from the input file(s). NOTES
The time format is either [[HH:]MM:]SS[.MSEC] or subtitle format-specific EXAMPLES
Warning: -i is a great feature, but use it with certain caution. If subtitles are shown too early ( 5 seconds): subs -i -b 5 file.sub If subtitles are for a movie in 25 fps, need to be for 24 ( actual for frame-based formats only ). subs -i -a 24/25 file.sub If subtitles start ok, but in 1 hour are late in 7 seconds: subs -i -p 0 0 -p 1:00:00 +7 file.sub Join two parts with 15-second gap subs -o joined.sub -j 15 part1.sub part2.sub Split in two after 50 minutes and half a second ( makes basename.1.sub and basename.2.sub ). subs -o basename.sub -s 50:00.5 toobig.sub Remove closed caption-specific comments such as '[Sneezing]' or '[Music playing]' subs -e 's/[s-]*[.*]s* *//gs' sub.sub BUGS
Subtitles written as ".smi" format may differ from original. SEE ALSO
Subtitles - backend module for this program AUTHOR
Dmitry Karasik, <dmitry@karasik.eu.org>. perl v5.14.2 2009-12-22 SUBS(1p)

Check Out this Related Man Page

Time::Fake(3pm) 					User Contributed Perl Documentation					   Time::Fake(3pm)

NAME
Time::Fake - Simulate different times without changing your system clock SYNOPSIS
Pretend we are running 1 day in the future: use Time::Fake '+1d'; Pretend we are running 1 year in the past: use Time::Fake '-1y'; Pretend the script started at epoch time 1234567: use Time::Fake 1234567; See what an existing script would do if run 20 years in the future: % perl -MTime::Fake="+20y" test.pl Run a section of code in a time warp: use Time::Fake; # do some setup Time::Fake->offset("+1y"); run_tests(); # thinks it's a year ahead Time::Fake->reset; # back to the present DESCRIPTION
Use this module to achieve the effect of changing your system clock, but without actually changing your system clock. It overrides the Perl builtin subs "time", "localtime", and "gmtime", causing them to return a "faked" time of your choice. From the script's point of view, time still flows at the normal rate, but it is just offset as if it were executing in the past or present. You may find this module useful in writing test scripts for code that has time-sensitive logic. USAGE
Using and importing: use Time::Fake $t; Is equivalent to: use Time::Fake; Time::Fake->offset($t); See below for arguments to "offset". This usage makes it easy to fake the time for existing scripts, as in: % perl -MTime::Fake=+1y script.pl offset Time::Fake->offset( [$t] ); $t is either an epoch time, or a relative offset of the following form: +3 # 3 seconds in the future -3s # 3 seconds in the past +1h # 1 hour in the future etc.. Relative offsets must begin with a plus or minus symbol. The supported units are: s second m minute h hour d day (24 hours) M month (30 days) y year (365 days) If $t is an epoch time, then "time", "localtime", and "gmtime" will act as though the the current time (when "offset" was called) was actually at $t epoch seconds. Otherwise, the offset $t will be added to the times returned by these builtin subs. When $t is false, "time", "localtime", "gmtime" remain overridden, but their behavior resets to reflect the actual system time. When $t is omitted, nothing is changed, but "offset" returns the current additive offset (in seconds). Otherwise, its return value is the previous offset. "offset" may be called several times. However, The effect of multiple calls is NOT CUMULATIVE. That is: Time::Fake->offset("+1h"); Time::Fake->offset("+1h"); ## same as # Time::Fake->offset("+1h"); ## NOT the same as # Time::Fake->offset("+2h"); Each call to "offset" completely cancels out the effect of any previous calls. To make the effect cumulative, use the return value of calling "offset" with no arguments: Time::Fake->offset("+1h"); ... Time::Fake->offset( Time::Fake->offset + 3600 ); # add another hour reset Time::Fake->reset; Is the same as: Time::Fake->offset(0); That is, it returns all the affected builtin subs to their default behavior -- reporing the actual system time. KNOWN CAVEATS
Time::Fake must be loaded at "BEGIN"-time (e.g., with a standard "use" statement). It must be loaded before perl compiles any code that uses "time", "localtime", or "gmtime". Due to inherent limitations in overriding builtin subs, any code that was compiled before loading Time::Fake will not be affected. Because the system clock is not being changed, only Perl code that uses "time", "localtime", or "gmtime" will be fooled about the date. In particular, the operating system is not fooled, nor are other programs. If your Perl code modifies a file for example, the file's modification time will reflect the actual (not faked) time. Along the same lines, if your Perl script obtains the time from somewhere other than the affected builtins subs (e.g., "qx/date/"), the actual (not faked) time will be reflected. Time::Fake doesn't affect -M, -A, -C filetest operators in the way you'd probably want. These still report the actual (not faked) script start time minus file access time. Time::Fake has not been tested with other modules that override the time builtins, e.g., Time::HiRes. SEE ALSO
Time::Warp, which uses XS to fool more of Perl. AUTHOR
Time::Fake is written by Mike Rosulek <mike@mikero.com>. Feel free to contact me with comments, questions, patches, or whatever. COPYRIGHT
Copyright (c) 2008 Mike Rosulek. All rights reserved. This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. perl v5.12.3 2008-01-17 Time::Fake(3pm)
Man Page