Skip Navigation

InitialsDiceBearhttps://github.com/dicebear/dicebearhttps://creativecommons.org/publicdomain/zero/1.0/„Initials” (https://github.com/dicebear/dicebear) by „DiceBear”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)U

unfortunate_ferret

@ obelisk_complex @piefed.ca

Posts
5
Comments
223
Joined
5 mo. ago

  • That's very similar to what I've been doing 😊 This project I think is on the cusp, a few of the files are over a thousand lines but it's still kinda manageable. Comparatively, the PowerShell script I started with was far simpler. That one I actually did write most of it because I know how to get stuff done in PowerShell - just needed Claude's help with the GUI.

    Also, I was thinking about your comment on performance when you're looking at tens of thousands of runs - definitely not my original intent for this, I figured anyone doing that would just use CLI, but it's totally possible with HISTV. I added an option to put files in /outputs, path relative to the input file, so you totally could just drag a top level folder info the queue, it'll enumerate the media in all the subdirectories, and hit start. You'd get the transcoded files right next to the originals in your folder structure so they're easy to find. Useful, I hope, when doing that many jobs.

    And thanks to your advice, it'll do so a lot more efficiently. Like 5-6x lower resource usage, now. I really do appreciate the feedback, it's exactly the kind of pointers I was hoping for when I posted this. I wish you'd come in to the comments outside my emotional response to someone else :P

  • I really need to stick to my rule of taking a day to think before I respond.

    So here's the thing, I understand why people would want me to label my posts as AI-assisted. I'm sure there are a lot of people who just ask the AI to build them a thing, slap it all together, and throw it up on the internet as a finished project, and it'd be exhausting to be looking at the 95th slopbucket of a codebase and realise you've been bamboozled again by genAI.

    I'm explicitly trying to not be that guy, so here's what I'm doing. I've added a preamble to the post disclaiming this project is AI-assisted, and why I think it's fair to say I'm doing it differently than most. I'll add something like that to my other post now, and I'll include clean it up to include a shorter boilerplate version in future posts. It's the internet, nobody knows me, so it's only fair to introduce myself!

    If you have any advice or feedback to contribute, I'd genuinely appreciate it - it's just easier for me to take on board if I don't have to fight through emotional dysregulation to read it.

  • Well, good news - I got some pointers on places that genAI usually makes mistakes, so I've gone through a round of performance fixes for things like unnecessary worker duplications which - next to the actual encoding - I didn't notice the impact of on my desktop.

    As to using hardware encoding, HISTV runs a test render for hevc and h264 across amf, nvenc, and qsv - so pretty much, if your hardware supports it, HISTV will detect it and let you choose which encoder you want to use. You can even use libx264/libx265 by choice if you want to take advantage of the more efficient compression; doing so exposes a toggle for CRF if you'd rather use that than QP.

  • Hey, replying again so you get a separate reply message. So like I said, I went looking for redundant loops and I found quite a few, just like you described. There was also a minor performance issue with the logic that built the FFMPEG argument; it used a lot of unnecessary flags, each of which required fresh memory allocation. That would only be an issue in specific circumstances, like if you were encoding thousands of videos in quick succession... but that's exactly the kind of issue you were talking about, so I asked for and implemented the fix.

    It does seem snappier. I'm pushing 1.0.9, which has the fixes beyond what I found from your comments (I fixed the ones you prompted me to find in 1.0.8). If there's anything else you'd recommend I look at, I'm all ears.

  • Again, get off your high horse

    I'm on a high horse? You're the one riding in here yelling at me for not conforming to your arbitrary rules I didn't know about, and defending someone who did nothing but insult me.

    You already know how most self-hosted folks feel about vibe coding, or you wouldn’t have taken immediate offence to the initial comment (which ia valid, btw. You did not mark the project as vibe-coded or ai-assisted.) MARK YOUR PROJECT AS AI-ASSISTED.

    No, I don't know any such thing, I took offense to the implication that there was no effort put into this, and the absolute absence of any constructive criticism whatsoever. And again, I didn't agree to your rules, and I don't owe you anything, so take you imperious commands somewhere else, thank you very much.

    I’m looking to replace my cron-timed ffmpeg bash and ash scripts for encoding. Three of the four projects I looked at have double- and triple-work loops for work that should be done once. This seems to be a theme in vibe-coded projects.

    See, this is something I can actually work with. I'm looking for places that unnecessary probes get spawned for example - there are some that are necessary for the way I want this thing to work, but there's one just for audio data when previous probes already get that. A useful observation that resulted in an improvement. Thank you.

    Once again, I’m interested in the project, but I have my own thresholds of quality and security. If you can’t handle questions about your project, personal or not, then maybe don’t share it.

    First of all, I'm going to say this very clearly so maybe it gets through: I am not mad about questions. I am mad about insults and a lack of questions. Thank you for your attention to this matter 🤦 Next: Your thresholds are your responsibility, I didn't know about them when I built this and I didn't build it for you, I'm sharing it and you happened to stop by. I appreciate your observations on issues to watch out for when I'm using genAI code, I will be keeping an eye out for duplicated loops and other issues in future projects.

    Sir/Madam, your feeling are your responsibility, not mine. I did not utter any pejoratives your way. Grow up.

    You have issued a few helpful specifics and otherwise roundly shouted at and condescended to me. You have a few things to learn about living in a civil society, based on how you treat strangers who are trying to learn new skills. Grow up.

  • No one is being a jerk here

    Really? Literally the only thing they said was

    Missing the ”made using AI, barely tested” disclaimer I see…

    They didn't ask a question. They just came out swinging, for no reason. You asked three questions, and I'm not going to call you a jerk for it. But just coming in here and making snide remarks? Absolutely being a jerk.

    Now, your questions.

    • No, I didn't use unit tests. I built this for my own personal use, and tested it on my system and my wife's with files in a variety of containers encoded at a variety of bitrates with a variety of codecs - random crap we had laying around our hard drives, from the internet, from Steam and OBS records, from our phone cameras. This isn't commercial software, I'm not asking for donations, and I made the license The Unlicense because I don't want money or credit for it. I shared it because I got it working and I thought other people might find it useful too. I'm not going to exhaustively test it like I'm taking subscriptions, I hate testing. When I come across an issue, I fix it, and that's the best I'm offering.

    • It's FFMPEG in the backend, and it processes files sequentially. It encodes whatever you put in to HEVC MKV, or H264 MP4. You can set the QP settings for the quality you want. Explain where you expect inefficiency and how I can fix it, and I will.

    • I'm pushing from a local repo to my Github where it runs a job to compile the binaries for each platform, and to Codeberg where it's not doing that (so I only have the compiled binaries at GitHub right now).

    • What fixes did I apply? Many. Some examples would be not successfully detecting available hardware, showing all available encoders rather than only the ones that would work with available hardware, failing to build (so many build failures), window sizing issues, options not showing, hanging on starting a job because the ffmpeg command was getting mangled, failing to find ffmpeg, unable to add files, unable to probe files, packet counting not working so "best guess" settings would result in larger files than the originals, that sort of thing.

    And incidentally, the fact that this is a personal project I shared in case someone might find it useful is another reason that coming in here and throwing shade is a shitty thing to do. This isn't Stack Overflow. If it's no use to you, move on. If you have constructive criticism, let's hear it. If you can do it better, go ahead. But why try to make me feel bad about it, because you don't like the way I built it? I used spaces instead of tabs too, go get the fucking pitchforks.

  • Yes, I used Claude to help me build this, but it's not "barely tested". The major features all work, and they didn't at first; I hunted down bugs, caught (some of) the mistakes the AI made, and manually applied fixes so I could be sure I understood what went wrong and why. This was first and foremost a learning experience for me. And I'm actively using this thing to batch transcode my media right now, because my learning experience has resulted in something that works.

    If you find issues, by all means let me know and I'll do my best to fix them. If you're just here to be a jerk, I'm not interested.

  • This. We're all overworked so we all have less energy for things like keeping ourselves fit. And actually exercising really doesn't sell itself either, it hurts and it's hot and I'm still trying to catch my damn breath from my sets earlier. Stupid maintenance.

    But it beats the hell out of literally slowly suffocating in my chair at my desk.

  • Good catch! Didn't see til I looked at it on my phone, wasn't happening on my desktop. Fixed.

  • My advice would be to try transcoding one or two media files first, and test the transcode on different devices. HISTV gives a lot fewer options than Handbrake, but the idea is minimal effort, maximal compatibility.

    Specifically, AV1 is a newer standard, and not supported on devices older than ~2020 I think. HEVC (aka x265) produces slightly larger files but works on devices back to 2016 or so, and MP4/H.264 gives yet bigger files but compatibility goes back even further.

    For video file size the main things you want to set are the target bitrate and, secondarily, the QP numbers: https://www.w3tutorials.net/blog/what-s-the-difference-with-crf-and-qp-in-ffmpeg/#quantization-parameter-qp-definition--how-it-works

    For good quality at a reasonable size you can use the default values of 20/22 but to save a little more space you can probably bump these to 24/26. I went with QP instead of CRF because it's better for streaming (while still giving better perceived quality than a constant bit rate).

    As I say, Handbrake is great, does all this and more, but that was my problem with it - the controls look like something out of a space shuttle and I just don't need all that most of the time 😅 I'd love to hear how you find using HISTV vs Handbrake, if you give it a go! 🙌

  • Edit: Found the issue and the link you meant thanks to another commenter, fixed!

    And, it's actually also on Codeberg: https://codeberg.org/dorkian_gray/histv-universal

    But yes, I did create a GitHub account just because it can build binaries for a wide range of systems; the binaries are currently only available on Github. I'm trying to figure out how to create a release on Codeberg, but if it's in the Tags, every time I click into one I get a 502 Bad Gateway, soooo... I think it's safe to say that I have been running into Codeberg's availability issues, and I'm now glad I've got both 😅

  • Oh, I know the answer to this one. It's because we don't have single-payer healthcare, which Republicans don't want because they don't want bureaucratic death panels of disconnected doctors denying people access to medication.

    They'd much prefer to have bureaucratic death panels entirely disconnected from any medical expertise denying people access to their medication and for spurious reasons.

  • It's not that I need it to be perfect, it's that I need to make sure I can get my environment running for work on Monday 😅 But thanks, I'm excited that it's even a feasible option!

  • That's exactly what this is part of! HISTV is the fruit of one of my many explorations, and that genesis is part of why I posted this in a selfhosting comm.

    As to escaping Windows entirely, thanks to Valve's work on the Proton layer I can feasibly switch to daily driving some flavour of Linux. Soon. I just need to metaphorically get off my ass and trial it out for a few days on a live boot USB to work out any bugbears before making the actual switch (for personal reasons, I'm going to be starting from scratch and setting my environment up right, so it has to go smoothly).

  • Lol cheers bru, appreciate the solidarity 🙌

  • Oh! Apologies, I wasn't directing that at you. I see how it came off that way though; my tone was meant to be self-deprecating. By the last bit I just meant I saw a downvote or two. Could be any reason for those, or none at all.

  • TIL, cheers! That's pretty awesome. Now that this is working, I'll probably drop it entirely and move on to learning Tdarr, I'm really curious how the network compute works 😅

    edit 6/mar: nope, improving this is actually a lot of fun and very satisfying! I'm gonna keep building it after all, I think I'll see if I can bring over some of the improvements from the universal version...

  • Yep. I didn't scope out and build that one though. Also I didn't get to name it, which in hindsight was obviously a terrible mistake.