GithubHelp home page GithubHelp logo

moisespr123 / rav1e_gui Goto Github PK

View Code? Open in Web Editor NEW
36.0 4.0 2.0 144 KB

GUI to encode video files to AV1, using the rav1e encoder. Multi-threads by splitting the input file in parts and encoding each in a separate thread

Visual Basic .NET 100.00%
rav1e encoder gui windows video encoding

rav1e_gui's Introduction

RAV1E GUI Travis Build Status AppVeyor Build Status

A GUI to convert video files to AV1 using rav1e

Main Window Screenshot

Advanced Encoder Options Window Screenshot

I wrote this software to test the rav1e software. The GUI encodes the input video to .y4m to feed it into rav1e. The audio is encoded to Opus using ffmpeg. After the encoding is finished, the .ivf files are concatenated. Lastly, the .ivf and .opus (if video has audio) files are merged into a .webm or .mkv container.

Originally written in Visual Basic .NET using Visual Studio 2017 and updated using Visual Studio 2019.

Dependencies:

Builds come with rav1e bundled, but not ffmpeg due to licensing restrictions.

Updated components builds:

Ocasionally, rav1e gets updated. You can download the latest version of rav1e_gui with the latest version of rav1e included here: https://moisescardona.me/rav1e-gui

Enjoy!

rav1e_gui's People

Contributors

ewouth avatar iiiblueberry avatar moisespr123 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

rav1e_gui's Issues

Gui becomes highly unresponsive for jobs with many threads

The gui becomes very unresponsive for jobs with many threads, especially when encoding something longer. If you manage to somehow pause progress, the gui behaves normally again (until resumed). I can also see that the memory usage of the gui jumps to ~400-600MB and then goes back to 200MB every few seconds, so I'm guessing it has to do with logs.

Logs appear very slowly, sort of like... as if it were reading a long logfile, comparing it to something and then only posting the last line.

If I can provide more information, let me know.

It's Windows 10 x64, 32 threads, 20 second pieces, ~2.5h long content.

Files go missing

Version 1.17 appears to cause the original file to go missing after encoding and the output file doesn't appear.
This doesn't happen for 1.16.
Could this be related to the pipe?

I'm using Windows 10. Not running on WSL.

Add options to encode in multiple resolutions

Encoding in multiple resolutions from a single input file could speed up the encoding process if you want multiple outputs. I could be done by specifying multiple scaling factors, horizontal resolutions or vertical resolutions.

For example, if an input video has a 3840x2160 resolution, and scaling factors 1, 1.5, 2, 3 and 4 are specified, it would encode the video in 3840x2160, 2550x1440, 1920x1080, 1280x720 and 960x540.

Depends on #2.

No output when source has no audio

Hi
I've noticed that when source file does not have an audio the encoding goes all the way but there's no output file. The same file with any audio track is encoded like it should.
I'm guessing it's because there's no rav1e-audio.opus file and merging silently fails.
The audio track is removed with ffmpeg -an switch.

BTW it would be great to have build in checkbox to remove audio right from the GUI. :)

2019-06-03 11:55:52 || y4m-part-000001.y4m || Key Frames:      2    avg size:   93945 B
2019-06-03 11:55:52 || y4m-part-000001.y4m || Inter:         248    avg size:    2545 B
2019-06-03 11:55:52 || y4m-part-000001.y4m || Intra Only:      0    avg size:       0 B
2019-06-03 11:55:52 || y4m-part-000001.y4m || Switch:          0    avg size:       0 B
2019-06-03 11:55:52 || Video part y4m-part-000001.y4m Encoding complete.
2019-06-03 11:55:52 || Video Segments Encoded
2019-06-03 11:55:52 || Concatenating encoded video segments
2019-06-03 11:55:52 || Video concatenated
2019-06-03 11:55:52 || Merging audio and video files
2019-06-03 11:55:53 || Merge complete

Show estimated temporary disk space requirement

Since temporary data will be stored as .y4m (avisynth is not supported or used at the moment), it would be nice to know ahead of time +- how much disk space is required for them. Splitting a somewhat short 1080p content can result in hundreds of gigabytes of data as .y4m is completely uncompressed, so it's easily possible for someone to fill their disk if they decide (god for bid) to encode something longer.

At any rate, thanks for this tool, it seems to be working really well ( threadripper user :D ) for some AV1 testing!

Since version 1.16 program stop working correctly

Since version 1.16 (In 1.15 all seems to be okay) program doesn't work normal.
No matter how I change settings the output file still the same, with low video bitrate(~115kb).
I was changing speed, quantizer and so on but output result the same.

Resume operation if files are present

Sadly this morning my machine crashed and the 16 hour job it was running was wasted.

A simple way to resume an incomplete job could look like this:
Since the input file is split into many parts, it ought to be possible to walk the list of split input files and check which ones do not have output files yet. Since output files can be incomplete, a simple solution would be to just delete the last threads output files. This would still save almost all output files and hence the largest share of the job.

Of course it could also be done by continuously tracking which files are done and persisting this information. This could also be combined with a pause/resume button, which would also be great but is a separate feature.

What do you think?

Final merged file is not produced

As it seems, the software does all the encoding process but it doesn't produce the final merged file (whatever mkv or webm) and deletes all the temporary files.

Implement memory limit

Under advanced options a memory limit could be useful for high-resolution encodes. Like use max 75% or 12GB of available RAM, and then limit the number of parallel jobs based on that.

Make it more obvious that temp file path is required

When you do not enter a temp file path you just get the exception System.ArgumentException: The path is not of a legal form.

I almost didn't figure it out and thought there is something wrong with the input file path. Maybe it's best to just use System.IO.Path.GetTempPath() if the user doesn't enter anything?

Add Bitrate Encoding

This Tool, Assisted AV1 Encoder that Faster than x265, Now Only Supports Quantizer Encoding. I Tried, 77mb AVC.mp4 was going to AV1 with 400mb AV1.webm with Quantizer 30 and MAX Speed. what?
I Found Quantizer Encoding is Totally Useless to Reduce Size without Losing Quality. I Use Only Bitrate Encoding that is Much Smaller Encoding.
I Hope Bitrate Encoding will add for rav1e Gui. Can You?

Add downscaling option

It would be handy to be able to encode in lower resolutions than the input file.

A nice implementation would be to specify a scaling factor (1.5, 2, 3 etc.), a horizontal resolution or vertical resolution. The other two variables would adjust based on the third while keeping the aspect ration. This could be implemented using ffmpeg's -vf scale= (see https://trac.ffmpeg.org/wiki/Scaling) for example.

Invalid Argument

I'm running version 1.0.2722 of rav1e and the encoder returns this error:
Found argument '-p' which wasn't expected, or isn't valid in this context

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.