Joined: 8/4/2011
Posts: 26
Location: Sweden
feos, make it part of publication work? Alternatively make a sticky in this subforum with the first post detailing processes for high quality rendering of TASes for different purpouses, maybe with a FAQ section that you later could expand on. Right now everything seems kind of spread out and it can be hard to grasp exactly what to do if you don't have previous experience with the programs even if the process is fairly simple. This is what's wrong with it: http://i.imgur.com/DY6YRJ2.jpg another example: (again left is 1280p upscaled in MPC, middle is 1280p upscaled on YT and right is raw lagarinth encode from Gens on YT) Notice how it has improved with upscaling but still is far from the quality of the original file. It looks like a jpeg-smush of oatmeal-pictures stringed together and I'm not sure how to avoid that other than keep increasing the resolution. Thanks for the code! I'll see what I can come up with later today when I got time.
creaothceann
He/Him
Editor
Joined: 4/7/2005
Posts: 1874
Location: Germany
What bitrate did your video have? (If you don't know, take the file size (without audio) in bits and divide it by the length in seconds and then by 1000 - that's your kbits/s value. Or open it up in a video player, e.g. MPC-HC, and look at the file info.) PS: it's spelled Lararith :)
Joined: 2/3/2013
Posts: 320
Location: Germany
creaothceann wrote:
PS: it's spelled Lararith :)
No: Lagarith. Ah, that felt good. Also, don't upload Lagarith to YT. It gets all messed up. Transcode to H264 instead.
All syllogisms have three parts, therefore this is not a syllogism.
Joined: 8/4/2011
Posts: 26
Location: Sweden
according to YT itself the average bitrate is 7.6kB/frame (9'568'905 bytes for 1232 frames) which I'm presuming is about 228kB/s (for 30fps video). That's with max settings though (quality = 720p) and including booting splashscreens and whatnot.
creaothceann wrote:
PS: it's spelled Lararith :)
No it's spelled Lagarith ;) EDIT: I realise that it's much much lower than the 6.6MB/frame (with audio) average for the file on my computer but the entire point of the project requires that I upload with the least amount of quality loss possible on YT. EDIT2: Btw does "AssumeSampleRate(AudioRate / 2)" change the frequency of the audio as well as the tempo? YT 2x speed doesn't effect the frequency so if it does it would make Sonic sound groovy.
creaothceann
He/Him
Editor
Joined: 4/7/2005
Posts: 1874
Location: Germany
>Lagarith http://i.imgur.com/AX7lYND.jpg
TimpZ wrote:
according to YT itself the average bitrate is 7.6kB/frame (9'568'905 bytes for 1232 frames) which I'm presuming is about 228kB/s (for 30fps video). That's with max settings though (quality = 720p) and including booting splashscreens and whatnot.
If you don't have the file you uploaded anymore, just dump ca. one minute or so again and encode it. Ignore the audio for now; you can encode that at 192kbit/s and it'll sound fine, especially with older consoles. Btw. kbits (x * 1000 bits per second) is the commonly used unit for both video and audio.
TimpZ wrote:
EDIT: I realise that it's much much lower than the 6.6MB/frame (with audio) average for the file on my computer but the entire point of the project requires that I upload with the least amount of quality loss possible on YT.
Size doesn't always imply quality. Converting video to h.264 etc. is a fairly complex process, and you can influence it in many ways. The usual ones are preset (from "ultrafast" to "placebo" == how much time you want the computer to spend finding a good encoding solution) and the choice between bitrate mode (you select an upper bound on the data rate; the preset determines how close to the original the result will look) or CRF mode (you select the quality and the preset determines how good the compression (i.e. how small the file) will be). I use x264vfw for that. Experienced encoders will most likely use CRF mode with a quality setting adapted to the source and with an encoding time they're willing to spend; sometimes that can go to a few gigabytes for the final file and an encoding framerate in the single-digit range, so things like multithreading become very important...
TimpZ wrote:
EDIT2: Btw does "AssumeSampleRate(AudioRate / 2)" change the frequency of the audio as well as the tempo? YT 2x speed doesn't effect the frequency so if it does it would make Sonic sound groovy.
http://avisynth.nl/index.php/AssumeSampleRate It changes the frequency, i.e. the speed at which the soundcard plays the data. Imagine a vinyl record that spins at half the usual speed.
Publisher
Joined: 4/23/2009
Posts: 1283
I don't know what you were expecting TimpZ, YT compresses regardless of what you send. At fast motion like sonic, most people won't see the artifacts you pointed out. Of course it won't ever beat your lossless upscale version. I should point out, the bigger the resolution, the more bits per pixel it gets, and the less artifacts you should see. So yes, upscale it by 12x like I suggested =p. As for why I extracted the WAV, the MP4 doesn't have audio when you encode the video, nor does the spec allow it regularly, which is why I mux in MKV which supports H.264 + WAV. As for output to AVI in VDub, that's a no no, as you probably didn't set the correct settings in both VDub and Lagarith to send the correct AVI (aka there is a slight quality loss you probably didn't notice but it probably made YT encode worse than it could). If you want, I can explain what settings were probably not set and why they should be set. The file also will be quite a big larger than using the command line I gave you. I forgot about the 30 Hz flicker. IMO I take care of it via selecting even/odd frames which makes it look a bit jittery, but IMO preserves the pictures the best.
Joined: 8/4/2011
Posts: 26
Location: Sweden
x264.exe didn't like me outputting an mp4 :/. Also I got a couple warnings when I changed the output to an AVI, not sure what they're about. This gave me a 65MB file that can't be rendered. Also I was hoping for as good quality as possible but I just noticed that for example Tee-N-Tee's TAS-encode by feos have the same artifacts so I guess I can't complain too much :p. The MKV program said something about being a buggy preview. Is that the correct version? Also I realised that I want inputs to be visible on the screen but I'm unsure how to do that without capturing the emulator with a separate program. Any advice?
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Gens: Tools -> AVI -> Uncheck Clear AVI Screen. Bizhawk: File -> AVI -> Check Capture OSD.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
creaothceann
He/Him
Editor
Joined: 4/7/2005
Posts: 1874
Location: Germany
TimpZ wrote:
x264.exe didn't like me outputting an mp4 :/. Also I got a couple warnings when I changed the output to an AVI, not sure what they're about. <img>http://i.imgur.com/FPBQdtk.png</img> This gave me a 65MB file that can't be rendered.
You can copy'n'paste to/from the command-line window.
frame MB size (240x168) > level limit (36864) MB rate (2419200) > level limit (2073600)
The first line means that you're using a certain level but the number of macroblocks (16x16 pixel areas) surpasses the macroblock limit of that level. The second warning basically is the consequence of that: the number of macroblocks coming in per second is larger than the limit. As for rendering... try mplayer (e.g. with a frontend like smplayer). Btw. I'm not sure why you'd use the "TV" range for input and output - the input is definitely full range (0..255 for each RGB channel) since you're using an emulator (they always output full-range in RGB colorspace), and I'd assume that most digital TVs can already convert full-range video on their own if needed... Also, try CRF 16 or even 20, it should be visually very close to the original but much smaller.
Publisher
Joined: 4/23/2009
Posts: 1283
creaothceann wrote:
Btw. I'm not sure why you'd use the "TV" range for input and output - the input is definitely full range (0..255 for each RGB channel) since you're using an emulator (they always output full-range in RGB colorspace), and I'd assume that most digital TVs can already convert full-range video on their own if needed...
The input is TV range because the script already converted to TV range. The output is TV range because YT converts only to TV range. This is why I also converted the input to TV range because YT only supports TV range. I rather control how it is converted than let YT do it.
creaothceann wrote:
Also, try CRF 16 or even 20, it should be visually very close to the original but much smaller.
I think a 65 MB file is pretty small already, lol. Especially with the upload speed he has. I rather send lossless H.264 at that rate. May give slightly better quality on YT!
Publisher
Joined: 4/23/2009
Posts: 1283
TimpZ wrote:
x264.exe didn't like me outputting an mp4 :/. Also I got a couple warnings when I changed the output to an AVI, not sure what they're about. This gave me a 65MB file that can't be rendered. Also I was hoping for as good quality as possible but I just noticed that for example Tee-N-Tee's TAS-encode by feos have the same artifacts so I guess I can't complain too much :p. The MKV program said something about being a buggy preview. Is that the correct version? Also I realised that I want inputs to be visible on the screen but I'm unsure how to do that without capturing the emulator with a separate program. Any advice?
Since I didn't know x264 doesn't come with MP4 muxer anymore, I'm sorry I told you that way. You should now output to MKV instead. So basically --output <whatever>.mkv As for playback, you probably don't have the right codecs. Though using the latest MPC-HC should give you the right codecs.... I'd say try MKV and playback that.
creaothceann
He/Him
Editor
Joined: 4/7/2005
Posts: 1874
Location: Germany
Aktan wrote:
creaothceann wrote:
Also, try CRF 16 or even 20, it should be visually very close to the original but much smaller.
I think a 65 MB file is pretty small already, lol. Especially with the upload speed he has. I rather send lossless H.264 at that rate. May give slightly better quality on YT!
Well, it'd still be 11 minutes of uploading for me. He also might want to upload longer clips later.
Aktan wrote:
Since I didn't know x264 doesn't come with MP4 muxer anymore
He could modify the source and compile it... :)
Joined: 10/26/2014
Posts: 4
Hey, I have got 2 questions: 1. When do I enable the blend function in the Hybrid Encoding Script and when not? I didn't understand it. What is it for? When do I use it? 2. What changes when I choose it is a handheld video and not a TV based console? 3. When should I set ngdb to true?
Spikestuff
They/Them
Editor, Publisher, Expert player (2642)
Joined: 10/12/2011
Posts: 6438
Location: The land down under.
TASGameplayEncodes wrote:
2. What changes when I choose it is a handheld video and not a TV based console?
Hooray for Spyro. handheld = true handheld = false (These images have been resized. Click them to view them.) Here's a GBA game handheld = true handheld = false
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
http://tasvideos.org/EncodingGuide/PublicationManual.html TASVideos comunity developed custom functions to handle alternating frame flickering when making YouTube encodes.
  • blend - set to false if there's no alternate frame flickering in the video
  • hdframerate is used when blend = false. Drops frames so that the framerate matches the value. YouTube framerate is 30 maximum, so it's default value.
  • ngdb - use ng_deblink, the most powerful deblink function. It calculates which objects blink, creates a mask and blends within it (does not work for background shaking). Set to true to enable. If false, TASBlend is used instead.
  • TASBlend function is used when ngdb = false. Use it when the whole video needs to be blended.
ng_deblink parameters
  • Default: ng_deblink(0.5).SelectOdd - (30 fps, NTSC encodes)
  • Change 0.5 to 1.0 to get half framerate flickering.
  • Leave empty () for default; some transparency, some flickering - TASBlend style.
  • Exclude .SelectOdd to prevent framerate reduction.
  • Replace .SelectOdd with .SelectEvery(5,0,2,4) for 25 fps, PAL encodes
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Archive.org doesn't load for me anymore. WTF am I supposed to do? EDIT: It works under Tor though............. EDIT: It can't upload under Tor!!!
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Spikestuff
They/Them
Editor, Publisher, Expert player (2642)
Joined: 10/12/2011
Posts: 6438
Location: The land down under.
I'm trying to open 21 files in a segmented order but the mine and feos' method has failed. My method was the manual method of putting AviSource one after the other and feos' way was the AppendSegment method. Both methods kinda worked but it got to the 2nd clip and stopped half way. I did a change from opening 21 to just 5 that didn't work then 3 and that didn't work and 2 didn't even show the full clip of 2. Edit: I was using HybridEncodeScript and apparently that "broke" it, I just did one with just AVISource spam and nothing else and it did the entire thing. Note: I've done the mkvmerge method before for this 8 hour TAS and the audio will and I'm not joking break about 2 hours in (Audio reached 2gb). Anything related to using mkvmerge will be ignored unless it's manages to have a way to get audio to a low size.
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Joined: 10/26/2014
Posts: 4
Use mkvmerge: http://puu.sh/csOW1/90f90dc50c.png <- Drag and Drop first file, then click on Append (not add, important!!) and select the other files. Merge them into 1 mkv. If you need a MP4 file, download MKVExtract2, extract the stream, download YAMB/mp4box, merge them into a mp4 container.
creaothceann
He/Him
Editor
Joined: 4/7/2005
Posts: 1874
Location: Germany
Spikestuff wrote:
I'm trying to open 21 files in a segmented order but the mine and feos' method has failed. My method was the manual method of putting AviSource one after the other and feos' way was the AppendSegment method. Both methods kinda worked but it got to the 2nd clip and stopped half way. I did a change from opening 21 to just 5 that didn't work then 3 and that didn't work and 2 didn't even show the full clip of 2. Edit: I was using HybridEncodeScript and apparently that "broke" it, I just did one with just AVISource spam and nothing else and it did the entire thing. Note: I've done the mkvmerge method before for this 8 hour TAS and the audio will and I'm not joking break about 2 hours in (Audio reached 2gb). Anything related to using mkvmerge will be ignored unless it's manages to have a way to get audio to a low size.
Tried AVISource(file1, file2, ...) ? Also, tried updating MKVtoolnix? mkvmerge just joins the streams, it doesn't do anything else with them.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Alright. So now I know that Archive.org was blocked in russia. Because it somewhere contained some video that is considered illegal here. Any ideas how to make it work? Under Tor the site loads, but I can't finish an upload. Under proxy it doesn't open. VPN... never tried.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Joined: 10/26/2014
Posts: 4
1. Why are you giving x264 the -sar paramenter only for the 10bit444 downloadable? In the Hybrid Encoding Script, only there is --sar "%VAR%". For the right result, shouldn't it be for YT + 512kb stream too? 2. Why don't you use CRF encoding for YT instead of qp in the Hybrid Encoding Script?
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
1. Primary encode uses SAR because it isn't rescaled when encoded, like 512kb is. For primary, it saves some file size. And Archove.org wants the already corrected aspect ratio for its streams. Same with variable/constant FPS. 2. What's the exact difference between crf and qp? The latter is used for HDs since 2010, I didn't really ask myself why.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
creaothceann
He/Him
Editor
Joined: 4/7/2005
Posts: 1874
Location: Germany
feos wrote:
What's the exact difference between crf and qp?
http://mewiki.project357.com/wiki/X264_Settings wrote:
qp Set x264 to encode the movie in Constant Quantizer mode. [...] qp produces larger files than --crf for the same visual quality. qp mode also disables adaptive quantization, since by definition 'constant quantizer' implies no adaptive quantization. crf (default: 23.0) Constant Ratefactor [...] targets a certain 'quality'. The idea is for crf n to give the same perceptual quality as qp n, just in a smaller space. [...] CRF achieves this by reducing the quality of 'less important' frames. In this context, 'less important' means frames in complex or high-motion scenes, where quality is either more expensive (in terms of bits) or less visible, will have their quantizer increased. The bits saved in frames like these are redistributed to frames where they will be more effective.
Post subject: encode hd on gens
Player (24)
Joined: 9/17/2014
Posts: 368
Location: France
how can encode hd or full hd
Samsara
She/They
Senior Judge, Site Admin, Expert player (2238)
Joined: 11/13/2006
Posts: 2822
Location: Northern California
You can't encode HD directly on Gens or any other emulator. You need to resize the raw video to HD dimensions, which involves either using a good video editor or learning AviSynth code.
TASvideos Admin and acting Senior Judge 💙 Currently unable to dedicate a lot of time to the site, taking care of family. Now infrequently posting on Bluesky
warmCabin wrote:
You shouldn't need a degree in computer science to get into this hobby.