dsj - DirectShow <> Java wrapper

Need indepth media support for your desktop or online java application? Play modern video formats as well as edit and encode them? Access all of a system's capture devices? Control a firewire DV or HDV camera? Play DVDs, integrate Digital TV? Do so on 64 bit systems? Then maybe this can help you. dsj is a java abstraction layer around Microsoft's DirectShow API, Windows' long time core media system. Today Direct Show (and maybe Java alike) is legacy API, but it's sure to stick around for quite some time. dsj has grown from artistic work and is in use in many real world applications today.
June 2015, at long last here's another update: dsj 0_8_8 released. [ download ]

Unlike the C# and Delphi wrappers to DirectShow, dsj does not attempt to wrap the original api 1:1. Instead it presents a much easier to use approach of abstracting common media tasks into a straightforward api of its own. In theory, no specific knowledge of the complex and massive native DirectShow api is needed to use dsj. However, those familiar with or interested in DirectShow programming will still find low-level functionality, that closely matches some of the most used methods in Microsoft's C++ interface.

dsj's java api is pretty much easy to use and allows to implement most everyday media tasks with just a handful of lines of code. You will be surprised how small an effort things can be. The programming interface has clear inheritance structures and avoids the use of interfaces whenever possible. It is built around the core DSFiltergraph class, that represents a flow graph of DirectShow filters and has dedicated subclasses for the different areas of interest:

   -> DSMovie - for movie and stream playback, movie editing and media encoding
   -> DSCapture - for accessing a system's audio and video capture devices
   -> DSDVCam - to work with standard DV Camcorders
   -> DSDvd- play and interact with DVDs
   -> DSGraph - baseclass for lower level things
   -> DSStreamBufferGraph - for timeshifted recording of TV and capture data
   -> DSBDAGraph - digital TV, using devices that follow the BDA standard
   -> DSHDVTape - for mpeg HDV cameras and D-Vhs decks

All classes allow for sample level access and can use both light- or heavyweight renderers, including maximum performance native DirectShow screen or hardware renderers.

Sitting on top of a plugable architecture, dsj profits from the wide variety of available third-party DirectShow filters. Depending on what filters are installed on a particular system, dsj will enable you to play (and in a lot of cases also encode) a vast number of media formats and will let you work with all the hardware that native applications access through DirectShow.

Use terms
Be aware that dsj is not free, open source software. The library is free for use in non-commercial projects, but if it helps you make money, i.e. if it is used in commercial applications or in scenarios where you are otherwise paid for what you are doing, you must enter a license agreement with us. We do not ask millions but dsj is not a gift all in all.

All binaries in the download are fully functional. Prior to registration some more advanced functions are however limited to a 1 minute span
Unlock codes for non-commercial use are available online: Click [ here ] and you will be ready to go in a minute.

For commercial use, please review the dsj license pdf in the download and [ contact ] C.Graupner directly.

The download contains the dsj.dll and jar files, javadocs and demo applications incl. source code. To get it running you will also need DirectX 9 and Windows Media Player 9 or greater (standard since XP SP1). Installation instructions, general notes, DirectShow resource links etc. can be found in the readme file

download dsj

browse javadocs

home - htools - dsj DirectShow, Windows, WindowsMedia, wmv & asf are registered trademarks of Microsoft Corp.
Java is a registered trademark of Oracle and/or its affiliates.
VP8 is a registered trademark of Google Inc.
Decklink is a registered trademark of Blackmagic Design Pty.
Other names may be trademarks of their respective owners.