karl_lillevold
24th March 2004, 22:37
Now that there is a codec section in binary release section on Helix Community that I manage, I realized I can make 'dtdrive' available for download. The package that I built is binary Win32-x86 only, but many of dtdrive's modules and dtdrive itself can be built from source from the Helix Community.
This tool does just about everything and the kitchen sink (except mux RM files, but that may be forthcoming), and I thought it would be useful for the advanced container format users in this forum.
For instance, you can convert AAC-RM to AAC
dtdrive file.rm -W file.aac
AAC-RM to M4A
dtdrive file.rm -W file.m4a
AAC to AAC-RM
dtdrive file.aac -S 1 -W file.rm
AAC to M4A and M4A to AAC
dtdrive file.aac -W file.m4a
dtdrive file.m4a -W file.aac
Demux RM A+V:
Audio: dtdrive -DV 0 -DA 2 av.rm -S 1 -W audio.rm
Video: dtdrive -DV 2 -DA 0 av.rm -S 1 -W video.rm
[-S 1 should always be used when writing out RealMedia file]
+ a whole lot more (conversions, decodes, transcodes, transmux) with a long list of formats (sorry, not Matroska). These were just the minimal set of examples I have tried myself. I am not really giving dtdrive justice by providing so few examples... If something does not work, let me know, but it is more than likely I can not help or explain right away at least.
Download
Helix Binary Downloads (https://helixcommunity.org/beula/download/)
Usage:
[i]Important: dtdrive needs to find its DLLs. Use option -L or set env variable HELIX_LIBS.
Version 6.0.9.636-Release
usage:
dtdrive [+|-<Options>] [<Commands>] {[[<FSName>,]<Protocol>://]<File>}
=> Temporal Directives:
Commands:
-J <Time> = skip to specified media time (ms)
-T <Time> = fetch packets for the specified amount of time (ms)
=> DLL Paths:
Commands:
-L <Path> = load all components dlls from specified path
* overrides HELIX_LIBS environment variable setting
* can be overriden with more specific settings below
-LP <Path> = load plugins from specified path
* overrides HELIX_PLUGINS environment variable setting
-LC <Path> = load codecs from specified path
* overrides HELIX_CODECS environment variable setting
-LE <Path> = load encoder SDK from specified path
* overrides HELIX_ENCSDK environment variable setting
=> Output:
Options: (+ = add, - = remove)
p = dump packet content
h = dump headers/processing stages
v = verbose (show all buffer contents)
e = dump event counters
w = dump phase execution times
d = if writing a file, recompute duration
r = if writing a file, recompute preroll
o = if writing a file, overwrite the existing file
t = if writing a file, use relative timestamps
Commands:
-F <File> = place output into specifed file
-W <File.Ext> = write out file in format associated with extension
-SL <MBytes> = set the file size limit for written out files
-TD <DirPath> = use the specified directory for intermediate files
=> Rate Selection:
Options: (+ = add, - = remove)
q = pass through switch-off packets
Commands:
-R <Rate> = read only packets for the specified transfer rate (bps)
-RM <Mode> = perform dynamic rate switching in specified mode
0 = Constant Rete (no switching)
1 = Continusly oscillating (up/down)
2 = Ascending Rate (up to ceiling)
3 = Descending Rate (down to floor)
-RMI <Time> = rate change interval used when performning dynamic
rate switching (ms)
Default: 10000
-RC <Rate> = rate ceiling when performning dynamic
rate switching (bps)
-RF <Rate> = rate floor when performning dynamic
rate switching (bps)
=> A/V Synchronization & Scaling:
Options: (+ = add, - = remove)
k = when scaling video times (-VTS), output keyframes only
Commands:
-VO <Offset> = offset in time video relative to audio (+/-ms)
-VTS <Scale> = Scaling to apply to video times
(in percent of normal playback speed)
-MIN <fps> = When scaling video times in keyframe-only mode,
use the MIN method with the specified fps
-MAX <fps> = When scaling video times in keyframe-only mode,
use the MAX method with the specified fps
-LA <num> = When scaling video times in keyframe-only mode
with MIN method, use this number of lookahead frames
=> Decoding:
Options: (+ = add, - = remove)
u = uncompress (decode) content
f = when decoding, filter-out any non decoding streams
s = when decoding, maximize speed on detriment of standards
i = when decoding, set source properties in outgoing stream header
Commands:
-DA <Mode> = decode audio streams via specified mode
0 = No Decode - passthrough/block based on option f
1 = Normal Decode
2 = Passthrough Decode
-DV <Mode> = decode video streams via specified mode
0 = No Decode - passthrough/block based on option f
1 = Normal Decode
2 = Passthrough Decode
3 = Depack Frames Only
-DO <Mode> = decode non-audio/video streams via specified mode
0 = No Decode - passthrough/block based on option f
1 = Normal Decode
2 = Passthrough Decode
-DS <#> <Mode>= decode specified stream # via specified mode
0 = No Decode - passthrough/block based on option f
1 = Normal Decode
2 = Passthrough Decode
-OSR <Samples>= format decoded audio to specified sample rate (Hz)
-OCH <Count> = format decoded audio to specified number of channels
-OSS <Bits> = format decoded audio to specified sample size (Bits)
=> Decryption:
Options: (+ = add, - = remove)
c = decrypt content into unprotected (clear) form
=> Encoding:
Commands:
-EA <Format> = encode audio to specified format
-EV <Format> = encode video to specified format
-EAR <Rate> = when encoding audio, use specified bitrate (bps)
-EVR <Rate> = when encoding video, use specified bitrate (bps)
-EART <%> = when encoding audio, allow the encoded bitrate to
be within a percentage of the requested value.
0 = The encode MUST be at the specified bitrate
100 = The encode can be any bitrate
-EARM <Rate> = when encoding audio, this indicates the maximum allowable
encoded bitrate
-EACF <list> = when encoding audio, this indicates a list of codec
4cc codes that are acceptable for an
optimized transcode
(The list is a ';' seperated string of 4cc codes)
-EAIF <4cc> = when encoding audio, this indicates desired interleaver
-EAICF <list> = when encoding audio, this indicates a list of
interleaver 4cc codes that are acceptable
for an optimized transcode
(The list is a ';' seperated string of 4cc codes)
-OT = enable optimized transcode. If a transcode is not
necessary then only a transformat will be done.
=> Environment:
Commands:
-S <Mode> = run in server emulating mode
0 = run as client (local playback)
1 = run as server (streamed playback)
This tool does just about everything and the kitchen sink (except mux RM files, but that may be forthcoming), and I thought it would be useful for the advanced container format users in this forum.
For instance, you can convert AAC-RM to AAC
dtdrive file.rm -W file.aac
AAC-RM to M4A
dtdrive file.rm -W file.m4a
AAC to AAC-RM
dtdrive file.aac -S 1 -W file.rm
AAC to M4A and M4A to AAC
dtdrive file.aac -W file.m4a
dtdrive file.m4a -W file.aac
Demux RM A+V:
Audio: dtdrive -DV 0 -DA 2 av.rm -S 1 -W audio.rm
Video: dtdrive -DV 2 -DA 0 av.rm -S 1 -W video.rm
[-S 1 should always be used when writing out RealMedia file]
+ a whole lot more (conversions, decodes, transcodes, transmux) with a long list of formats (sorry, not Matroska). These were just the minimal set of examples I have tried myself. I am not really giving dtdrive justice by providing so few examples... If something does not work, let me know, but it is more than likely I can not help or explain right away at least.
Download
Helix Binary Downloads (https://helixcommunity.org/beula/download/)
Usage:
[i]Important: dtdrive needs to find its DLLs. Use option -L or set env variable HELIX_LIBS.
Version 6.0.9.636-Release
usage:
dtdrive [+|-<Options>] [<Commands>] {[[<FSName>,]<Protocol>://]<File>}
=> Temporal Directives:
Commands:
-J <Time> = skip to specified media time (ms)
-T <Time> = fetch packets for the specified amount of time (ms)
=> DLL Paths:
Commands:
-L <Path> = load all components dlls from specified path
* overrides HELIX_LIBS environment variable setting
* can be overriden with more specific settings below
-LP <Path> = load plugins from specified path
* overrides HELIX_PLUGINS environment variable setting
-LC <Path> = load codecs from specified path
* overrides HELIX_CODECS environment variable setting
-LE <Path> = load encoder SDK from specified path
* overrides HELIX_ENCSDK environment variable setting
=> Output:
Options: (+ = add, - = remove)
p = dump packet content
h = dump headers/processing stages
v = verbose (show all buffer contents)
e = dump event counters
w = dump phase execution times
d = if writing a file, recompute duration
r = if writing a file, recompute preroll
o = if writing a file, overwrite the existing file
t = if writing a file, use relative timestamps
Commands:
-F <File> = place output into specifed file
-W <File.Ext> = write out file in format associated with extension
-SL <MBytes> = set the file size limit for written out files
-TD <DirPath> = use the specified directory for intermediate files
=> Rate Selection:
Options: (+ = add, - = remove)
q = pass through switch-off packets
Commands:
-R <Rate> = read only packets for the specified transfer rate (bps)
-RM <Mode> = perform dynamic rate switching in specified mode
0 = Constant Rete (no switching)
1 = Continusly oscillating (up/down)
2 = Ascending Rate (up to ceiling)
3 = Descending Rate (down to floor)
-RMI <Time> = rate change interval used when performning dynamic
rate switching (ms)
Default: 10000
-RC <Rate> = rate ceiling when performning dynamic
rate switching (bps)
-RF <Rate> = rate floor when performning dynamic
rate switching (bps)
=> A/V Synchronization & Scaling:
Options: (+ = add, - = remove)
k = when scaling video times (-VTS), output keyframes only
Commands:
-VO <Offset> = offset in time video relative to audio (+/-ms)
-VTS <Scale> = Scaling to apply to video times
(in percent of normal playback speed)
-MIN <fps> = When scaling video times in keyframe-only mode,
use the MIN method with the specified fps
-MAX <fps> = When scaling video times in keyframe-only mode,
use the MAX method with the specified fps
-LA <num> = When scaling video times in keyframe-only mode
with MIN method, use this number of lookahead frames
=> Decoding:
Options: (+ = add, - = remove)
u = uncompress (decode) content
f = when decoding, filter-out any non decoding streams
s = when decoding, maximize speed on detriment of standards
i = when decoding, set source properties in outgoing stream header
Commands:
-DA <Mode> = decode audio streams via specified mode
0 = No Decode - passthrough/block based on option f
1 = Normal Decode
2 = Passthrough Decode
-DV <Mode> = decode video streams via specified mode
0 = No Decode - passthrough/block based on option f
1 = Normal Decode
2 = Passthrough Decode
3 = Depack Frames Only
-DO <Mode> = decode non-audio/video streams via specified mode
0 = No Decode - passthrough/block based on option f
1 = Normal Decode
2 = Passthrough Decode
-DS <#> <Mode>= decode specified stream # via specified mode
0 = No Decode - passthrough/block based on option f
1 = Normal Decode
2 = Passthrough Decode
-OSR <Samples>= format decoded audio to specified sample rate (Hz)
-OCH <Count> = format decoded audio to specified number of channels
-OSS <Bits> = format decoded audio to specified sample size (Bits)
=> Decryption:
Options: (+ = add, - = remove)
c = decrypt content into unprotected (clear) form
=> Encoding:
Commands:
-EA <Format> = encode audio to specified format
-EV <Format> = encode video to specified format
-EAR <Rate> = when encoding audio, use specified bitrate (bps)
-EVR <Rate> = when encoding video, use specified bitrate (bps)
-EART <%> = when encoding audio, allow the encoded bitrate to
be within a percentage of the requested value.
0 = The encode MUST be at the specified bitrate
100 = The encode can be any bitrate
-EARM <Rate> = when encoding audio, this indicates the maximum allowable
encoded bitrate
-EACF <list> = when encoding audio, this indicates a list of codec
4cc codes that are acceptable for an
optimized transcode
(The list is a ';' seperated string of 4cc codes)
-EAIF <4cc> = when encoding audio, this indicates desired interleaver
-EAICF <list> = when encoding audio, this indicates a list of
interleaver 4cc codes that are acceptable
for an optimized transcode
(The list is a ';' seperated string of 4cc codes)
-OT = enable optimized transcode. If a transcode is not
necessary then only a transformat will be done.
=> Environment:
Commands:
-S <Mode> = run in server emulating mode
0 = run as client (local playback)
1 = run as server (streamed playback)