Posts for nanogyth

1 2 3
9 10
Experienced Forum User, Published Author, Player (65)
Joined: 4/21/2011
Posts: 232
creaothceann wrote:
For lots of files this will be better to copy&paste:
The number of files is limited to ~50 by "video for windows". If you run into that you might need to concatenate the parts with similar dimensions together, then trim and splice it back together after loading. Did anyone have a tool for automating that, or a different method altogether?
res1 = AviSource("320x240.avi")
res2 = AviSource("368x240.avi").LancozResize(320,240)

s1 = res1.trim(0,1279)
s2 = res2.trim(0,2559)
s3 = res1.trim(1280,3200)
s4 = res2.trim(2560,6400)
...
video = s1 + s2 + s3 + s4...
creaothceann wrote:
Alternatively it would be possible to find the least common multiple of each dimension, use PointResize to upscale to that resolution, then downscale with Biliniear/Lancoz.
The youtube resize should be different from the others. But the encoding package doesn't have anything in place for dealing with that particular issue.
res1 = AviSource("320x240.avi").PointResize(2560,1920)
res2 = AviSource("368x240.avi").PointResize(2944,1920).BilinearResize(2560,1920)

s1 = res1.trim(0,1279)
s2 = res2.trim(0,2559)
s3 = res1.trim(1280,3200)
s4 = res2.trim(2560,6400)
...
video = s1 + s2 + s3 + s4...
You could pointresize to 7360 or 14720 as well, but that seems a bit of a snipe hunt.
Experienced Forum User, Published Author, Player (65)
Joined: 4/21/2011
Posts: 232
You're using TASEncodingPackage? Make a file called movie.avs (change the file names to match psxjins output)
AudioDub(AviSource("000.avi"), WavSource("000.wav"))
Then edit encode.avs and change
AVISource("movie.avi").Trim(0,-0).ConvertToRGB32()
to
AVISource("movie.avs").Trim(0,-0).ConvertToRGB32()
P.S. Does the resolution not change? Encoding something like FF8 gets tricky because the resolution is constantly changing, making hundreds of files at a half dozen different resolutions.
Experienced Forum User, Published Author, Player (65)
Joined: 4/21/2011
Posts: 232
There is a noticeable difference between 60 and 30fps, but it shouldn't be choppiness/stuttering. While running the avs you will often see choppiness because it is hard for most computers to do all the processing in real time. So do a test render and see if it that fixes the problem. For a side-by-side compare you can do something like this. src = avisource("sample.avi").converttorgb32() stackhorizontal(src, src.ng_deblink(0.5).selectevery(2,0,0))
Experienced Forum User, Published Author, Player (65)
Joined: 4/21/2011
Posts: 232
I'm struggling to know what correct order of filters to conversion 60 to 30.
Are you having a particular problem or just looking for general advice? AviSource("video.avi") ConvertToRGB32() ng_deblink(0.5) changefps(30) Use the emulator output (RGB) if you have it.
Post subject: Avisynth alpha 4 released
Experienced Forum User, Published Author, Player (65)
Joined: 4/21/2011
Posts: 232
Experienced Forum User, Published Author, Player (65)
Joined: 4/21/2011
Posts: 232
Someone to write/polish descriptions would be very helpful. Definitely not one of my strong points.
Experienced Forum User, Published Author, Player (65)
Joined: 4/21/2011
Posts: 232
Better drawings might help, but this game seems really dull.
Experienced Forum User, Published Author, Player (65)
Joined: 4/21/2011
Posts: 232
Try this ng_deblink(blinkmask=ng_blinkmask(NOFLASH=true)) Do you have a sample?
Experienced Forum User, Published Author, Player (65)
Joined: 4/21/2011
Posts: 232
Why no author comments???
Experienced Forum User, Published Author, Player (65)
Joined: 4/21/2011
Posts: 232
No vote, put it in the vault. antd, you can prevent the "Movie finished" by disabling Messages in Options->General...
Experienced Forum User, Published Author, Player (65)
Joined: 4/21/2011
Posts: 232
I liked what you did with 8-7 a lot, yes vote.
Experienced Forum User, Published Author, Player (65)
Joined: 4/21/2011
Posts: 232
http://tasvideos.org/MovieRules.html#MovieMustBeProperlyAttributed
This notion is relaxed in sub-second improvements (commonly referred to as "frame wars"), as copying large parts of gameplay from previous generations of such TAS becomes less and less avoidable with each subsequent generation.
The submission this issue grew about would seem to fall in this category.
Experienced Forum User, Published Author, Player (65)
Joined: 4/21/2011
Posts: 232
Gameception was pretty innovative.
Experienced Forum User, Published Author, Player (65)
Joined: 4/21/2011
Posts: 232
I made a command line torrent maker. http://pastebin.com/Y9cdfD1N Its in python3, let me know if you need help getting it going, or have suggestions for improvement.
Experienced Forum User, Published Author, Player (65)
Joined: 4/21/2011
Posts: 232
feos wrote:
On the side note, what to do with cross-platform TASes of the same title by the same author? They're allowed now, but how to name encodes for, say, SNES Ghouls'n'Ghosts by Nach and Arcade Ghouls'n'Ghosts by Nach?
We could refer to the archive item by its submission number: archive.org/download/TASVideos-181/jackiechankungfu-tasv2-jeffc.mkv The old way is ugly: archive.org/download/NesJackieChansActionKungFuusaIn1738.25ByArc/jackiechankungfu-tasv2-jeffc.mkv What I've been doing recently is redundant and possible name clashes: archive.org/download/jackiechankungfu-tasv2-jeffc/jackiechankungfu-tasv2-jeffc.mkv Here is the python I've been working on recently. Turns the submission number into a _meta.xml file.
Language: python

import requests import json from lxml import objectify, etree import re sub_number = 2136 #1582 #1319 #3772 sub_url = "http://tasvideos.org/subinfo/" + str(sub_number) + "S.json" data = json.loads(requests.get(sub_url).text) console = data['system'][0] console_long = data['system'][1] game = data['game'][0] branch = data['game'][1] version = data['game'][2] author = data['player'][0] rerecord = data['movie'][0][1] secs = data['movie'][0][2] hours, minutes, seconds = int(secs//3600), int(secs%3600//60), secs%60 if hours > 1: time_form = '{0}:{1:02d}:{2:05.2f}' runt_form = '{0} hours {1} minutes' elif hours > 0: time_form = '{0}:{1:02d}:{2:05.2f}' runt_form = '1 hour {1} minutes' elif minutes == 1: time_form = '{1:02d}:{2:05.2f}' runt_form = '1 minute {2} seconds' else: time_form = '{1:02d}:{2:05.2f}' runt_form = '{1} minutes {2} seconds' time = time_form.format(hours, minutes, seconds) if branch: title_form = '{0} {1} ({2}) "{3}" in {4} by {5}' ident_form = '{0}-tas-{1}-{2}' else: title_form = '{0} {1} ({2}) in {4} by {5}' ident_form = '{0}-tas-{2}' multi_author = re.sub(', and |, | & ', '_', author) raw_ident = ident_form.format(game, branch, multi_author) E = objectify.ElementMaker(annotate=False) meta = E.metadata( E.mediatype('movies'), E.collection('opensource_movies'), (E.title(title_form. format(console, game, version, branch, time, author))), E.identifier(re.sub('[^a-z0-9._-]', '', raw_ident.lower())), E.creator(author), E.rerecord_count(str(rerecord)), (E.subject('Tool-Assisted Speedrun; {}; {}; {}'. format(console_long, game, author))), E.runtime(runt_form.format(hours, minutes, int(seconds))), E.description('This is a tool-assisted speedrun.'), (E.contact('For more information visit http://tasvideos.org/{}S.html'. format(sub_number))) ) print(etree.tostring(meta, pretty_print=True).decode("utf-8")) #with open(identifier + '_meta.xml', 'w') as f: # f.write(etree.tostring(meta, pretty_print=True).decode("utf-8"))
Experienced Forum User, Published Author, Player (65)
Joined: 4/21/2011
Posts: 232
Then the other question is whether disabling derivatives is beneficial. Deriving from both the primary and the 10bit is a waste, but it might be worthwhile to let archive make one set of derivatives. Next thing I'll try is making the archive with the ftp upload and the 512. Then use the s3 upload for the primary and 10bit with the no derive flag set on the primary.
Experienced Forum User, Published Author, Player (65)
Joined: 4/21/2011
Posts: 232
Faster AND more entertaining. How could anyone vote no?
It can be an improvement and still be slow and boring. If this had been the first submission, few would have been generous enough to offer even a meh. People are hyped for the frame wars, but it'd be a trick to convey that in the publication.
Experienced Forum User, Published Author, Player (65)
Joined: 4/21/2011
Posts: 232
The ftp version seems to be more well behaved. (docs) The first curl is used to upload each of the files. The second curl gets archive.org to process them.
set "curl=C:\mf\NGcode\lib\curl.exe"
set "user=jstout.physics@gmail.com"
set "pass=12345"
set "item=deathduel-tas-trask"
set "file1=%item%_files.xml"
set "file2=%item%_meta.xml"
set "file3=%item%.mkv"
set "file4=%item%_10bit444.mkv"
set "file5=%item%_512kb.mp4"

%curl% -v -T %file1% --user %user%:%pass% ^
       --ftp-create-dirs ^
       ftp://items-uploads.archive.org/%item%/

pause

%curl% -v "http://archive.org/services/contrib-submit.php?user_email=%user%&server=items-uploads.archive.org&dir=%item%"

pause
deathduel-tas-trask_meta.xml
Language: xml

<metadata> <mediatype>movies</mediatype> <collection>opensource_movies</collection> <title>Genesis Death Duel (USA) in 08:24.73 by Trask</title> <identifier>deathduel-tas-trask</identifier> <creator>Trask</creator> <rerecord_count>1048</rerecord_count> <subject>Tool-Assisted Speedrun; Genesis; Death Duel; Trask</subject> <runtime>10 minutes</runtime> <description> ''Death Duel'' is a side-scrolling first person shooter where the player controls a mech versus a set of nine other mechs. There is a bonus stage after each battle where the player must qualify for the next battle. The player has to purchase repairs, weapons and ammunition with the credits that are earned for destroying the enemy body parts and completing the rounds quickly. In this run, Trask takes out the enemies mostly through well placed missiles and the more expensive homing missiles. At one point a missile is used to punch through a wall to open up a path for more missiles. </description> <contact> This is a tool-assisted speedrun. For more information visit http://tasvideos.org/1291S.html </contact> </metadata>
deathduel-tas-trask_files.xml
Language: xml

<files> <file name="deathduel-tas-trask.mkv"> <format>Matroska</format> </file> <file name="deathduel-tas-trask_10bit444.mkv"> <format>Matroska</format> </file> <file name="deathduel-tas-trask_512kb.mp4"> <format>512Kb MPEG4</format> </file> </files>
If this doesn't prevent the auto derived files, then simply "<files/>" would work as well.
Experienced Forum User, Published Author, Player (65)
Joined: 4/21/2011
Posts: 232
I was looking at the zero wing submission and ran into a few issues. -Submission time assumes NTSC, but it is a PAL game. Should be 39:51.36 -The dumping guide says 320x240 for PAL, but it is outputting 320x224 P.S. I added two things to the Gens dumping guide.
Experienced Forum User, Published Author, Player (65)
Joined: 4/21/2011
Posts: 232
Layer An rgb32 image can have transparency info. ImageSource defaults to rgb24, so add pixel_type = "RGB32" to the command. You can add a transparency mask to an rgb32 frame with Mask. You can also "greenscreen" with ColorKeyMask. Using ColorKeyMask($FFFFFF) on the A in your example would make the white transparent. So Layer(B, A.ColorKeyMask($FFFFFF)) is probably close to what you're looking for. P.S. Overlay is a more for the YUV colorspaces.
Experienced Forum User, Published Author, Player (65)
Joined: 4/21/2011
Posts: 232
Do B&W gameboy games need a 10bit444 as well? It wouldn't be hard to make it, but it seems kinda pointless. hum, maybe some tests...
Experienced Forum User, Published Author, Player (65)
Joined: 4/21/2011
Posts: 232
Because theres no II in the title of the Genesis release.
Experienced Forum User, Published Author, Player (65)
Joined: 4/21/2011
Posts: 232
The encode name is unique enough for archive. Letting archive convert the title to the item name makes for some long and ugly urls.
Experienced Forum User, Published Author, Player (65)
Joined: 4/21/2011
Posts: 232
feos wrote:
In advance, will it be faster than manual uploading?
Probably no change in kbps, but with a programatic interface you could start this upload as soon as the first encode is done and it will likely finish before the next encode.
How to pick the Item name from the submission page automatically?
It is part of the url. By PUT-ing to http://s3.us.archive.org/lethalenforcers-tas-phil/ I created an item called lethalenforcers-tas-phil. The title can be set separately.
Do you still need to enter filenames (which are different each time)?
Hopefully you'd only enter it once (or maybe scrape it from the #S page) P.S. this is a python script I made a wile ago, that can go from a movie number to the author's nickname.
Language: python

import requests from bs4 import BeautifulSoup import re movie_number = 22 movie_url = "http://tasvideos.org/" + str(movie_number) + "M.html" movie_page_src = BeautifulSoup(requests.get(movie_url).text) submission_tag = movie_page_src.find("a", text=re.compile("^Submission #[0-9]+$")) submission_url = "http://tasvideos.org/" + submission_tag.get('href') submission_page_src = BeautifulSoup(requests.get(submission_url).text) nickname_tag = submission_page_src.find("th", text=re.compile("^Author's nickname: $")) nickname = nickname_tag.next_sibling.text print(nickname)
Post subject: archive upload from the command line
Experienced Forum User, Published Author, Player (65)
Joined: 4/21/2011
Posts: 232
This is a work in progress. I can create an archive page with this, but it is a "data" entry in community_texts.
curl --header "authorization: LOW access:secret" ^
     -i -X PUT http://s3.us.archive.org/lethalenforcers-tas-phil/
I uploaded the files with this, but it didn't update the metadata.
curl --location ^
     --header "authorization: LOW access:secret" ^
     --header 'x-archive-meta01-collection:speed_runs' ^
     --header 'x-archive-meta-mediatype:movies' ^
     --header 'x-archive-queue-derive:0' ^
     --upload-file lethalenforcers-tas-phil.mkv ^
     http://s3.us.archive.org/lethalenforcers-tas-phil/lethalenforcers-tas-phil.mkv
This is the flag that should create the page and upload at the same time. I tried it a few different ways before resorting to PUT, but I couldn't get it to work.
--header 'x-amz-auto-make-bucket:1'
This is the flag that should enable changes of metadata, but I couldn't get it working either.
--header 'x-archive-ignore-preexisting-bucket:1'
No progress bar, which is frustrating.
1 2 3
9 10