aboutsummaryrefslogtreecommitdiff
path: root/blog/2022-07-30-flac-to-opus.org
diff options
context:
space:
mode:
Diffstat (limited to 'blog/2022-07-30-flac-to-opus.org')
-rw-r--r--blog/2022-07-30-flac-to-opus.org170
1 files changed, 89 insertions, 81 deletions
diff --git a/blog/2022-07-30-flac-to-opus.org b/blog/2022-07-30-flac-to-opus.org
index df069b0..5d9d291 100644
--- a/blog/2022-07-30-flac-to-opus.org
+++ b/blog/2022-07-30-flac-to-opus.org
@@ -1,67 +1,72 @@
-+++
-date = 2022-07-30
-title = "Recursive Command-Line FLAC to Opus Conversion"
-description = "A retrospective on how I recursively converting my FLAC file music library to OPUS with opusenc."
-+++
-
-## Converting FLAC to OPUS
-
-I am currently rebuilding my music library from scratch so that I can
-effectively archive all the music I own in the [FLAC file
-format](https://en.wikipedia.org/wiki/FLAC), a lossless audio codec.
-
-However, streaming FLAC files outside the home can be difficult due to the
-size of the files, especially if you're using a weak connection.
-
-So, in order to archive the music in a lossless format and still be able to
-stream it easily, I opted to create a copy of my FLAC files in the [Opus audio
-codec](https://en.wikipedia.org/wiki/Opus_(audio_format)). This allows me to
-archive a quality, lossless version of the music and then point my streaming
-service to the smaller, stream-ready version.
-
-### Dependencies
-
-The process I follow utilizes the `opus-tools` package in Ubuntu. Before
+#+title: Recursive Command-Line FLAC to Opus Conversion
+#+date: 2022-07-30
+
+** Converting FLAC to OPUS
+:PROPERTIES:
+:CUSTOM_ID: converting-flac-to-opus
+:END:
+I am currently rebuilding my music library from scratch so that I can
+effectively archive all the music I own in the
+[[https://en.wikipedia.org/wiki/FLAC][FLAC file format]], a lossless
+audio codec.
+
+However, streaming FLAC files outside the home can be difficult due to
+the size of the files, especially if you're using a weak connection.
+
+So, in order to archive the music in a lossless format and still be able
+to stream it easily, I opted to create a copy of my FLAC files in the
+[[https://en.wikipedia.org/wiki/Opus_(audio_format)][Opus audio codec]].
+This allows me to archive a quality, lossless version of the music and
+then point my streaming service to the smaller, stream-ready version.
+
+*** Dependencies
+:PROPERTIES:
+:CUSTOM_ID: dependencies
+:END:
+The process I follow utilizes the =opus-tools= package in Ubuntu. Before
proceeding, install the package:
-```sh
+#+begin_src sh
sudo apt install opus-tools
-```
+#+end_src
-If you want to use a different conversion method, such as `ffmpeg` or `avconv`,
-simply install that package instead.
+If you want to use a different conversion method, such as =ffmpeg= or
+=avconv=, simply install that package instead.
-### Conversion Process
+*** Conversion Process
+:PROPERTIES:
+:CUSTOM_ID: conversion-process
+:END:
+The script I'm using is stored in my home directory, but feel free to
+create it wherever you want. It does not need to be in the same
+directory as your music files.
-The script I'm using is stored in my home directory, but feel free to create it
-wherever you want. It does not need to be in the same directory as your music
-files.
-
-```sh
+#+begin_src sh
cd ~ && nano transform.sh
-```
+#+end_src
-Once you have your new bash script opened in an editor, go ahead and paste the
-following logic into the script.
+Once you have your new bash script opened in an editor, go ahead and
+paste the following logic into the script.
-You **MUST** edit the following variables in order for it to work:
+You *MUST* edit the following variables in order for it to work:
-- `source`: The source directory where your FLAC files are stored.
-- `dest`: The destination directory where you want the resulting Opus files to
-be stored.
+- =source=: The source directory where your FLAC files are stored.
+- =dest=: The destination directory where you want the resulting Opus
+ files to be stored.
-You **MAY** want to edit the following variables to suit your needs:
+You *MAY* want to edit the following variables to suit your needs:
-- `filename`: If you are converting to a file format other than Opus, you'll
-need to edit this so that your resulting files have the correct filename
-extension.
-- `reldir`: This variable can be edited to strip out more leading directories in
-the file path. As you'll see later, I ignore this for now and simply clean it up
-afterward.
-- `opusenc`: This is the actual conversion process. You may want to edit the
-bitrate to suit your needs. I set mine at 128 but some prefer 160 or higher.
+- =filename=: If you are converting to a file format other than Opus,
+ you'll need to edit this so that your resulting files have the correct
+ filename extension.
+- =reldir=: This variable can be edited to strip out more leading
+ directories in the file path. As you'll see later, I ignore this for
+ now and simply clean it up afterward.
+- =opusenc=: This is the actual conversion process. You may want to edit
+ the bitrate to suit your needs. I set mine at 128 but some prefer 160
+ or higher.
-```sh
+#+begin_src sh
#!/bin/bash
## - The IFS takes care of spaces in file and dirnames
## - your folders may vary
@@ -123,52 +128,55 @@ opusenc --vbr --bitrate 128 --date "$DATE" \
## just for testing
# sleep 1
done
-```
+#+end_src
-Once you're done, simply save the file and exit your editor. Don't forget to
-enable execution of the script:
+Once you're done, simply save the file and exit your editor. Don't
+forget to enable execution of the script:
-```sh
+#+begin_src sh
chmod +x transform.sh
-```
+#+end_src
Finally, you may now run the script:
-```sh
+#+begin_src sh
./transform.sh
-```
-
-If you used `opusenc`, you'll see the conversions happen within the terminal as
-it progresses.
-You will also see variables printed if you uncommented any of the bash
-script's comments.
-
-### Cleanup
-
-As I noted above, I didn't customize my `reldir` variable in the script, which
-caused my output directory to be `/mnt/music/library/archives` instead of
-`/mnt/music/library`. So, I moved the output up one level and deleted the
-accidental directory.
-
-```sh
+#+end_src
+
+If you used =opusenc=, you'll see the conversions happen within the
+terminal as it progresses. You will also see variables printed if you
+uncommented any of the bash script's comments.
+
+*** Cleanup
+:PROPERTIES:
+:CUSTOM_ID: cleanup
+:END:
+As I noted above, I didn't customize my =reldir= variable in the script,
+which caused my output directory to be =/mnt/music/library/archives=
+instead of =/mnt/music/library=. So, I moved the output up one level and
+deleted the accidental directory.
+
+#+begin_src sh
cd /mnt/music/library
mv archives/* .
rm -rf archives
-```
-
-### Check the Resulting Size
+#+end_src
-If you want to see what kind of file size savings you've gained, you can always
-use the `du` command to check:
+*** Check the Resulting Size
+:PROPERTIES:
+:CUSTOM_ID: check-the-resulting-size
+:END:
+If you want to see what kind of file size savings you've gained, you can
+always use the =du= command to check:
-```sh
+#+begin_src sh
cd /mnt/music
du -h --max-depth=1 .
-```
+#+end_src
In my case, my small library went from 78GB to 6.3GB!
-```txt
+#+begin_src txt
78G ./archives
6.3G ./library
-```
+#+end_src