VidsOpt v0.2.4 - Fast MP4 Muxer/Converter

e.mote

Senior Member
Feb 16, 2011
2,165
892
0


VidsOpt_0.2.4.rar (16.3MB) http://mediafire.com/?depxt4zyvpwel

2MP4 - Windows script to convert/remux videos to MP4. Subtitles are supported in both hard and soft formats.


Goals
. Fast - Re-encode only when needed. Selectable encoding speed.
. Flexible - Process multiple folders as well as single videos.
. Set-n-forget - Batch and nested folder processing.
. Simple - Drag-drop operation. One plain-English menu.

Supported video formats: MKV MP4 M4V MOV WMV AVI MPEG1 MPEG2 FLV RM RMVB OGM


Install
. AVISynth (http://sourceforge.net/projects/avisynth2)
. FFDShow (http://videohelp.com/tools/ffdshow), enable AC3/DTS/AAC support in Audio Decoder Config
. Haali Splitter (http://haali.su/mkv)


Use
1. Unpack. Create shortcut to 2MP4.CMD on desktop (don't drag it to the desktop).
2. Drag-drop one or more video files and/or folders onto shortcut.
3. Change settings from pop-up menu as needed. Enter 'S' to start.


Script Options

. Recode H.264 video
AUTO: H.264 video up to 720p high profile and 1080p baseline profile are not recoded. YES: Always recode H.264. NO: Never recode H.264. Note: Non-H.264 videos are always recoded.

. Video quality (19-25, lower number=higher quality/bitrate, default=21)
The default 21 should be the considered as max for Tegra 2 tablets at 720p. There may be stutter in some 720p high action scenes. Suggested setting for Tegra 2 is 22 for 720p high-action movies. SD-sized movies have more leeway and can use 21 or better.

. Video type (LIVE/cartoon/mixed)
The encoder has different tunings for live-action videos and cel-shaded animations (animes). For cel-shaded content, use the Cartoon setting. For any other content, including 3D animations (which most current animated movies are), use Live. If you are converting a batch of live-action & cartoons, use Mixed.

. H.264 profile (HIGH/main/baseline)
High has best compression efficiency but higher playback requirement. Baseline has low playback requirement, but size will be 10-20% larger than High. Use Baseline as last resort for smooth playback. Main is between High and Baseline with respect to size and playback smoothness.

. Encode speed (VERYFAST..veryslow)
Suggested use is MEDIUM for best compromise between speed and quality, VERYFAST for mobile viewing, and VERYSLOW if you have lots of time. There are also intervening settings to taste. Details: VeryFast is twice as fast as Medium, but quality can be slightly worse depending on content. VerySlow has the same quality as Medium at about 10-20% smaller size, but takes 5 times longer. Do not use VerySlow for mobile devices, as higher compression settings may affect playback smoothness.

. Maximize audio volume
Maximizes audio volume without clipping. Enable this if audio is too quiet.

. Burn-in subtitle (Advanced Option)
By default, script extracts any embedded subtitles to external standalone files. If this option is enabled, the script will take the first eligible subtitle and burn it into the video. Subs can be of SRT, ASS, SSA, or VobSub (bitmap) format. Video recoding is mandatory. Subtitle is selected in this order: external, PrefLang embed, AltLang embed, or no-tag embed. If there are multiple eligible subtitles and you want one different from that selected, remux using MKVToolnix (see Notes below) and remove all except the desired subtitle.

. Autocropping (Advanced Option)
Crop black bars if exist. This uses a less efficient method, so enable only when needed.

. Variable framerate encoding (Advanced Option)
The script encodes in constant framerate (CFR) by default. Some videos (animes/hybrid/rmvb) use variable framerate (VFR). If a VFR video is recoded, enable this option, else audio will be out-of-sync (OOS). There's no foolproof way to determine if a video is VFR in advance, so if video is recoded and sound is OOS, enable this setting and try again. Note: This setting only matters when video is recoded. If video is only remuxed, correct framerate is always retained.


Notes

. Audio and subtitle tracks are selected by their language ID. Default is English for both preferred and alternate language. To change, edit 'PrefLang=eng' & 'AltLang=eng' settings in script. Find your language country code here (http://loc.gov/standards/iso639-2/php/code_list.php). ISO 639-2 3-letter code is used. Where there are 2 codes available, use the "B" (bibliographic) code.

. Text (SRT/ASS/SSA) subtitles are selected in this priority: external sub file, embedded sub in preferred language, embedded sub in alt language, embedded sub w/o language tag. Once a sub is found, then lower priority subs are ignored. Note: Any attachment in a MKV (font embeds, cover art, chapters) are also extracted for future use.

. Audio track selection: If a subtitle is available, the first audio track is selected. If no subtitle, then a PrefLang audio track is selected if available, else an AltLang audio is selected. If no Pref/AltLang audio and no sub are available, the first audio track is simply selected. [Note: If audio track has no language tag, the 1st track is selected.] The intent here is that subs are preferable to dubs.

. To manually select a different audio track: Remux to MKV (see below); uncheck undesired audio tracks to make new copy with only the desired audio track. Drop the newly-muxed copy onto the script.

. The number of items that can be batch selected at one time is limited. If processing 20+ files, put them into a folder and drop the folder. Multiple folders can be dropped.

. Video encoder used is 32-bit x264cli, which runs on both 32- and 64-bit systems. To get 10-15% more encoding speed on 64-bit systems, get the 64-bit x264.exe from http://x264.nl and copy over the existing executable.

. The script relies on the host system to provide format splitter and audio codec support.
- [XP and Vista only] To convert MOV/M4V, install QT Lite (http://free-codecs.com/download/QT_Lite.htm).
- To convert FLV, install FLV splitter (http://videohelp.com/tools/FLV_Splitter), and enable FLV decode in FFDShow video decoding options.
- To convert RM/RMVB, install Real Alternative (http://afterdawn.com/software/audio_video/media_players/real_alternative.cfm).

. Remuxing to MKV: Many file formats can be quickly converted to MKV container before being fed to the script, which can solve many problems. To remux to MKV: Run MMG.EXE in \MKVTOOLNIX folder, drag-drop video onto app, click 'Start Muxing'.


Changelog

0.2.4
. Add autocropping
. Bug fixes & refinements
 
Last edited:

e.mote

Senior Member
Feb 16, 2011
2,165
892
0
FAQ

Q #1: How long does it take to convert to MP4?

For a simple remux, seconds. For audio-only recoding, about 15X (1min processing per 15min run-time). For both audio & video recoding, between 1-5X, depending on host PC and input/output resolutions.

Q #2: The script ran for a bit and disappeared.

It crashed. A common reason is that the filename has special characters: exclamation point (!), ampersand (&), or carot (^), among others. Temporarily rename using simple alphanumeric characters. Note: Script is designed to handle Unicode (UTF-8) characters.

Q #3: It still doesn't work!

The majority of problem videos stem from the weird muxers used to create them. A possible solution is to remux the video to MKV (even if they're already in MKV) if possible. Run MMG.EXE in \MKVTOOLNIX folder, drag-drop video onto app, click 'Start Muxing'. The MKVToolnix app can remux many common formats to MKV.

Q #4: Still no joy!

Drop the video on the script and select the 'View Specs' option, then Start. This will dump the video specs into a text file. Post the specs dump, along with whatever error msgs you encountered (or if the console crashes and simply disappears). As a last resort, post a sample clip of the video.

Q #5: What are the best settings for the [insert device name]? My converted videos don't play smoothly!

The on-demand CPU governor for Android may not be optimal for playback. You can manually set CPU speed for movie playback per this discussion thread, http://forum.xda-developers.com/showthread.php?t=1111156

By default, the script does not recode H.264 720p high profile or 1080p baseline profile. If your device can't play a video smoothly after trying the above, then you need to recode it (see TIPS section below).

Q #6: My videos convert, but the sound is out-of-sync (OOS), or playback is too fast/slow.

Some animes, digicams, and hybrid contents use variable framerate (VFR). The script encodes in constant framerate (CFR) by default. If audio is OOS, enable VFR encoding in Advanced Options. VFR encoding is automatically enabled for RM/RMVB videos.

There may be other OOS instances. VFR aside, many videos are simply badly created, and require specific workarounds that lie outside the scope of the script.

Q #7: My video has 10 subtitle tracks. Why doesn't the script extract them all?

Only subtitles in the designated preferred or alternate language are extracted. Only text subtitles (SRT/ASS/SSA) are extracted.

The script can process up to 8 sub tracks. If the desired sub tracks lie outside of this range, remux to MKV (cf. Q #3), and remove extraneous tracks beforehand.

Q #8: The sub doesn't show up in playback!

Check your media player to see if it can make use of external subs; some do. Don't forget to rename the sub track to be the same as the video.

Q #9: The ASS/SSA sub doesn't display properly (or not at all).

Some Android players support external ASS/SSA subs. But if the sub requires an embedded font and there isn't a system font substitute, characters will display as blocks. The script extracts embedded fonts, but current players cannot make use of them. A workaround is to enable subtitle burn-in from Advanced Options.

Q #10: I'm confused with how the audio and subtitle tracks are chosen.

If a subtitle in the designated preferred/alternate language is available, the first audio track is selected, as it's preferable for foreign-language videos to be subbed than dubbed. If the first audio track is in a different language than the pref/alt settings, and no subs are available, then a dubbed track is selected if available. The script can process up to three audio tracks.

Q #11: I changed the default output path, but the output never shows up there!

Do not put quotes around the path. Also, if the path has special characters like exclamation point (!), ampersand (&), or carot (^), among others, the script will get confused. Stick to basic alphanumeric characters. This applies to filenames as well.

Q #12: Can I use this script to convert my DVD/Blu-ray?

The script does not process DVD (IFO/VOB) or Blu-ray (M2TS) files. You can try my DVD script here, http://forum.xda-developers.com/showthread.php?t=978529

Q #13: I'm running Win XP/Vista, how do I get WMP 11 to recognize my MP4 so I can stream to my device?

Win XP & Vista require a registry patch for WMP 11 to recognize MP4. Win7 supports MP4 format natively.
32-bit: http://hardcoreware.net/files/v8-WMP11-MP4-M4V-M4A.reg
64-bit: http://hardcoreware.net/files/v8-WMP11-MP4-M4V-M4A-x64.reg


TIPS:

. Tegra 2 on Android 3.1: If playback isn't smooth, set Recode=YES. Suggested settings are Quality 22, High profile, and VeryFast or Medium speed. To ensure smooth playback, you can try Quality 23, or Baseline profile, or a smaller resolution, or a combination thereof.

. If running 64-bit Windows, grab the 64-bit x264.exe executable at (http://x264.nl) and copy over the existing file (get the 8bit-depth exe, not the 10bit one). This'll net 10-15% faster speed.

. Don't use a video quality number lower than the default (lower number means higher bitrate), unless you are sure you can see the difference. Higher bitrate means higher playback requirement, which can result in playback stutter. 21 is a good default; you can also try 22 or 23.

. If there are many videos to convert, especially if video recoding is involved, put them all in a folder and drop the folder onto the script. Let the script run overnight.


TECH NOTES:

. For most operations, the script is self-contained, ie it uses ffmpeg and doesn't require the installed software packages. Two exceptions: a) RM/RMVB isn't supported by ffmpeg and uses DirectShow; b) audio tracks w/ 7+ channels can't be downmixed by ffmpeg, and also uses DirectShow.

 
Last edited:
  • Like
Reactions: GetLaid and Riffer

techpal

Senior Member
Mar 19, 2011
725
89
0
INDIA
How to make it start?
i have already installed AVISynth and FFDShow .
But when i click on XYZ2MP4.CMD shortcut created on Desktop it shows black screen with written-" cannot locate AVISynth.If not already installed get at ******.
Else reinstall to default location"
What it means? What m i doing wrong?
 

e.mote

Senior Member
Feb 16, 2011
2,165
892
0
The script checks for the location of the AVISynth uninstall.exe in C:\Program Files\AVISynth\ for 32-bit systems, or C:\Program Files (x86)\AVISynth\ for 64-bit systems. It reads the env variable to determine the location of the Program Files folder.

Navigate to this location and see if the Uninstall.exe file exists. If you run a non-English version of Windows, the pathnames may be different (although it should've been accounted for).
 
  • Like
Reactions: GetLaid

ewcrider

Senior Member
Jun 18, 2010
79
61
0
I had the same issue as techpal above.

I think there is a problem in where it searches for AVIsynth. The default installation folder is "AviSynth 2.5" in the program files folder. The XYZ2MP4.cmd file seems to search for "AVISynth" in the program files folder. I edited the cmd to look for "AVISynth 2.5" and it worked after that.

Here's the new line (line 102 in the original):
if defined ProgramFiles(x86) (set "AVSDir=%ProgramFiles(x86)%\AVISynth 2.5") else set "AVSDir=%ProgramFiles%\AVISynth 2.5"
 

Kippui

Senior Member
Jan 1, 2011
595
37
0
Yea, I just changed the folder name to just "AviSynth".

I prefer GUI because I sure as hell dont have a deep knowledge of audio/video codecs/filters.

uh I have a problem after I made my video into a .mkv. The script gives me a error about the audio stream. I would upload a sample but I can't right now because of my extremely slow upload speed.


General
Unique ID : 227734697504464257626122901304819126136 (0xAB541B79FA49352584C7944A89550F78)
Complete name : C:\Users\Kippui\DOWNLO~1\Lie.To.Me.E03.110516.HDTV.X264.720p-HANrel.mkv
Format : Matroska
File size : 1.53 GiB
Duration : 1h 4mn
Overall bit rate : 3 411 Kbps
Encoded date : UTC 2011-05-30 19:33:18
Writing application : mkvmerge v4.8.0 ('I Got The...') built on May 24 2011 03:12:58
Writing library : libebml v1.2.0 + libmatroska v1.1.0

Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : [email protected]
Format settings, CABAC : Yes
Format settings, ReFrames : 2 frames
Muxing mode : Header stripping
Codec ID : V_MPEG4/ISO/AVC
Duration : 1h 4mn
Bit rate : 3 000 Kbps
Width : 1 280 pixels
Height : 720 pixels
Display aspect ratio : 16:9
Frame rate : 29.970 fps
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.109
Stream size : 1.32 GiB (87%)
Writing library : x264 core 50 svn-569
Encoding settings : cabac=1 / ref=1 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=5 / brdo=0 / mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=1 / cqm=0 / chroma_qp_offset=0 / slices=1 / nr=0 / decimate=1 / bframes=2 / b_pyramid=0 / b_adapt=1 / b_bias=0 / direct=2 / wpredb=1 / bime=0 / keyint=250 / keyint_min=25 / scenecut=40 / rc=abr / bitrate=3000 / ratetol=1.0 / rceq='blurCplx^(1-qComp)' / qcomp=0.60 / qpmin=10 / qpmax=51 / qpstep=4 / ip_ratio=1.40 / pb_ratio=1.30

Audio
ID : 2
Format : AC-3
Format/Info : Audio Coding 3
Mode extension : CM (complete main)
Muxing mode : Header stripping
Codec ID : A_AC3
Duration : 1h 4mn
Bit rate mode : Constant
Bit rate : 384 Kbps
Channel(s) : 2 channels
Channel positions : Front: L R
Sampling rate : 48.0 KHz
Bit depth : 16 bits
Compression mode : Lossy
Delay relative to video : 24ms
Stream size : 176 MiB (11%)
 
Last edited:

e.mote

Senior Member
Feb 16, 2011
2,165
892
0
Make sure AC3/DTS/ACC support is enabled in the FFDShow Audio Decoder Option. By default they may be turned off. The script relies on DirectShow filter support to convert any audio. Restart your system to make sure.

To find out if your system supports AC3/DTS, try the sample here on the Windows Media Player (not VLC or a player with built-in codecs).

http://www.kellyindustries.com/sounds.html

Try renaming your filename to Test.mkv, and see if the filename is a problem.
 
  • Like
Reactions: GetLaid

e.mote

Senior Member
Feb 16, 2011
2,165
892
0
I replicated your problem. You can't just rename "AVISynth 2.5" to "AVISynth", because the program was installed to the first path, not the second. Change it back to "AVISynth 2.5", and grab the 0.1.1 updated script.
 

e.mote

Senior Member
Feb 16, 2011
2,165
892
0
You don't click on the CMD script. You need to drag-drop a movie file or folder onto it. Without input (or a valid input), the script simply closes.
 

Kippui

Senior Member
Jan 1, 2011
595
37
0
I replicated your problem. You can't just rename "AVISynth 2.5" to "AVISynth", because the program was installed to the first path, not the second. Change it back to "AVISynth 2.5", and grab the 0.1.1 updated script.
YES thank you! I love you for this because I can't get handbrake to work for some reason. Finally I have a way to quickly get my 720p files working on my xoom

I had to actually reinstall it to get the script to work because renaming it back didn't work for me.

Edit: Techpal reinstall AvySynth if you renamed it because that did it for me
 

e.mote

Senior Member
Feb 16, 2011
2,165
892
0
Thanks for the positive report. What type/size of videos are you converting, and how long do they take to convert on your system? The script should report the time lapsed per file processed. I like to get feedback on the execution speed for various operations.
 

Kippui

Senior Member
Jan 1, 2011
595
37
0
Thanks for the positive report. What type/size of videos are you converting, and how long do they take to convert on your system? The script should report the time lapsed per file processed. I like to get feedback on the execution speed for various operations.
I X'd out of the window but my orginal file is the same one that is posted above

it took 5-6 minutes(guesstimate?), i converted the same file I posted earlier above using default settings. I'm converting the same file again trying to get slightly better video quality(19 instead of 21)

what settings do I need for the BEST quality for xoom 3.1? Should I keep it high and not main/baseline?

Test 1: 4:19 with everything default except for 19 instead of 21
Test 2: 6:11 ^^ just the next episode from the first file
 
Last edited:

e.mote

Senior Member
Feb 16, 2011
2,165
892
0
The high/main/baseline is only if the video is recoded, which yours wasn't. On Recode=AUTO, it doesn't recode the video for 720p H.264, or 1080p baseline profile. Only the audio is recoded to stereo AAC (from your video's stereo AC3).

The best quality is when you don't have to recode the video. Only recode the video (Recode=YES) if it can't be played smoothly on the Xoom. Video recoding takes substantially longer.

Read the FAQ for further tips on recoding. Stick with High or Main. Use Baseline as a last resort. These don't affect quality. Baseline is more playable, but has larger file size.
 

Kippui

Senior Member
Jan 1, 2011
595
37
0
The high/main/baseline is only if the video is recoded, which yours wasn't. On Recode=AUTO, it doesn't recode the video for 720p H.264, or 1080p baseline profile. Only the audio is recoded to stereo AAC (from your video's stereo AC3).

The best quality is when you don't have to recode the video. Only recode the video (Recode=YES) if it can't be played smoothly on the Xoom. Video recoding takes substantially longer.

Read the FAQ for further tips on recoding. Stick with High or Main. Use Baseline as a last resort. These don't affect quality. Baseline is more playable, but has larger file size.
oh ok thanks

going to do more videos