My workflow for making playlist videos on YouTube
I've recently started making playlist/full album videos on YouTube and thought I would document my workflow for that somewhere. This is very reliant on the way I personally listen to music (locally saved files via foobar2000): if you listen to music some other way this might not be that useful, but you can get some ideas from here.
Song selection
I generally just select the songs going into the playlist by listening to music normally and adding them to a foobar2000 playlist. Albums are already categorized, so I don't need to worry about those.
File consolidation
I then use foobar's built in file operations (right click -> File Operations) to copy all the files to the same folder. For albums, this is generally not necessary, but it could be for albums with multiple discs that I keep on separate folders.
A few things I tend to keep in mind at this point:
My current process was built for albums, so I never had to worry about keeping the encoding the same. For playlists, encoding may be mixed (in my case I have both FLAC and MP3, on top of VBR vs CBR): in that case I generally try to transcode to MP3 320K. The ideal solution would be to write your ffmpeg script (see later) to accept all the possible encodings in your collection, to avoid transcoding lossless files multiple times. But you're also then going to upload that shit to Youtube or Twitter so who give a shit
If I have some order in mind, try to reflect that order in the lexicographical order for the filenames. For albums generally just putting the padded track number (e.g. 01) at the start is enough. For playlists, you can use the foobar %list_index% title formatting property instead.
Converting audio to video
For now I'm not that worried about the visuals, so I generally just pick some representative image (like an album cover), throw it in the folder with the music as a Cover.jpg and then run the following batch script:
(for %%i in (*.mp3) do @echo file '%%i') > mylist.txt
.\ffmpeg.exe -loop 1 -framerate 5 -i Cover.jpg -f concat -safe 0 -i mylist.txt -r 10 -vf scale=1080:1080 -c:v libx264 -preset medium -tune stillimage -crf 18 -c:a libopus -b:a 128K -shortest -fflags +shortest -max_interleave_delta 100M -pix_fmt yuv420p fullalbum.mp4
This is just the official FFMPEG documentation suggestion for concatenating audio files. It uses the Cover.jpg as video input (it loops the image at the framerate defined by -framerate, so you would adjust that if you're using real video) and the concatenated audio files as audio input. The codecs chosen were just what I ended up with for making videos compatible with YouTube and Twitter, and the shortest and max_interleave_delta flags prevent the video from having some silence at the end of it (e.g. https://www.youtube.com/watch?v=lh6AmkPe57E) due to how the video and audio interleaving works. For TODOS, I'd probably like to adjust that to allow for video that isn't just a square album cover at some point.
Description
With the video generated, it's also good to generate a description that lists the track order. To do this I use the Text Tools foobar extension: I created a command that lets me copy %tracknumber%. %title%,%length_seconds%
(e.g. "02. Metatron,492") from each track, and then just paste those into a spreadsheet which you can clone from here. The spreadsheet is straightforward: it just separates the text from the duration, accumulates the durations, converts the durations into HH:MM:SS and then concatenates that duration with the text. This can be adjusted according to your needs: for multiple artist albums, for instance, I prefer to use %artist% | %title%,%length_seconds%
in order to have each artist's name in the tracklist.
This is mostly just archiving the process for myself, but it'd be fun if it was useful to someone else.