View Full Version : Vfr.py - Auto Chapter & QPFile creator and Audio cutter for VFR video
RiCON
12th May 2010, 22:59
Vfr.py Github Repo (http://github.com/wiiaboo/vfr)
Inspired on: Daiz's AutoMKVChapters, TheFluff's split_aud, BD_Chapters
Needs: Python 3.1; MkvToolNix
What it does (for now):
Reads the first line of uncommented Trims from an .avs;
Uses timecodes files to get each trim's frame's timestamp;
Offsets the trims accordingly;
Creates a basic xml with Matroska chapters, x264 chapters if ending in 'x264.txt' or OGM chapters if any other extension is used;
Creates a qpfile to use with x264;
Cuts and merges audio (as per split_aud, only using v2 timecodes instead of expecting cfr) (all options work as split_aud);
No longer needs tcConv but converts v1 timecodes to v2 internally;
If requested, can output v2 timecodes from v1 and fps parsing. If --ofps is being used, v2 timecodes will use it.;
Can output a qpfile with converted frames meant to be used for an ivtc'd encode using non-ivtc'd frames (feature inspired by automkvchapters) (not completely accurate, obviously);
Using FFmpegsource's CorrectNTSCRationalFramerate, this is actually more precise in the v2 timecodes it produces than tcConv.
Accepts AutoMKVChapters-like templates.
Only the .avs with trims is required for vfr.py to run. You can use -v and/or --test to debug the script. All other options and arguments are optional.
Usage:
vfr.py -i audio.aac -o audio.cut.mka -f 30/1.001 -l tRim -c chapters.xml -t template.txt \
-n chnames.txt -q qpfile.qpf -vmr --ofps 24/1.001 --timecodes v2.txt --test trims.avs outtrims.avs
Required:
trims.avs = Gets first uncommented line starting with trims from this Avisynth script
Optional:
-i = Audio to be cut (takes whatever mkvmerge takes)
-o = Cut audio inside .mka
Default: input.cut.mka
-d = Manually set delay time for input audio (can be negative)
-b = Reverse parsing of .avs (from bottom to top)
-f = Frames per second or timecodes file if vfr input
(takes "25", "24000/1001", "30000:1001", "24/1.001" and "30:1.001" as cfr input)
Default: 30000/1001
-l = Look for a line starting with a case-sensitive trim() or case-insensitive comment succeeding the trims, interpreted as a regular expression.
Default: case insensitive trim
-c = Chapters file. If extension is 'xml', outputs MKV Chapters;
if extension is 'x264.txt', outputs x264 Chapters; else, outputs OGM Chapters
-n = Text file with chapter names, one per line; assumed to be UTF-8 without BOM
-q = QPFile for use in x264; will use --ofps frames
-t = Template file for advanced Matroska chapters
-v = Verbose mode
-m = Merge split audio files
-r = Remove split audio files after merging
--uid = Set base UID for --template/--chnames
--chnames = Path to basic text containing chapter titles separated by newlines
--ofps = Output FPS (used in qpfile, v2 timecodes and avs export)
Default: -f
--timecodes = Output v2 timecodes (from fps and v1 parsing) (if using --ofps, outputs v2 timecodes using this)
--sbr = Set this if inputting an .aac and it's SBR/HE-AAC
--test = Test Mode (doesn't create new files)
outtrims.avs = If chapparse.py is present, outputs .avs with offset and converted trims
To do:
- optimize code and/or improve its legibility
Known issues:
- Conversion from a different input fps to output fps is not accurate (probably no way it can ever be fixed)
Any suggestions or issues are gladly welcome.
Archive:
Vfr.py 0.3 (http://ricon.pastebin.com/3yhNuq1d)
Vfr.py 0.4 (http://ricon.pastebin.com/g3WPVcp4)
Vfr.py 0.5 (http://ricon.pastebin.com/5imnUpK4)
Vfr.py 0.5.1 (http://ricon.pastebin.com/EWxZNKNQ)
Vfr.py 0.6 (http://ricon.pastebin.com/YJhRMhEF)
Vfr.py 0.6.1 (http://ricon.pastebin.com/iE4GpF95)
Vfr.py 0.6.2 (http://ricon.pastebin.com/URuBCVXx)
Vfr.py 0.6.3 (http://ricon.pastebin.com/7fwAUkyW)
Flattr me (http://flattr.com/thing/62330/vfr-py) if you're feeling generous.
RiCON
13th May 2010, 03:01
Vfr.py 0.4 (http://ricon.pastebin.com/g3WPVcp4)
Added CFR capabilities and test mode.
New options:
-f = frames per second; accepts int and float input with both ":" and "/" (stoeled from split_aud :V )
--test = doesn't create any new files (best used with -v)
RiCON
13th May 2010, 04:16
Vfr.py 0.5 (http://ricon.pastebin.com/5imnUpK4)
Added v1 timecodes "parsing".
Needs tcConv in path. If not in path, change the tcConv variable to where it's at. You only need it for v1 parsing.
Also added --frames option for use in v1 conversion. If not set, the script estimates the total frame count from the last trimmed frame + 2.
Vfr.py 0.5.1 (http://ricon.pastebin.com/EWxZNKNQ)
A few bugs created in 0.5, fixed.
RiCON
27th May 2010, 21:43
Vfr.py 0.6 (http://ricon.pastebin.com/YJhRMhEF)
Ported to Python 3.1.2.
Changed some options so they do exactly the same as split_aud.
Fixed bug with scripts with a single trim.
Added edition to matroska chapter header.
Added tag header (doesn't create tag file yet).
Enabled audio cutting without chapter or qpfile creation (making it syntax-compatible replacement with split_aud.pl)
Moved avs input to arguments, since it's now the only required thing for vfr.py to run.
"Fixed" trims using last frame in timecodes file: will generate a synthetic timecode from the average time per frame of a few previous frames to use in audio cutting (not very accurate).
If timecode file input is used and trims refer to frames not in it, the script tries to generate the timecode from an average of some previous frames (not accurate).
Changed options:
vfr.py -i audio.aac -o cutaudio.mka -f 30000/1001 -t timecodes.txt -c chapters.xml -q qpfile.qpf -vmr --test --frames 9001 trims.avs
-i = Audio to be cut (takes whatever mkvmerge takes)
-o = Cut audio inside .mka
-f = Frames per second (takes "25", "24000/1001" and "30000:1001" as input)
-t = v1 or v2 timecodes file for vfr capabilities (needs tcConv.exe for v1 parsing)
-c = Chapters file. If extension is xml, outputs MKV Chapters, else it outputs OGM Chapters
-q = QPFile for use in x264
-v = Verbose mode
-m = Merge split audio files
-r = Remove split audio files after merging
--test = Test Mode (doesn't create new files)
--frames = number of frames for v1 to v2 timecodes conversion
trims.avs = Gets first uncommented line starting with trims from this Avisynth script
RiCON
28th August 2010, 01:59
Vfr.py 0.6.1 (http://ricon.pastebin.com/iE4GpF95)
Added x264 Chapters format (hours:minutes:seconds.milliseconds chaptername) introduced with the mp4muxer patch. Use 'x264.txt' as extension to select this format.
Added --label/-l from split_aud.pl. Works the same way (case sensitive). Default is still case insensitive Trim. Good for people who have different Trims and want to select the correct ones for the chapters.
mastrboy
28th August 2010, 18:08
now this looks interesting, a small request would be a static compiled binary, i usually don't have python installed on my encode computers.
RiCON
7th September 2010, 23:27
I'll look into it.
Heh, haven't managed to find any way to compile it to a single standalone .exe.
Here you go (http://www.wuala.com/wiiaboo/encodan/vfr.0.6.1.exe.7z).
Let me know if it even works (?)
RiCON
15th September 2010, 02:57
Vfr 0.6.2 (http://ricon.pastebin.com/URuBCVXx)
Bug Fixes:
- fixed crash when vfr.py tried to delete a split that didn't exist
Changes:
- changed verbose output of merging and deleting to more closely resemble split_aud's
Vfr 0.6.3 (http://ricon.pastebin.com/7fwAUkyW)
Bug fixes:
- Script was crashing if mkvmerge returned with code 1.
- Audio delay wasn't working properly. Output should be bit-exact with split_aud.pl, now.
mastrboy
16th September 2010, 14:22
I'll look into it.
Heh, haven't managed to find any way to compile it to a single standalone .exe.
Here you go (http://www.wuala.com/wiiaboo/encodan/vfr.0.6.1.exe.7z).
Let me know if it even works (?)
I'll check it out when i get home :)
RiCON
2nd October 2010, 15:27
Vfr.py 0.6.4 (http://ricon.pastebin.com/upBV4G0x)
Bug fixes:
- Regression with OGM and x264 chapters output
New feature:
- Looks for an AssumeFPS in the script, even if commented, and uses it to set the FPS if no --timecodes or --fps was used (still defaults to 30000/1001 if no AssumeFPS is found)
RiCON
7th December 2010, 00:43
Vfr.py 0.7.1 (https://github.com/wiiaboo/vfr/tarball/0.7.1)
Bug fixes:
- Fixed bug in "-o" when "-i" is used with absolute paths and "-o" is omitted
New features:
- Changed QPFile format to "frame K"
- Improved trim search algorithm
- Implement a ConvertFPS like automkvchapter's (useful for encoding IVTC'd TV encodes)
RiCON
14th December 2010, 21:17
Vfr.py 0.7.2 (https://github.com/wiiaboo/vfr/tarball/0.7.2)
Bug fixes:
- Fix regression in 0.7.1 that broke audio cutting
- Fix bug when chapter output was used with verbose mode
New features:
- Changed precision in CFR timestamp generation to mimic x264's (0.1ms precision)
- Added some test timecodes to help prevent regressions
- Added native v1 timecodes parsing (tcConv no longer needed)
- Added tccreator.py to test v2 timecodes generation using either CFR or v1 timecodes input (sort of like tcConv)
RiCON
26th December 2010, 17:40
Vfr.py 0.7.3 (https://github.com/wiiaboo/vfr/tarball/0.7.3)
Bug fixes:
- Fix (probably) rare bug if the input audio didn't have an extension
- Fix for bug when a lot of cuts were made which resulted in loss of sync of audio
New features:
- Add a rudimentary chapter template system (thanks to dj_tjerk)
Vfr.py 0.7.4 (https://github.com/wiiaboo/vfr/tarball/0.7.4)
Bug fixes:
- Correct bug if there are no overrides in the v1 timecodes file
New features:
- Overhaul of the v1 timecodes parser: it's now much faster and no temporary file is needed
Vfr.py 0.7.4.1 (https://github.com/wiiaboo/vfr/tarball/0.7.4.1)
Bug fixes:
- in Windows, only chapter names in the same codepage as the system worked; now both the template file and chapter file are assumed to be UTF-8 (without BOM)
New features:
- Python 2.x support ceased because of above bug fix
- Updated README
If anyone knows how to maintain compatibility with Python 2.7 with this encoding issue you're welcome to submit pull requests in GitHub or patches.
RiCON
29th December 2010, 05:56
Vfr.py 0.7.5 (https://github.com/wiiaboo/vfr/tarball/0.7.5)
New features:
- Ported CorrectNTSCRationalFramerate from FFmpegsource so all framerates are more exact (29.97 != 2997/100 but 30/1.001)
- Ported tcConv's v1 parsing as it's ages faster than mine was
- Added --otimecodes, which outputs v2 timecodes resulting from fps, v1 and --ofps parsing
RiCON
1st January 2011, 05:22
Vfr.py 0.7.6 (https://github.com/wiiaboo/vfr/tarball/0.7.6)
Bug fixes:
- Fix stupid/bad regression I somehow missed.
- Fix and clean tcconv.py
New features:
- Added MIT license
- General cleanups and minor optimizations
- Yet another rewrite of the timecodes parsing code
v2: 230k fps to 500k fps (2.2x faster)
v1 vfr: 73k fps to 370k fps (5x faster)
v1 cfr: 73k fps to 600k fps (8x faster)
- Joined --fps/-f and --timecodes/-t as --fps/-f and --otimecodes to --timecodes
In order to avoid unwanted behavior, I didn't map -t yet, so change whatever scripts you're using before updating.
RiCON
3rd January 2011, 16:32
Vfr 0.7.6.1 (https://github.com/wiiaboo/vfr/tarball/0.7.6.1)
New features:
- Moved frame padding to main() so parse_tc and convert_v1_to_v2 work as expected when imported from outside
- parse_tc and convert_v1_to_v2 can now return v2 timecodes from an arbitrary frame number instead of just 0
- If starting frame is not 0, no v2 timecodes header is added to --otc
These features are meant for the multithreaded branch but as they're also useful on their own I added them to trunk. Using the multithreaded script, tcconv vfr v1 parsing is 43% faster, putting it a little faster than tritical's tcconv and as fast as plain v2 parsing, but other than that, not much, so the mt branch is not merged yet.
Vfr.py 0.7.6.2 (https://github.com/wiiaboo/vfr/tarball/0.7.6.2)
Bug fixes:
- Fix crash with --ofps
- Fix crash with --chnames
- Fix bug with .xml exporting
- Fix bug with --ofps where the timecodes used for the chapters were using the original fps instead of --ofps making them inaccurate
New features:
- Support running main() as a module (main(args) behaves as sys.argv)
- Created test.py as a fancy test.bat alternative to test for regressions. Not really that fancy, so don't overestimate it.
Is there any need to compile 0.x.x versions of vfr.py and tcconv.py for use in Windows x86/x64 without Python installed?
RiCON
8th January 2011, 04:06
Vfr.py 0.7.7 (https://github.com/wiiaboo/vfr/tarball/0.7.7)
New features:
- Remove AssumeFPS detection. On second thought, it's useless. Let me know if it isn't.
- Implement a few more functions, like avs and trim parsing and qpfile writing.
- Merge templates branch: Implemented AutoMKVChapters templates parser
- Made a few modifications of my own on the specification of amkvc's templates, more information/sample file in test/amkvc.mod.txt (https://github.com/wiiaboo/vfr/blob/6e9c2e1e1e03f841aff198f370042d56389e9e0e/test/amkvc.mod.txt) (without losing compatibility to amkvc's, afaik)
RiCON
8th January 2011, 06:16
Vfr.py 0.8 (https://github.com/wiiaboo/vfr/tarball/0.8)
Bug fix:
- Fix regression with --chnames
New features:
- templates.py works as a CLI interface for automkvchapters
Vfr.py 0.8.1 (https://github.com/wiiaboo/vfr/tarball/0.8.1)
Bug fix:
- Overlooked something in --uid
New features:
- vfr.py now directly supports templates
Ashald
21st January 2011, 01:22
Thanks, very useful script! :3
Can I request a feature? It'll be good, if vfr.py can suppress next mkvmerge warning message by default or by additional flag, adding the "--aac-is-sbr 0" to mkvmerge cli parameters:
Warning: AAC files may contain HE-AAC / AAC+ / SBR AAC audio. This can NOT be detected automatically. Therefore you have to specifiy '--aac-is-sbr 0' manually for this input file if the file actually contains SBR AAC. The file will be muxed in the WRONG way otherwise. Also read mkvmerge's documentation.
Mkvmerge exited with warnings: 1
RiCON
25th January 2011, 04:44
Sure.
Vfr.py 0.8.2 (https://github.com/wiiaboo/vfr/tarball/0.8.2)
Bug fixes:
- Correct bug when padding v2 timecodes
- Fix timecode output when using --ofps
- Fix crash when using vfr timecodes (regression in f7d0692)
New features:
- Change behavior a bit if -q is used in vfr.py (-q option will override the QPFile option in the template)
- Quit truncating timestamps
Vfr.py 0.8.3 (https://github.com/wiiaboo/vfr/tarball/0.8.3)
Bug fixes:
- Fix (another) regression in test.py from f7d0692
New features:
- Add new test2.avs and supporting v1 timecodes
- Implement a new convert_fps algorithm
It's a bit more accurate than the previous one and also works with timecodes now (--ofps timecodes.txt).
It's also quite a bit slower, but shouldn't be too much.
Vfr.py 0.8.3.1 (https://github.com/wiiaboo/vfr/tarball/0.8.3.1)
New feature:
- Add "--aac-is-sbr 0" to mkvmerge's cut command
Thanks, Ashald.
If someone ever cuts AAC SBR, let me know and I'll add the flag.
RiCON
2nd March 2011, 14:48
Vfr.py 0.8.4 (https://github.com/wiiaboo/vfr/tarball/0.8.4)
Bug fix:
- Last commit wasn't doing anything (thanks, Daemon404)
New feature:
- Use --identify-for-mmg to get SBR AAC and first Track ID information
This suppresses both the "lack of --aac-is-sbr" and "wrong track ID for --sync if the first track of the file was 1" warnings.
In case mkvmerge doesn't detect SBR automatically I also left --sbr so this option can be manually activated.
RiCON
2nd March 2011, 16:16
Vfr.py 0.8.4.1 (https://github.com/wiiaboo/vfr/tarball/0.8.4.1)
New feature:
- Add --delay so it can be manually set (also suggested by Daemon404)
mastrboy
30th May 2011, 13:53
How do i use the template system for chapters? (I'm trying to create ordered chapters with Prologue,OP,Main,ED where OP and ED is in separate files)
RiCON
25th June 2011, 16:08
The syntax is based on Daiz's AutoMKVChapters.
For the added features, you have an example file in the git repo (https://github.com/wiiaboo/vfr/blob/master/test/amkvc.mod.txt).
AzraelNewtype
22nd July 2011, 23:36
For some reason, I can't get this to work with two linked files.
Template is as follows:
[edition1]
default=1
ordered=1
chapters=5
1name=Opening
1start=00:00:00.000000000
1end=00:00:59.518
1suid=231527a5c7449f62e6c231154fdcf487
2name=Part A
2chapter=1
3name=Part B
3chapter=2
4name=Credits
4start=00:00:00.000000000
4end=00:01:29.965000000
4suid=8bceb5a7ecdfa7914e03fcc30316fc6
5name=Preview
5chapter=3
If I don't explicitly give 4start and 4end, it takes the values from the opening video. Even with 4suid explicitly given, it uses 1suid. I tried it at first by linking to the files, and it was the same behavior, leading to this method. Copying the SUIDs with the 0xs intact (as it works in AutoMKVchapters) causes the output to just not link to external files at all, though this is obviously super easy to work around.
Any ideas?
RiCON
26th July 2011, 03:17
I'll look into it tomorrow.
RiCON
26th July 2011, 16:59
Vfr.py 0.8.4.3 (https://github.com/wiiaboo/vfr/tarball/0.8.4.3)
- Fix a couple regressions
- Updated readme
- Fix bug if chapter SUID was uppercase
- Omit a few tags if they're default in Matroska Chapter Spec (EditionFlag[Hidden,Default,Ordered]=0, ChapterLanguage=eng)
- Fixed a bug where vfr.py would override the template's inputfps option; templates.py and vfr.py -t output should be identical now.
@Azrael
Not sure about that bug. Couldn't reproduce it exactly like you said except with uppercase SUID. Try with this latest version and let me know if it's fixed or not.
I tried with the following syntax:
0xa0 0xef 0xdb 0xaa 0x2e 0x38 0x4d 0x8f 0x81 0x29 0xc8 0x17 0x4a 0x32 0x89 0x33
0XA0 0XEF 0XDB 0XAA 0X2E 0X38 0X4D 0X8F 0X81 0X29 0XC8 0X17 0X4A 0X32 0X89 0X33
0XA0EFDBAA2E384D8F8129C8174A328933
A0EFDBAA2E384D8F8129C8174A328933
0xa0efdbaa2e384d8f8129c8174a328933
a0efdbaa2e384d8f8129c8174a328933
And they all workedforme(tm)
RiCON
30th July 2011, 12:10
Vfr.py 0.8.4.4 (https://github.com/wiiaboo/vfr/tarball/0.8.4.4)
- Fix bug in programming logic
If templates.py couldn't find an MKV with the same SUID in the template, it would use the last SUID it looked for in the current directory.
- Improve SUID handling performance
Only scan the current directory for SUIDs *once* instead of every time there was an SUID in the template.
- Fix regression
@Azrael
Your problem should be fixed now.
vdcrim
21st December 2011, 01:47
Thanks for this tool. I've recently started to use it and found some issues, mostly related to templates, so I've made a few fixes:
Fixed broken code related to specifying a path as the SUID.
Don't normalize SUID value before checking if it's in fact a path.
If a custom path is set for mkvmerge, mkvinfo is now expected to be in the same directory.
Include the input Avisynth script directory when searching for the given hex SUID in files.
Fixed using mkvinfo in a non-english locale.
Small change in the mkvinfo regular expression due to a bug in mkvtoolnix v5.1.0 (already fixed).
FPS/timecode CLI parameter now overrides template FPS/timecode (useful for VFR videos).
Decode the output of 'mkvmerge --identify audio_file' with the system encoding, as mkvmerge uses that.
Allow the option to parse the avs from bottom to top (flag in the first lines of vfr.py).
[Fix removed, changes incorporated in Vfr.py 0.8.6.1]
vdcrim
30th December 2011, 01:02
One more fix: Ordered Chapters were one frame short.
[Fix removed, changes incorporated in Vfr.py 0.8.6.1]
Also, I've made a AvsP macro for vfr.py:
http://forum.doom9.org/showthread.php?t=163653
vdcrim
9th January 2012, 01:09
Another fix, hopefully the last one:
· Last chapter's end time wasn't always accurate when using ordered chapters + timecode.
[Fix removed, changes incorporated in Vfr.py 0.8.6.1]
RiCON
26th January 2012, 19:06
Vfr.py 0.8.6.1 (https://github.com/wiiaboo/vfr/tarball/0.8.6.1)
Fixes by lachs0r:
- Fix shebangs
- Remove deprecated use of % operator, fix incorrect use of subprocess.call and subprocess.check_output
- Fix mergeCmd and some string formatting
- Working --label support when using templates
Fixes and features by vdcrim:
- Add -b/--reverse to enable bottom to top parsing of .avs
- Decode the output of 'mkvmerge --identify audio_file' with the system encoding
- Fixed broken code related to specifying a path as the SUID
- Don't normalize SUID value before checking if it's in fact a path
- If a custom path is set for mkvmerge, mkvinfo is now expected to be in the same directory
- Small change in the mkvinfo regular expression due to a bug in mkvtoolnix v5.1.0
- Allow vfr.py -f to override template's inputfps
- Last chapter's end time wasn't always accurate when using ordered chapters + timecode
- Ordered Chapters were one frame short (ChapterEndTime is now equivalent to the next chapter's ChapterStartTime)
Coming next: Support for non-positive trims.
Many thanks to lachs0r and vdcrim <3
vdcrim
26th January 2012, 23:56
Coming next: Support for non-positive trims.
Many thanks to lachs0r and vdcrim <3
Thanks to you. Glad to see that you keep updating this script. It seems you missed the ifps parameter in this call though (vfr.py):
chaps = amkvc(o.template,output=output,avs=a[0],trims=Trims2ts,kframes=Trims2,uid=o.uid,label=o.label,ifps=ifps)
Also, I noticed a bug affecting the default name of chapters and editions:
self.name = 'Default'
self.name = 'Chapter'should be:self.name = ['Default']
self.name = ['Chapter']
I have a feature request. Currently the label functionality is based on the case of "trim" (Avisynth is case-insensitive). It would be more useful that "label" were a comment at the end of the line. I made it this way in this script (http://forum.doom9.org/showthread.php?t=163653), so take a look if you want, if you decide to implement this.
It could be like this:
if label.lower() == 'trim' => old label behaviour
else => new label behaviour
RiCON
27th January 2012, 05:12
vfr.py 0.8.7 (https://github.com/wiiaboo/vfr/tarball/0.8.7)
- Added missing ifps argument to vfr.py
- Correct minor bug in templates.py default names
- Add support for non-positive trims
Trim(100,-100) should be equivalent to Trim(100,199) and Trim(100,0) is understood as "no more need for ChapterEndTime and more audio cuts".
- Add support for matching lines with a comment succeeding the trims matching LABEL instead of just a specific-cased Trim
Again, many thanks, vdcrim.
I'm not adding as much stuff as I used to because I've been busy playing LoL and not been very busy working with video that much. And I feel that, other than the code being very ugly and maybe not very efficient, it works good enough.
But patches are, of course, very welcome.
RiCON
28th May 2012, 05:47
vfr.py 0.9 (https://github.com/wiiaboo/vfr/tarball/0.9)
- Correct bug with templates and trims ending in 0
- Fix writing output timecodes if --test is enabled
- Fix a random bug with --ofps
Might remove this feature altogether in the future since no one seems to be using it.
- Fix bug creating a useless split if trims started at frame 0
- Prefer --split parts if mkvmerge v5.6.0 is available
Result is binary identical to --split timecodes with the added bonus of temporary files not being created. -m and -r options are not needed anymore in this case, but vfr.py won't complain if they're used anyway.
real.finder
13th January 2013, 08:31
first, thank you so much for vfr.py
Anyone who is interested, I found GUI for vfr.py and trimsubs here (http://sourceforge.net/projects/aud-subsplitter/)
real.finder
17th March 2014, 10:24
hi
I have an edition to add --IDR option to make qp file with I (IDR) instead of k, here (http://sourceforge.net/projects/aud-subsplitter/files/src/vfr.py%200.9.2.rar/download)
it useful for open-gop, more details here (http://mewiki.project357.com/wiki/X264_Settings#qpfile)
RiCON
10th February 2015, 02:44
Just saw the post today, sorry for the delay. Added the change now.
FortMax
12th February 2018, 23:11
vfr.py no longer works as of mkvtoolnix 20.0.0, due to several commands used by vfr.py being removed. Any plans to get it updated?
RiCON
13th February 2018, 00:21
Probably fixed, if it was just --identify-for-mmg being missing.
sneaker_ger
13th February 2018, 00:32
A few versions ago mkvextract was changed:
1. Now it's "mkvextract timestamps_v2 file.mkv 0:output.txt
2. output.txt:
# timestamp format v2
0
42
83
...
(mkvmerge should accept old and new format)
Need additional changes?
FortMax
13th February 2018, 00:33
Getting some different errors now.
[path]>vfr.py -i "VTS_01_1b T80 2_0ch 384Kbps DELAY 0ms.aac.m4a" -o Exceedraft_05.mka -f 24000/1001 Exceedraft_05.avs
Traceback (most recent call last):
File "C:\Program Files (x86)\cmdpgms\vfr.py", line 730, in <module>
main(argv[1:])
File "C:\Program Files (x86)\cmdpgms\vfr.py", line 166, in main
o.verbose, o.test)
File "C:\Program Files (x86)\cmdpgms\vfr.py", line 706, in split_audio
if delay or ret else None)
NameError: global name 'tid' is not defined
RiCON
13th February 2018, 00:34
Probably not? vfr.py doesn't use mkvextract.
@FortMax: fixed
sneaker_ger
13th February 2018, 01:07
Probably not? vfr.py doesn't use mkvextract.
But it uses the timecode files it outputs, right?
FortMax
13th February 2018, 01:16
@RiCON:
That seems to have fixed my issue. Only difference from earlier performance is that it only outputs one file, rather than splitting it into multiple chunks.
RiCON
13th February 2018, 01:26
It's been this way since at least mkvmerge 5.6.0 and --merge? Long as it's still the proper output should be fine.
FortMax
13th February 2018, 02:06
Wouldn't that need the -m flag, or am I completely reading this wrong?
RiCON
13th February 2018, 02:29
-m or --merge, yes.
FortMax
13th February 2018, 02:39
My command line isn't using either of those, though. On some stuff, I found it useful when vfr.py output the stuff before x and after y for trim(x,y).
RiCON
13th February 2018, 11:35
--merge rejoins the split audio that matters.
--remove removes the split audio segments after merging.
The audio in-between hasn't been there since mkvmerge 5.6.0 because of the type of --split used.
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.