Browsed by
Tag: encode

New rav1e build and updated rav1e_gui (2018/10/23)

New rav1e build and updated rav1e_gui (2018/10/23)

Hi everyone,

Today, I’ve compiled the latest rav1e source code, bringing it to commit 6bfa0aa:

rav1e 2018-10-23

I’m releasing 2 versions of today’s build. One which have compound mode turned on by default and another one with it disabled. The source code originally has this disabled (reorder=false). You can download both versions here:

I’ve also updated rav1e_gui to include this new release. It uses the compound-enabled version:

rav1e GUI 2018-10-23

You can download it here:

I’ve started a distributed encoding task so I should have a sample encode with this version pretty soon. As usual, my encoding parameters are: –quantizer 175 -s 0 which provides excellent results with a low file size.

Enjoy!

New rav1e build and updated rav1e_gui (2018/10/22)

New rav1e build and updated rav1e_gui (2018/10/22)

Hi everyone,

Today, I’ve compiled the latest rav1e source code, bringing it to commit c69ac5c:

rav1e 2018-10-22

You can download it here:

I’ve also updated rav1e_gui to include this new release:

rav1e GUI 2018-10-22

You can download it here:

Enjoy!

Distributed AV1 Video Encoding

Distributed AV1 Video Encoding

Hi everyone,

Yesterday, I began working on writing code to encode video files to AV1 in a distributed computing fashion using my private BOINC server. I wrote some PHP code and developed a Windows Forms software that will submit the video files to the distributed computing server so that it can send jobs to connected machines.

The encoding software I’m using is rav1e. This software is currently single-threaded, which means that encoding videos will take some time, especially when using the –speed 0 flag, which is the slowest mode available nut gives the best quality.

My solution at this time consists on splitting the video files into 1-second segments and then launching a rav1e encoding task for each part, each in one CPU thread. This significantly speeds up the encoding process because it can simultaneously encode several parts depending on the CPU being used. For example, if we split a video into a 1-second segment, and you have an AMD Ryzen 7 2700X CPU, this means that you can process 16 seconds at a time.

Preparing the input video file

As I mentioned at the start, I wrote a Windows Forms software that will handle the video submission process. The software will first call ffmpeg to split the video into 1-second segments, extract the audio file and encode it to Opus using the desired bitrate, and then it will submit the 1-second segment video files to the BOINC server, generating a task for each file:

av1_task_submitter

I’m submitting the video files using a quantizer setting of 175 and a speed of 0.

Once the tasks are generated, comes the processing.

AV1 encoding:

The BOINC client is the software responsible for contacting the server to retrieve the splitted files and initiate the tasks. It will download the rav1e executable from the BOINC server, the input video file, and will start the encoder. This process takes about 2 hours and 30 minutes on an AMD Ryzen 7 2700X CPU while for my Intel i7-3610QM and 4700MQ it took more than 3 hours. Still, the advantage is that I get to encode multiple segments at once, speeding the encoding of the source video significantly.

Here, you can see the encoding tasks from 4 of my machines:

rav1e BOINC Tasks
rav1e BOINC Tasks

Result files:

Once the encoding tasks are finished, they are sent back to the BOINC server which will mark the task as completed and will move the results to a defined folder:

.ifv segments
.ifv segments

Merging the files:

The final step is to merge the result files and also merge the audio file. For this, I wrote a simple bash script that calls ffmpeg’s concat function and then merges the concatenated file with the audio to generate one final .webm file. WebM is s container compatible with AV1 video files as well as Opus audio tracks:

Script to merge the .ifv files into the final .webm file
Script to merge the .ifv files into the final .webm file

The script takes 3 arguments. The first one is the list of files to concatenate, the second is the Opus audio file and the third and final one is the name for the output file.

When we run it, we should see the following at the end:

The merging script after running
The merging script after running

The final file:

We can see the final encoded .webm file at the location we typed when we ran the above script:

The final .webm file
The final .webm file

We can also check the file using MediaInfo:

Mediainfo
Mediainfo

And that’s it! BOINC is really useful in this case as I can encode multiple files and the server will handle all of the processing. The only manual part is where we run the merging script to generate the output file. However, it really speeds encoding by a lot. This is, until rav1e becomes multithreading, at which point, he BOINC server can still be used by changing the app to a multi-threading one.

Hope you enjoyed reading this post!

Downloading ffmpeg for rav1e GUI

Downloading ffmpeg for rav1e GUI

Hi everyone,

Today, I’ll show you the steps to download ffmpeg for the rav1e_gui encoding tool, which requires this to pre-process and post-process video files when encoding them to the new AV1 video format.

Below are the steps:

1. Navigate to https://ffmpeg.zeranoe.com/builds/

ffmpeg Step 1

2. Select the nightly build which is the first one shown in “Version”. Select the 64-bit Windows version if you have a 64-bit machine, and select “Static” in the Linking column. Then, click on “Download Build”:

ffmpeg general step 2

3. Press “Save”:

ffmpeg general step 3

4. When the download finishes, press “Open”:

ffmpeg general step 4

5. Go to the ffmpeg folder:

ffmpeg general step 5

6. Go to the “bin” folder:

ffmpeg general step 6

7. Copy the “ffmpeg.exe” executable:

ffmpeg general step 7

8. Past the “ffmpeg.exe” executable in the location where you extracted rav1e_gui:

rav1e ffmpeg

9. That’s it!

Enjoy!

Downloading ffmpeg (General instructions)

Downloading ffmpeg (General instructions)

Hi everyone,

Today, I’ll show you the steps to download ffmpeg in your Windows machine. This is needed for tools like rav1e_gui, which uses ffmpeg to pre-process and post-process video files when encoding them to the new AV1 video format.

Below are the steps:

1. Navigate to https://ffmpeg.zeranoe.com/builds/

ffmpeg Step 1
ffmpeg Step 1

2. Select the nightly build which is the first one shown in “Version”. Select the 64-bit Windows version if you have a 64-bit machine, and select “Static” in the Linking column. Then, click on “Download Build”:

ffmpeg step 2
ffmpeg step 2

3. Press “Save”:

ffmpeg step 3
ffmpeg step 3

4. When the download finishes, press “Open”:

ffmpeg step 4
ffmpeg step 4

5. Go to the ffmpeg folder:

ffmpeg step 5
ffmpeg step 5

6. Go to the “bin” folder:

ffmpeg step 6
ffmpeg step 6

7. Extract the “ffmpeg.exe” executable to your preferred location:

ffmpeg step 7
ffmpeg step 7

8. That’s it!

Enjoy!

rav1e AV1 encoding tests – 10/15/2018

rav1e AV1 encoding tests – 10/15/2018

Hi everyone,

Today, I’ve been performing some AV1 encoding tests using the rav1e encoder.

You need an AV1-compatible web browser to see the videos below.

The following videos were encoded using speed 10 and different quantizer settings to compare the quality. rav1e is in constant development so I’ll be performing lots of tests. The following uses the appveyor build from yesterday. I’ve managed to install the dependencies needed to build myself rav1e when new commits comes out, so expect my own builds and more video tests from me!

The original video is a Mario Kart 8 Deluxe clip that I captured using an AverMedia U3 capture card and using OBS with the H264 lossless profile. This video was then converted to y4m using ffmpeg and lastly processed using rav1e.exe.

–quantizer 200 -s 10

–quantizer 175 -s 10

–quantizer 160 -s 10

–quantizer 150 -s 10

Notice that the lower the quantizer setting, the better the footage is. These videos were all using the speed 10 quality setting. I’m currently encoding using the default speed of 3. I’ve tried using speed 0 too but it is insanely slow!!! I’ll try to run an encoding to test but it will take some time. rav1e.exe is currently single-threaded.

Rip your Audio CD to Opus using my latest opusenc.exe build with Exact Audio Copy

Rip your Audio CD to Opus using my latest opusenc.exe build with Exact Audio Copy

Hi everyone,

Today, I’d like to show you the steps to rip your Audio CD to Opus using Exact Audio Copy and my latest opusenc.exe build.

Why use my opusenc.exe build?

  1. First, it includes the newly added –tracknumber argument which enables you to easily pass the track number to the opus file.
  2. Second, it is not needed to specify the output filename, as it will use the same input name. For Exact Audio Copy, this means that you only need to add the source and not the destination.
  3. Third, it includes all of the latest commits performed to the opus, libopusenc, and opus-tools, so the build is up to date.

You can read more about the new features in opusenc.exe in yesterday’s post.

Please note that my build is only for 64bit systems. If you PC runs a 64-bit version of Windows, then you can proceed with these instructions.

Downloading opusenc.exe

You can download my latest build of opusenc.exe by clicking here. Then, you need to extract opusenc.exe to a location of your choice.

Setting up Exact Audio Copy

1. Launch Exact Audio Copy:

EAC Opus 1

2. Go to the “EAC” menú and select “Compression options”:

EAC Opus 2

3. Now, head to the “External Compression” tab if you’re not there:

EAC Opus 3

4. In “Parameter passing scheme:” select “User Defined Encoder”. Then, in “Use file extension”, write “.opus”:

EAC Opus 4

5. Next, browse for the opusenc.exe executable in the place where you extracted it:

EAC Opus 5

6. Next comes the command-line options. You’ll write the following line:

--music --bitrate 64 --artist "%artist%" --title "%title%" --album "%albumtitle%" --date "%year%" --genre "%genre%" --tracknumber %tracknr1% --comment "COMMENT=%comment%" %hascover%--picture "%coverfile%"%hascover% %source%
EAC Opus 6

7. Finally, press “OK”:

EAC Opus 7

You’re done!

With these easy steps, you’ll now be able to rip and encode your audio CD’s to the Free and Open Source Opus format!

Enjoy!