This is the command mp3splt that can be run in the OnWorks free hosting provider using one of our multiple free online workstations such as Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator
PROGRAM:
NAME
mp3splt, oggsplt - utility for mp3/ogg vorbis splitting without decoding
SYNOPSIS
mp3splt [OPTIONS] FILE_OR_DIR1 [FILE_OR_DIR2] ... [BEGIN_TIME] [TIME2] ... [END_TIME]
FILE_OR_DIR: mp3/ogg file to be split or a directory. If you want to specify STDIN as
input, you can use "m-" (or "-") when input is mp3, and "o-" when ogg. Multiple files can
be specified, all files will be split with the same criterion. If a directory is
specified, a recursive scan is performed in that directory to find out all the supported
file formats.
TIME FORMAT:
minutes.seconds[.hundredths] or EOF-minutes.seconds[.hundredths]
Minutes (required): There is no limit to minutes. (You must use this format also
for minutes over 59)
Seconds (required): Must be between 0 and 59.
Hundredths (optional): Must be between 0 and 99. Use them for higher precision.
Multiple split points can be specified. After the minimal 2, another indefinite number of
split points can be specified. Each split point will be an end time for the previous, and
a begin for the following. If you want to reach the end of file, you can use "EOF" as
last splitpoint. EOF-minutes.seconds[.hundredths] only works when input is seekable.
DESCRIPTION
mp3splt is a free command-line utility that allows you to split mp3 and ogg files from
several splitpoints, without need of decoding and reencoding. It is useful to split large
mp3/ogg to make smaller files or to split entire albums to obtain original tracks.
If you are splitting an album you can get splitpoints and filenames automatically from
servers on internet like freedb.org, tracktype.org or from a local .XMCD (.CDDB) or .CUE
file (see -c option), with the possibility to adjust them automatically with silence
detection (see -a option).
You can also try to split files automatically with silence detection (see -s option), trim
files using silence detection (see -r option), or by a fixed time length (see -t option)
Or if you have a file created either with Mp3Wrap or AlbumWrap, you can easily split it
just with one command (see -w option).
NOTE for MP3: usually mp3splt understands if mp3 is VBR by checking the presence of a Xing
or Info header and will consequently start in framemode, but if this is not present,
mp3splt will start in standard mode. This means that splitting process will be quicker,
but imprecise due to variable bitrate, you can split those VBR files only with framemode
(see -f option).
NOTE for OGG: in some cases, mp3splt does not manage to split ogg vorbis streams
correctly. Splitting the input file from 0.0 to EOF might fix the issues.
NOTES about TAGS: by default, mp3splt will put the original tags in the split files.
Custom tags for the split files can be set with the -g option. When copying the original
file tags, only one artist, album, title are supported.
NOTE about MP3 TAGS: in order to extract the original tags from mp3 files, libmp3splt must
be compiled with 'id3tag' support. By default, the output files will have the same ID3 tag
version as the input file; this behaviour can be changed with the -T option. If the input
file has no tags and the -g option is used, then both ID3v1 and ID3v2 are written. Total
tracknumber is not yet supported. Only writing ID3v2.4 is supported; note that some
software only support ID3v2.3 and will not be able to read them.
NOTE about the OUTPUT DIRECTORY: by default, mp3splt will put the split files in the
directory of the input file. In order to change the output directory, you can use one of
the following options: -d or -o. Please note that directories from the -o option will be
created relative to the input file directory.
OPTIONS
-w Wrap Mode. Use to split file created with:
Mp3Wrap http://mp3wrap.sourceforge.net: This tool joins two or more mp3 files in
one large playable file that usually contains the string MP3WRAP in filename and
a special comment in ID3v2. If the file you are splitting is a Mp3Wrap file the
splitting process will be very fast and you will obtain all files just with one
command. If your filename contains MP3WRAP and you have errors or you don't
want to use wrap mode, just remove it from the file.
AlbumWrap: mp3splt is compatible also with albumwrap files, which usually
contain the string ALBW in filename and ID3v2 contains AlbumWrap. But, as
AlbumWrap extractor, mp3splt doesn't give any warranty.
-l List mode (Only for Wrap mode). Lists all tracks wrapped in a Mp3Wrap or
AlbumWrap archive without any extraction. Use this to view the content of the
file or to test if file is a valid wrapped file.
-e Error mode (mp3 only). It is useful to split large file derivated from a
concatenation of smaller files. It detects split points from the so called "sync
errors" (data that break stream, such as ID3 or junk data). Examples of
applicable files are wrapped file (both AlbumWrap and Mp3Wrap) or file created
by appending many mp3 files together. So, when you have a file to split, you
should always try to use this option.
-A AUDACITY_FILE
Audacity labels mode. Split with splitpoints from the audacity labels file.
Example of audacity labels file (in seconds):
10.000000 67.000000 first_file
67.000000 127.000000 second_file
149.000000 206.000000 third_file
-t TIME Time mode. This option will create an indefinite number of smaller files with a
fixed time length specified by TIME (which has the same format described above).
It is useful to split long files into smaller (for example with the time length
of a CD). Adjust option (-a) can be used to adjust splitpoints with silence
detection.
-S SPLIT_NUMBER
Equal time tracks mode. Split in SPLIT_NUMBER files.
-r Trim using silence detection, to trim using silence detection. To trim using
silence detection we need to decode files, so this option can be really slow if
used with big files. It accepts some parameters with -p option (see below for a
detailed description): threshold level (th) which is the sound level to be
considered silence. This feature is new and probably still needs tweaking;
please report any bugs, suggestions, ...
-s Silence mode, to split with silence detection. When you use -s option, mp3splt
attempts to detect silence points in all the file (or just in some parts, see -a
and -c below for this). To detect silence we need to decode files, so this
option can be really slow if used with big files. It accepts some parameters
with -p option (see below for a detailed description): threshold level (th)
which is the sound level to be considered silence, number of tracks (nt) which
is the desired number of tracks, cutpoint offset (off) which is the offset of
cutpoint in silence, minimum_length (min) which is the minimum silence length in
seconds, remove silence (rm) which allows you to remove the silence between
split tracks. If you don't specify any parameter, mp3splt will use the default
values. Of course if you specify the number of tracks to split, you will help
mp3splt to understand what are the most probable split points, anyway once you
scan a file with -s option, mp3splt will write a file named "mp3splt.log" in
which it saves all silence points found. This allows you to run mp3splt with
different parameters (except th and min) without decoding the file again.
Finally, if the number of silence points is not correct, you have many chances
to achieve right result. For example if a silence point was not detected because
too short, you can manually split the long track in the two smaller ones. Or if
file is an MP3 (not with ogg) and there are too many silence points that can't
be discarded reducing track number (because are longer than right points) you
can safely concatenate them with 'cat' programs or similar ('copy /b
file1+file2' for dos) because split files are consecutive, no data is lost.
This option is intended to split small/medium size (but even large if you can
wait ;) mp3 and ogg files where tracks are separated by a reasonable silence
time. To try to split mixed albums or files with consecutive tracks (such as
live performances) might be only a waste of time.
Note about "mp3splt.log":
The first line contains the name of the split file
The second line contains the threshold and the minimum silence length
The next lines contain each one three columns:
‐the first column is the start position of the found silence (in
seconds.fractions)
‐the second column is the end position of the found silence (in
seconds.fractions)
‐the third column is the length of the silence in hundreths of seconds
(second_column * 100 - first_column * 100)
-c SOURCE CDDB mode. To get splitpoints and filenames automatically from SOURCE, that is
the name of a ".CUE" file (note that it must end with ".cue", otherwise it will
be wrongly interpreted as a cddb file) or a local .XMCD (.CDDB) file on your
hard disk.
If you want to get information from Internet, SOURCE must have one of the
following formats:
query
query{album}
query{album}(ALBUM_RESULT_NUMBER)
query[search=protocol://SITE:PORT, get=protocol://SITE:PORT]
query[search...]{album}
query[search...]{album}(ALBUM_RESULT_NUMBER)
If a string is specified between '{' and '}', then the internet search is made
on this string and the user will not be requested to interactively input a
search string. The number between '(' and ')' is for auto-selecting the result
number ALBUM_RESULT_NUMBER; thus, the user will not be requested to
interactively input a result number.
The other parameters between '[' and ']' are used to specify the protocols and
the sites. If those parameters are not specified, default values will be chosen,
which are good enough in most cases. Inside the square brackets, 'search'
defines the CDDB search protocol and site (for searching the disc ID from the
album and title); 'get' defines the CDDB download protocol and site (for
downloading the CDDB file from the disc ID). Valid 'search' protocols are :
'cddb_cgi' and 'cddb_protocol'. Valid 'get' protocols are: 'cddb_cgi'.
Examples:
query[search=cddb_cgi://tracktype.org/~cddb/cddb.cgi:80,
get=cddb_cgi://tracktype.org/~cddb/cddb.cgi:80]
query[get=cddb_protocol://freedb.org:8880]
query[get=cddb_cgi://freedb.org/~cddb/cddb.cgi:80]
Mp3splt will connect to the server and start to find the requested information.
If the right album is found, then mp3splt will query the server to get the
selected album and (if no problem occurs) will write a file named "query.cddb"
from which will get splitpoints and filenames.
IMPORTANT NOTE FOR CDDB: File split with this option can be not very precise due
to:
1) Who extracts CD tracks may use "Remove silence" option. This means that the
large file is shorter than CD Total time. Never use this option.
2) Who burns CD may add extra pause seconds between tracks. Never do it.
3) Encoders may add some padding frames so that file is longer than CD.
4) There are several entries of the same cd on CDDB. In mp3splt they appears
with "\=>" symbol. Try some of them and find the best for yours; usually you
can find the correct splitpoints, so good luck!
YOU CAN USE -a OPTION TO ADJUST SPLITPOINTS!
-a Auto-adjust mode. This option uses silence detection to auto-adjust
splitpoints. It can be used in standard mode, or with -t and -c option (of
course if there is silence in the file ;). It accepts some parameters with -p
option (see below for a detailed description): threshold level (th) which is the
sound level to be considered silence, cutpoint offset (off) which is the offset
of cutpoint in silence, gap (gap) which is the gap value around splitpoint to
search for silence. If you don't specify any parameter, mp3splt will use the
default values. With -a option splitting process is the same, but for each
splitpoint mp3splt will decode some time (gap) before and some after to find
silence and adjust splitpoints.
-p PARAMETERS
Parameters for -a, -s and -r option. When using -a, -s and -r option some users
parameters can be specified in the argument and must be in the form:
<name1=value,name2=value,..>
You can specify an indefinite number of them, with no spaces and separated by
comma. Available parameters are:
For -s, -a and -r
th=FLOAT Threshold level (dB) to be considered silence. It is a float number between -96
and 0. Default is -48 dB, which is a value found by tests and should be good in
most cases.
shots=INTEGER
Positive integer of the minimum number of shots to be found as non silence
after the silence. Default is 25. Decrease this value if you need to split files
having closer silence points.
Both -s and -a
off=FLOAT Float number between -2 and 2 and allows you to adjust the offset of cutpoint in
silence time. 0 is the begin of silence, and 1 the end. Default is 0.8. In most
cases, you will only need to use a value between 0 and 1.
Offset visualization:
v off=0 v off=1
++++ ... ++++++++++++++++++++++----------++++++++++ ... +++++
^off=-0.5 ^off=1.5
^off=-1 ^off=2
^off=-1.5
^off=-2
Legend: pluses are 'audio', minuses 'silence', 'v' down-arrow, '^' up-arrow and
'...' a segment of the audio file (silence or audio)
Only -s
nt=INTEGER
Positive integer number of tracks to be split when using -s option. By default
all tracks are split.
min=FLOAT Positive float of the minimum number of seconds to be considered a valid
splitpoint. All silences shorter than min are discarded. Default is 0.
rm Does not require an additional number and it used to remove silence when using
-s option.
trackmin=FLOAT
Positive float of the minimum number of seconds for a track to be written out.
Tracks shorter than trackmin will be skipped during the output phase. The
default value 0.0 means to not skip any tracks.
Only -a
gap=INTEGER
Positive integer for the time to decode before and after splitpoint, increase if
splitpoints are completely wrong, or decrease if wrong for only few seconds. Of
course the smaller the gap, the faster the process. Default gap is 30 seconds
(so for each song, total decode time is one minute).
-f Frame mode (mp3 only). Process all frames, seeking split positions by counting
frames and not with bitrate guessing. In this mode you have higher precision and
you can split variable bitrate (VBR) mp3. (You can also split costant bitrate
mp3, but it will take more time). Note also that "high" precision means that
time seeking is reliable, but may not coincide for example with another player
program that uses time seeking with bitrate guessing, so make your choice.
Frame mode will print extra info on split process, such as sync errors. If you
obtain some sync errors, try also to split with -e option.
-k Input not seekable. Consider input not seekable (default when using STDIN as
input). This allows you to split mp3 and ogg streams which can be read only one
time and can't be seeked. Both framemode and standard mode are available, but
framemode can be really slow if used with big files, because to seek splitpoints
we need to process all bytes and all frames. -k option (so STDIN as input too)
can't be used together with -s -a -w -e, because input must be seekable for
those options. Copying original tags is not yet supported for the non seekable
option.
-O TIME Overlap split files. TIME will be added to each end splitpoint. Current
implementation of this option makes the split slower.
-o FORMAT Output format. FORMAT is a string that will be used as output directory and/or
filename. If FORMAT contains the DIRCHAR character ('\' on windows and '/' on
other systems), directories will be created for each DIRCHAR if they don't exist
and the output files will be created in the corresponding directory. If the -d
option is not specified, the output directory is the concatenation of the input
file directory and the extracted path from FORMAT. If the -d option is also
specified, the output directory will be the concatenation between the -d option
value and the extracted path from the -o FORMAT (characters up to the last
DIRCHAR). Invalid filename characters from the tags are transformed to '_'.
It can contain name variables, that must begin with @ char and that can be:
@A: performer if found, otherwise artist
@a: artist name
@p: performer of each song (only with .cue)
@b: album title
@g: genre
@t: song title*
@n: track number identifier* (not the real ID3 track number)**
@N: track tag number**
@l: track number identifier as lowercase letter* (not the real ID3 track
number)**
@L: track tag number as lowercase letter**
@u: track number identifier as uppercase letter* (not the real ID3 track
number)**
@U: track tag number as uppercase letter**
@f: input filename (without extension)
@m, @s or @h: the number of minutes, seconds or hundreths of seconds of the
start splitpoint**
@M, @S or @H: the number of minutes, seconds or hundreths of seconds of the end
splitpoint**
(**) a digit may follow for the number of digits to output
When split files are more than one, at least one of @t, @n, @N, @l, @L, @u or @U
(*) must be present to avoid ambiguous names. You can put any prefix,
separator, suffix in the string, for more elegance. To make easy the use spaces
in output filename without interfering with line parameters, you can use the
char '+' that will be automatically replaced with a space. Valid examples are:
@n_@a_@b_@t
@a+-+@n+-+@t (default if using -c and -o is not specified)
@a/@b/@t_@n (will create the directories '<artist>' and '<artist>/<album>')
@f_@n+@m:@s+@M:@S
-d NAME Output directory. To put all output files in the directory named NAME. If
directory does not exists, it will be created. The -o option can also be used to
output files into a directory.
-n No tags. Does not write ID3 or Vorbis comment in output files. Use if you need
clean files. See also the -x option.
-x No Xing header. Does not write the Xing header in output files. Use this option
with -n if you wish to concatenate the split files and obtain a similar file as
the input file.
-T TAGS_VERSION
Force output tags version. For mp3 files, force output ID3 tags as version
ID3v1, ID3v2 or ID3v1 and ID3v2. TAGS_VERSION can be 1, 2 or 12. Default is to
set the output tags version as the tags version of the input file.
-N No silence log file. Don't create the 'mp3splt.log' log file when using silence
detection. This option cannot be used without the '-s' option.
-g TAGS Custom tags. Set custom tags to the split files. TAGS should contain a list of
square brackets pairs []. The tags defined in the first pair of square brackets
will be set on the first split file, those defined in the second pair of square
brackets will be set on the second split file, ... Inside a pair of square
brackets, each tag is defined as @variable=value and tags are separated by
comma. If a percent sign % is found before the open square bracket character,
then the pair of square brackets following the % character will define the
default tags in the following files. Multiple '%' can be defined. An optional
'r' character can be placed at the start, to replace tags in tags. The 'replace
tags in tags' option is not recursive. The variables can be:
@a: artist name
@b: album title
@t: audio title
@y: year
@c: comment
@g: genre
@n: track number
@o: set original tags
@N: auto increment track number: this variable has to be placed inside the %[]
field in order to have the track number auto incremented for all the split files
following it
@m, @s or @h: the number of minutes, seconds or hundreths of seconds of the
start splitpoint
@M, @S or @H: the number of minutes, seconds or hundreths of seconds of the end
splitpoint
Using the 'replace tags in tags' option, you can also use the following
variables, which are replaced by the data from the original tags: #a, #b, #t,
#y, #c, #g. Note that this will only work if @o has been found before.
Example of tags format: %[@o,@N=1,@b=special_album][@a=foo,@b=bar][@t=footitle].
In this example, the first split file will have the original tags with album tag
replaced by 'special album'; the second split file will have the tags of the
first split, with the artist tag replaced by 'foo' and the album tag replaced by
'bar'; the third split file will have the tags of the first split, with the
title tag replaced by 'footitle'. The track number will start at 1 for the first
split file and auto increment to the other files.
Example of replacing tags in tags: r%[@o,@N=1,@b=album,@a=artist_@b_@N]. Having
the 'r' option, the replace tags in tags mode is activated; thus, output artists
are 'artist_album_1','artist_album_2', ... Without the 'r' option, output
artists are 'artist_@b_@N'.
Replacement is not recursive: r%[@o,@N=1,@b=album_@N,@a=artist_@b] will output
albums as 'album_1', 'album_2', ... but artists as 'artist_album_@N'.
Example of replacing tags in tags with # variables: r%[@o,@N=1,@t=@N_#t]This
will prepend the auto incremented track number to the original input file title;
supposing that the input file title is 'one_title', this will set the titles as
follows: '1_one_title', '2_one_title', ...
-G regex=REGEX
Tags from filename regex. Set tags from input filename regular expression.
REGEX can contain those variables:
(?<artist>), (?<album>), (?<title>), (?<tracknum>), (?<year>), (?<comment>),
(?<genre>)
Example: if the input filename is
artist1__album2__title3__comment4__2__2004__Samba.ogg,
the following regular expression
(?<artist>.*?)__(?<album>.*?)__(?<title>.*?)__(?<comment>.*?)
__(?<tracknum>.*?)__(?<year>.*?)__(?<genre>.*) extracts the tags:
(?<artist>): artist1
(?<album>): album2
(?<title>): title3
(?<genre>): Samba
(?<comment>): comment4
(?<tracknum>): 2
(?<year>): 2004
-m M3U Create .m3u file. Creates a .m3u file containing the split files. The generated
.m3u file only contains the split filenames without the path. If an output
directory is specified with -d or -o, the file is created in this directory. The
path of M3U is ignored. This option cannot be used with STDOUT output.
-E CUE_FILE
Export to .cue file. Creates a .cue file containing the splitpoints. Use -P to
export the splitpoints without actually splitting.
-P Pretend to split. Simulation of the process without creating any files or
directories.
-q Quiet mode. Stays quiet :) i.e. do not prompt the user for anything and print
less messages. When you use quiet option, mp3splt will try to end program
without asking anything to the user (useful for scripts). In Wrap mode it will
also skip CRC check, use if you are in such a hurry.
-Q Very quiet mode. Enables the -q option and does not print anything to STDOUT.
This option cannot be used with STDOUT output.
-D Debug mode. Experimental debug support. Print extra information about what is
being done. Current print doesn't have a nice format.
-i Count silence mode. Print the number of silence splitpoints found with silence
detection. Use -p for arguments.
-v Print version. Print the version of mp3splt and libmp3splt and exit.
-h Print help. Print a short usage of mp3splt and exit.
EXAMPLES
mp3splt album.mp3 54.32.19 67.32 -o out
mp3splt album.ogg 54.32.19 67.32 -o out
This is the standard use of mp3splt for constant bitrate mp3 or for any ogg. You specify
a begin time (which in this case uses hundredths, 54.32.19), an end time and an output
file.
mp3splt -f -d newdir album.mp3 album2.mp3 145.59 234.2
This is frame mode for variable bitrate mp3 and multiple files. You can see that time
format uses min.sec even if minutes are over 60. Output files in this case will be:
album_145m_59s_0h__234m_2s_0h.mp3 and album2_145m_59s_0h__234m_2s_0h.mp3 because user
didn't specify it and they will be in the directory named newdir.
mp3splt -nf album.mp3 0.12 21.34.7 25.3 30.40 38.58
This is the use of -n option and multiple splitpoints. Four files will be created and will
not contain ID3 information.
mp3splt -w album_MP3WRAP.mp3
This is Wrap mode. You can use this when mp3 is a file wrapped with Mp3Wrap or AlbumWrap.
You can specify an output directory with the -d option.
mp3splt -lq album.mp3
This is List mode. You can use this when you want to list all tracks of a wrapped file
without extracting them. With quiet option (-q), program will not calculate CRC!
mp3splt -s f.mp3 or mp3splt -s -p th=-50,nt=10 f.mp3
This is silence option. Mp3splt will try to automatically detect splitpoints with silence
detection and in the first case will split all tracks found with default parameters, while
in the second 10 tracks (or less if too much) with the most probable silence points at a
threshold of -50 dB.
mp3splt -c file.cddb album.mp3
This is CDDB mode with a local file. Filenames and splitpoints will be taken from
file.cddb.
mp3splt -c query album.mp3
This is CDDB mode with internet query. Will ask you the keyword to search and you will
select the wanted cd.
mp3splt -a -c file.cddb album.mp3
This is CDDB mode with auto-adjust option (default parameters). Splitpoints will be
adjusted with silence detection in a range of 30 seconds before and after cddb
splitpoints.
mp3splt -a -p gap=15,th=-23,rm -c file.cddb album.mp3
This is CDDB mode with auto-adjust option. Splitpoints will be adjusted with silence
detection in a range of 15 seconds before and after cddb splitpoints, with a threshold of
-23 dB, and silence will be removed.
mp3splt -c query album.mp3 -n -o @n_@t
This is CDDB mode with internet query with Frame mode, NoID3 and Output format. Output
filenames will be named like: 01_Title.mp3
mp3splt -t 10.00 album.mp3
This is -t option. It will split album.mp3 in many files of 10 minutes each.
Use mp3splt online using onworks.net services