OK, so I have these two .MKV files. One is 30:15 in length and the other is 27:13. They are Xvid encoded. I am trying to convert them to h.264 AVC1 and pack it into a .MP4 container with .AAC audio. I've converted tons of files of varying types to this standard(AVC1+.AAC+.SRT in .MP4) in the past, so I don't consider myself a newb. =P
However, the two files I mentioned above seem to be misbehaving. I first tried extracting the videos from the .MKV files using mkvextractGUI. They were in .AVI format and it worked(or so I thought), I joined the two .AVI files, and encoded that joined file into a h.264 stream using MeGUI. When I played said file, it's duration turned out to be much shorter(shorter than 30:15+27:13) than the two original videos combined. Definitely a big problem.
I said to myself "WTF?". Then I took a look at the two .AVI files mkvextractGUI produced and it turns out they were shorter than the originals by a few minutes. I was perplexed by this and still am. No warning errors. What was the cause?
Anyway, I remembered VirtualDubMod could handle .MKV files so I tried loading them into the program. When I loaded up the .MKV files into VirtualDubMod, I got this message for both:
"[!] MKV: The video may have a variable framerate. If so we strongly advise you
to use another tool to safely process your file."
Regardless, I was able to extract the .AVI files and the resulting files had the same duration (30:16 and 27:13) as their original muxed .MKV counterparts. So I thought, "OK, good!". I joined them and encoded the resulting file to h.264 with MeGUI, BUT while the resulting file played faster than the audio.
I then used mp4box to extract the raw .264 stream from the .MP4 file MeGui produced before I muxed it with the audio into the final file. I tried to mess with the framerate to the point where the resulting video file would be the same duration of the audio file. 24.2750fps made it the same exact duration as the audio file, but alas, it was still out of sync with video being played well over an hour, meaning the audio runs out first.
The original .MKV files have a framerate of about 29.976. That's what I encoded them as, but it's still out of sync. When I use GSpot on them, it says the framerate is about 29.971.
-----------------------------------------------------
I can't help but thinking this has something to do with VirtualDubMod's variable framerate warning. Any ideas on what I can do to fix this?
It suggested that I use "another tool that could safely process my file". What tools out there can handle variable framerate video?
		
			+ Reply to Thread
			
		
		
		
			
	
	
				Results 1 to 7 of 7
			
		- 
	
- 
	VFR helper tool 
 This utility is now part of the splitter package.
 As there are no tools to process/reencode VFR Matroska files, I've written a small utility to ease such processing.
 mkv2vfr extracts all video frames from Matroska to a CFR AVI file and a timecode file. You can extract video to avi, process it with any apps and mux back to matroska using a timecode file if you didn't add/remove frames. If you changed the frames you'd need to edit the timecode file by hand.
 
 http://haali.cs.msu.ru/mkv/
 --------------------------------------------------------------------------------
 avi_tc_package - 08/02/2006 v1.5 (Released)
 
 This package includes the commandline programs cfr2tc (v1.4), tc2cfr (v1.5), and tcConv (v1.0), as well as a GUI frontend named tc-GUI for using them. tc-GUI is a c# program and will require the .NET framework (at least version 1.1) to run. cfr2tc, tc2cfr, and tcConv are plain c++ commandline programs and do not require the .NET framework. Following are descriptions of cfr2tc, tc2cfr, and tcConv:
 
 cfr2tc takes an avi file with a video stream containing null frames and outputs a new avi file containing the same video stream, but with all null frames removed and a v1 or v2 timecode file. It also has timecode file only modes that create the timecode file but do not create a new avi file. As of v1.4 there is also the option to output an avs script instead of a new avi file.
 
 tc2cfr turns an avi file (with each frame present once) into a new avi file with null frames that has the specified framerate and varying display length for each individual frame based on a v1 or v2 timecode file.
 
 tcConv performs v1<->v2 timecode file conversions.
 
 Download http://bengal.missouri.edu/~kes25c/avi_tc_package.zip
 
 
 
 
 
 "AVC1" - Cool term. It's like Geddy Lee Roth
- 
	OK, I still need help. =P 
 
 I tried what you said and downloaded the programs. I was able to extract timecodes and an .avi from my mkvs using mkv2vfr. Now when I use tc-GUI/tc2cfr to create a 120fps avi, I get the following error:
 
 --------------------------
 Process Running...
 Processing Incomplete.
 Exit Code (19): A problem was encountered.
 
 CLI Output:
 tc2cfr v1.5 by tritical.
 Descernable number of framrates: 340 (min = 0.352589 fps).
 v1 timecode file type detected.
 Invalid frame range detected in v1 timecode file (0-1535).
 ----------------------------------------
 
 
 The time code looks like:
 
 ------------------
 # timecode format v1
 Assume 23.976
 0,1535,23.9760
 1536,1538,17.9641
 1539,2750,23.9763
 2751,2805,29.9564
 2806,2809,24.0964
 2810,2844,29.9658
 2845,2848,23.9521
 2849,2883,29.9658
 2884,4315,23.9762
 4316,4320,29.9401
 4321,6756,23.9759
 6757,6761,29.9401
 6762,12777,23.9761
 12778,12780,17.9641
 12781,15256,23.9760
 15257,15261,29.9401
 15262,17417,23.9761
 17418,17420,17.9641
 17421,18460,23.9758
 18461,18475,30.0000
 18476,18975,23.9762
 18976,18978,17.9641
 18979,19286,23.9763
 19287,19291,29.9401
 19292,19294,17.9641
 19295,27406,23.9760
 27407,27409,17.9641
 27410,27414,29.9401
 27415,27418,23.9521
 27419,27421,17.9641
 27422,27426,30.1205
 27427,29566,23.9760
 29567,29569,17.9641
 29570,33525,23.9759
 33526,33528,18.0723
 33529,36876,23.9759
 36877,36891,29.9401
 36892,36943,23.9852
 36944,36953,29.9401
 36954,36993,23.9808
 36994,37008,29.9401
 37009,37120,23.9777
 37121,37130,29.9401
 37131,37222,23.9771
 37223,37227,29.9401
 37228,37231,23.9521
 37232,37236,29.9401
 37237,37244,24.0240
 37245,37254,29.9401
 37255,37346,23.9771
 37347,37351,29.9401
 37352,37355,23.9521
 37356,37360,29.9401
 37361,37368,24.0240
 37369,37378,29.9401
 37379,37470,23.9771
 37471,37475,29.9401
 37476,37479,23.9521
 37480,37484,29.9401
 37485,37492,24.0240
 37493,37497,29.9401
 37498,37593,23.9760
 37594,37598,29.9401
 37599,37601,17.9641
 37602,37613,24.0000
 37614,37623,29.9401
 37624,37715,23.9771
 37716,37720,29.9401
 37721,37724,23.9521
 37725,37729,29.9401
 37730,37737,24.0240
 37738,37747,29.9401
 37748,37859,23.9777
 37860,37864,29.9401
 37865,37980,23.9768
 37981,37990,29.9401
 37991,38082,23.9771
 38083,38097,29.9401
 38098,38105,24.0240
 38106,38115,29.9401
 38116,38215,23.9751
 38216,38220,29.9401
 38221,38228,24.0240
 38229,38233,29.9401
 38234,38329,23.9760
 38330,38339,29.9401
 38340,38351,24.0000
 38352,38356,29.9401
 38357,38452,23.9760
 38453,38467,29.9401
 38468,38475,24.0240
 38476,38480,29.9401
 38481,38584,23.9742
 38585,38589,29.9401
 38590,38597,24.0240
 38598,38602,29.9401
 38603,38706,23.9742
 38707,38711,29.9401
 38712,38719,24.0240
 38720,38724,29.9401
 38725,38824,23.9751
 38825,38834,29.9401
 38835,38942,23.9787
 38943,38947,29.9401
 38948,38951,23.9521
 38952,38956,29.9401
 38957,38964,24.0240
 38965,38969,29.9401
 38970,39189,23.9756
 39190,39199,29.9401
 39200,39227,23.9931
 39228,39232,29.9401
 39233,39364,23.9738
 39365,39369,29.9401
 39370,39397,23.9931
 39398,39402,29.9401
 39403,39534,23.9738
 39535,39539,29.9401
 39540,39567,23.9931
 39568,39572,29.9401
 39573,39712,23.9767
 39713,39717,29.9401
 39718,39803,23.9688
 
 ------------------
 
 
 Any suggestions?
- 
	Not really  You can try converting the type 1 timecode file to type 2 and see if that works.  The error message is too nebulous. You can try converting the type 1 timecode file to type 2 and see if that works.  The error message is too nebulous.
- 
	I tried converting the v1 to a v2 timecode, but the program just crashes when I try to use the output file. Anyway, I've decided to just give up on messing with vfr stuff. Too much hassle. 
- 
	If you have AVISynth and a DirectShow MKV file splitter installed (ie, if you can play your MKV files with WMP) you can use VirtualDubMod and its DirectShowSource AVISynth template. You might have to specify the frame rate and convertfps in the AVISynth script: 
 
 DirectShowSource("filename.mkv", fps=29.97, convertfps=true)
- 
	
Similar Threads
- 
  MKV with Variable Framerate convert to MP4 problemBy beaniekapp in forum Video ConversionReplies: 12Last Post: 4th Jul 2010, 09:44
- 
  How do I convert xvid framerate 23,967 to xvid framerate 25.000?By QuickstartDK in forum Newbie / General discussionsReplies: 16Last Post: 4th Nov 2009, 18:57
- 
  Canon EOS movie: variable framerate problemBy jullebarge in forum Newbie / General discussionsReplies: 7Last Post: 19th Jul 2009, 18:54
- 
  Variable FRAMErate dvd demuxingBy gbi in forum Video ConversionReplies: 8Last Post: 11th May 2009, 08:24
- 
  Staxrip: "Constant Quality" vs. "Exact File Size"By FallenAngelII in forum Video ConversionReplies: 1Last Post: 9th Aug 2007, 18:40


 
		
		 View Profile
				View Profile
			 View Forum Posts
				View Forum Posts
			 Private Message
				Private Message
			 
 
			
			

 Quote
 Quote 
			