dsj - DirectShow <> Java wrapper

humatic - htools
htools RSS feed Add to Google

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 in java, 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 - the core media system in Windows XP, Vista and (still today) 7. It is an ongoing project, grown from artistic work and in use in many real world applications today.
 
Quick links
download
javadocs
samplecode
newsgroup


Jan 1st 2012 dsj 0_8_64 released. [ download ] [ release notes ]

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 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:

DSFiltergraph
   -> 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.

Web demos (these have not been updated to 0.8.64 yet) :
  dsj streamclient, shows RTSP, RTMP, MPEG Transport, HTTP, mp4 etc. streaming support in a webstartable application. [ more ]
  dsj in JavaFX, a simple example showing dsj a JavaFX 1.2 applet (This will not be updated anymore).
  Applet demo, local and remote file playback, capture & media creation in a (non JavaFX) applet. [ more ]  


dsj has a concept of application defineable data sinks for both streaming to the network as well as writing a multitude of filetypes.

dsj 0_8_5 provides much extended movie editing functionality, making it the only java api to be left for such purposes when Quicktime for Java finally dies with Quicktime X.

Built-in custom DirectShow filters let you insert data into DirectShow from java. You can draw over video or create media from scratch.

dsj 0_8_5 introduces a new data source package, with implementations for common network protocols like RTSP and RTMP or mpeg transport & program streams. [ Read more... ]

dsj is easy to deploy. It consists of a single dll and a single jar file, totaling ~1,2 mB in size. It can be used with all forms of java code deployment - local or webstarted application, applet, serverside, etc - and works on all recent Windows versions incl. Vista. The minimum JRE version required to run dsj code is 1.4, which should make heavyweight java updates unnecessary for the big majority of users.

dsj extensions:

dsj_applethelper is a little helper library that greatly simplifies deployment of dsj in standard java applets. It takes care of downloading and installing native dlls, will set up the environment and may perform extra tasks like installing additional DirectShow filters. With just one line of code and a 10K jar file to add, you can run almost everything, that dsj can do in a webbrowser on all JVM versions >= 1.4. [ more ]
jdl is a small extension providing access to proprietary interfaces in the DirectShow api available with Blackmagic Design's Decklink boards. These cards are frequently used with dsj and jdl attempts to deliver on a number of requests we had to deepen the integration. [ more ]

vpj allows for detailed configuration of the VP8 (TM) de- and encoder DirectShow filters from the WebM project.[ download ] [ samplecode ] [ javadoc ]

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
view change log / readme
Google Groups
Email:
  to humatic.dsj




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.