Friday, April 25, 2014

dmMediaConverter - v2.1.0




dmMediaConverter is a crossplatform FFmpeg frontend (GUI) exposing some of its features. It is intended to be simple and easy to use but also to be able to achieve complex tasks. I have inspired myself from a lot of media converters like Handbrake, WinFF and MkvMergeGui. One feature was lacking from most of them, video stream copy (pass-through), that made me build this.

Main features:

  • stream copy (video, audio, subtitle)
  • stream conversion - almost any codec into: 
    • video - h264, h265, vp8, vp9
    • audio - aac, mp3, flac, pcm, vorbis, opus
    • subtitles - srt, ass, ssa, mov_text, dvdsub
  • add multiple streams into one mkv, mp4  or any other container known by ffmpeg that accepts multiple streams (with or without reencoding). Supports multiple video streams in the same file. Also you can reorder stream position.
  • stream profiles - create and apply audio and video profiles
  • merge files with the same properties - no reencoding. Ex. Files made by a phone or camera.
  • merge different kind of files (different codecs, resolution, etc) into one file. It chooses an output with the biggest width of all source files. 
  • split or trim a file by given time points (no reencoding)
  • bulk convert files using stream profiles or manual settings (no filter options for manual)
  • job queue - you can add multiple tasks into a job queue
  • parallel jobs - you can run multiple jobs in the same time (multithreading)
  • audio auto gain detect - it will parse the whole file and find the proper gain value (reencode)
  • picture settings - with changes immediately displayed (reencode)
    • scaling - change video resolution (use -2 to keep the aspect ratio)
    • cropping and padding
    • auto crop - detect best crop values for encoder
    • rotate picture in 90 degrees increments
    • grayscale
    • deinterlace
    • deshake
    • burn subtitles (only text based for now)
    • watermark
    • manually add FFMpeg video stream filters
  • video aspect correction - no reencoding
  • write stream tags like language and title, also container title and creation time -  no reencoding
  • copy, add or modify any metadata to stream and container.
  • multiplatform

Quick start-up guide:
1. Select job type
2. Add source files
3. Modify stream parameters.
       - "Enable" checkbox - means that the stream will be present in the output file
       - "Copy" checkbox - stream will not be reencoded, only copied, so, stream options (lower part of the app) will be disabled. To modify stream just unckeck it and you will be able to choose codec and various audio / video options.
      - To enable Picture settings on a video stream (crop,   pad , rotate, etc) first, you need to uncheck "Copy" and click the video screenshot or just click on Picture Settings button. Options seted here will be automatically saved when you close this window. If you reopen "Picture Settings" later all settings for that video stream, now, will be preserved.
4. Hit "Run now" button to start conversion. The application will ask you for an output file and depending on the file extension chosen will use the proper format (container). i recommend Matroska (.mkv)  because it is compatible with all the codecs available in the app.
5. Sit back and wait for it to finish. What you see in the Output tab is exactly the ffmpeg output. You can approximate the progress by looking at the written time (100% = source file duration).


Use stream profiles:
  1. create - You are able to create a new stream profile only in convert mode but you can apply them for different job types. So, first import a file and unckeck copy. Then make desired settings and from Main Menu : Profiles - Add, choose a profile name, just make sure it is a meaningful one. That's it. You must create different profiles for audio and video. A video profiles also stores filter settings (Picture Settings). Using profiles is the only way to apply video filters in bulk mode.
2. apply - Just right clik on audio or video stream settings panel and apply desired profile.
3. delete - From Main Menu choose Profiles - Delete and pick the your desired stream.

Use Bulk mode:
 Let's start with an real example: Extract audio from Youtube videos and convert them to mp3s (mp4 to mp3).
1. Select Bulk mode and drag and drop your files.
2. From bulk mode set Video to "None".
3. Set Audio to "Audio Tab" and then press audio tab and choose mp3 encoder.
4. From bulk tab again choose container mp3 and select an output directory. That's it. Press Add Job and click Start.

Here is another option: nth which means to extract only the nth audio stream form the file. It is useful when exporting to containers that accept only one audio stream and source files contains multiple tracks.

Rip and Convert DVD, BD and ISO files:
dmMediaConverter does not support ripping DVD, blue ray disks or ISO files. So, you need an companion app, and i have found the perfect match for it, MakeMkv.
MakeMKV is the best ripping software i sow so far. It is small, efficient and has a windows, mac and linux client. It does not do any compression, it only dectypts the mpeg2 dvd stream and it saves it into a mkv container. A very fast operation.
So, first,use MakeMkv by opening the disk/iso file then choosing the desired titles and the output folder for mkv files. It generates an file per title. The mkv contains the raw mpeg2 ac3 and dvdsub streams, which are big.
Then,  with dmMediaConverter you can change them into anything you like. So simple. :-)
http://www.makemkv.com/

Add Watermark / Logo:
dmMediaConverter, now (v1.8.0), can watermark a video file. You can use the recommended  png image format or jpeg (also another video file - buggy) .



Help videos and examples:
https://www.youtube.com/playlist?list=PLwURYFQvHBAtG8wqzyVgOQ1WtEYSkiscO


Some notes:
       It is a multiplatform app written with Lazarus IDE. It supports Linux, Windows and Mac. The native Mac version it is available on Amazon for 5$, see the link below. For free on Mac, you can use Windows version under Wine (WineBottler), it is working just fine.
I do not know it yet or promise that the app will be released as Open Source. Nevertheless, it will be free here.
If you like the app and want to continue it's development, please donate. Any amount will be appreciated.
With this app i also distribute a ffmpeg static build without modifying any of its source files. I have not studied, yet, legal implications.
The app has no installer, it is a portable app so just extract the app folder anywhere you like. For Linux just check executable permissions for the app, ffmpeg and ffprobe binarys from bin sub-folder.
Now, on Debian systems, (ex. Ubuntu) you can install the app using DEB files for x86 and x64. Just hit "Download app" link. The same form RPM files.

Please report impressions, bugs and features requests.

Known issues:
  - you tell me!

If you like my app and you have an Amazon account, please RATE IT or BUY it ;). You can vote without a purchase. See the Amazon links below.
Also, donations are highly appreciated, they will keep me going :-) 

Thank you.


Changelog:

2017.03.30 - v2.1.0 - A lot. :-)
                    - Now you can have special characters in file names on windows and single quote on linux systems.
                    - FFMpeg progress output is done on single line.
                    - Clear settings when done option (default on).
                    - Split:  new Trim mode
                    - More... no you could manually specify input file format (in case FFMpeg auto detection fails)
                    - NVENC on Linux x64 and Windows.
                    - Intel QuickSync on Windows (you must have Intel Media SDK installed). If you manage to get the SDK installed on Linux it should be working also.

                    - Lots of bug fixing
                    - 
Updated FFMpeg binary with latest version
                    - WinXP - no longer supported. You could use this version with a ffmpeg binary without mfx.
                 
2015.09.11 - v1.8.0 - Watermark. Doubble click on image to quickly position the logo.

                    - First Mac OSX native build. Available on Amazon for 5$.
                    - Estimate encoded stream size if the encoding type is CBR.
                    - Small UI fixes and refinements.
                    - Small bugs fixes.
                    - Updated FFMpeg binary with latest version.
2015.05.21 - v1.7.0 - Burn text based subtitles (not yet picture based).
                    - Now you can manually specify additional FFMpeg filters (More) for audio and video streams.
                    - On linux it removes automatically "'" from metadata. Workaround for MKVToolNix generated files.
                    - Added option for auto add subtitle file (only *.srt for now).
                    - Small UI fixes and bugfixing
                    - Updated FFMpeg binary with latest version
2015.02.05 - v1.6.0 - Added checkup for not overwriting the source file.
                    - You can assign dmMediaConverter to open media files. (ex. Right clik on file and "Open with..." dmMediaConverter's executable). You can use it like media info.
                    - Now bitrate will be shown in kbit/s for better readability. 
                    - Small UI fixes 
                    - Updated FFMpeg binary with latest version
2014.10.31 - v1.5.0 - MAJOR RELEASE
                    - Parallel jobs - you can run multiple jobs in the same time
                    - Initial job progress implementation
                    - Split UI improvements
                    - Running under WINE is more robust now (Mac Os)
                    - Internal code rework - multithreading
                    - Some bugs fixed
                    - Updated FFMpeg binary with latest version
2014.10.16 - v1.4.0 - Internal release
2014.09.29 - v1.3.0 - Internal release
2014.09.16 - v1.2.0 - Bug fixing
                    - 
Updated FFMpeg binary with latest version (2.4).
2014.09.12 - v1.1.0 - ANOTHER BIG RELEASE!
                    - x264 and x265 extra settings field (ex. put there bluraycompat, etc)
                    - Metadata edit for stream and container.
                    - Show complete stream and container info.
                    - More output container options.
                    - Added Preferences in main menu. Please learn how to use "Latest" option because in the future i will not ship FFmpeg anymore.
                    - Added Test Run.
                    - Now you can rearrange and remove source files.
                    - On failure does not clear settings.
                    - Some code rewrites and bug fixing.
                                       Updated FFMpeg binary with latest version.
2014.08.21 - v1.0.0 - MAJOR RELEASE!
                    - Stream Profiles! Now you can define profiles for video and                       audio streams individually. Note: It does not store                                 aspect ratio, this is by design. To apply it just right                             click on video or audio tab.
                    - Bulk Convert mode! Convert multiple files at once.
                    - 2 pass encoding for video codecs - Works in Convert and                           Bulk mode only.
                    - Reorder streams - just drag them in desired position
                    - DeShake filter - i use default settings for it. It is not                         impressive. I do not recommend it but you can try it.
                    - Creation_time tag - Now you can add or modify this                               container tag. Useful if you upload media and sort it by                         date (ex: G+ albums). 
                    - Picture Settings are preserved when you reopen the form.
                    - HiDPI support
                    - Play file in external app (default system player) by dbl                         click on source file.
                    - Added all ISO 639-2 language codes :-)
                    - Lots of squashed code and UI bugs
                    - Added color coded stream types for easy identification.
                    - Updated FFMpeg binary with latest version.

2014.07.03 - v0.9.9 - Workaround for win32 trackbar missing label problem.
                    - Drag and drop source files initial support.
                    - Small UI fixes.
                    - In Split mode now you can select which streams will be                           prezent in output file.
                    - Updated FFMpeg binary with latest version.
2014.05.28 - v0.9.8 - Config file respects OS user's config directory 
                    - Added DEB files. Thanks to Alin Andrei from webupd8.org :-)
2014.05.27 - v0.9.7 - Visual bug corrected.
2014.05.27 - v0.9.6 - Added support for VP8,VP9,Opus,Vorbis 
2014.05.27 - v0.9.5 - Show start-up hints
                    - Updated FFMpeg binarys with latest version.
2014.05.21 - v0.9   - UI cleanups
2014.05.16 - v0.8   - Compiled for Linux x86 
2014.05.15 - v0.8   - Added to many things to remember all
                    - Stable release
2014.04.25 - v0.7   - Added audio auto gain detect.
                    - Crop detection bug resolved.
                    - Some UI cleanups.
2014.04.24 - v0.6   - The windows build is on the same level as Linux one.                              - Added crop detection button in "Picture settings". 
2014.04.17 - v0.5   - Initial release.