mirror of
https://github.com/kageurufu/steamdeck_startup_animations.git
synced 2024-11-16 15:49:20 +01:00
92 lines
3.2 KiB
Markdown
92 lines
3.2 KiB
Markdown
|
# steamdeck_startup_animations
|
||
|
A collection of steamdeck startup animations, plus a script to randomize your startup on each boot
|
||
|
|
||
|
# So far, I've made boot animations from the following consoles:
|
||
|
|
||
|
* dreamcast
|
||
|
* ps1
|
||
|
* ps2
|
||
|
* ps4
|
||
|
* switch
|
||
|
* gamecube
|
||
|
* ps2
|
||
|
* switchfirst (first boot animation)
|
||
|
* switch (regular boot animation)
|
||
|
* xbox
|
||
|
* xbox 360
|
||
|
* xbox one
|
||
|
|
||
|
# Installation
|
||
|
|
||
|
```sh
|
||
|
curl -o - https://raw.githubusercontent.com/kageurufu/steamdeck_startup_animations/main/install.sh | bash -
|
||
|
```
|
||
|
|
||
|
If you're (justifiably) not a fan of `curl | bash`, you can run this:
|
||
|
|
||
|
```sh
|
||
|
mkdir -p "$HOME/homebrew"
|
||
|
mkdir -p "$HOME/.config/systemd/user"
|
||
|
git clone https://github.com/kageurufu/steamdeck_startup_animations "$HOME/homebrew/startup_animations"
|
||
|
ln -sf "$HOME/homebrew/startup_animations/randomize_deck_startup.service" "$HOME/.config/systemd/user/randomize_deck_startup.service"
|
||
|
systemctl --user daemon-reload
|
||
|
systemctl --user enable --now randomize_deck_startup.service
|
||
|
```
|
||
|
|
||
|
# Uninstallation
|
||
|
|
||
|
```sh
|
||
|
bash $HOME/homebrew/startup_animations/uninstall.sh
|
||
|
```
|
||
|
|
||
|
# Making an animation (somewhat advanced)
|
||
|
|
||
|
I used youtube-dl to grab the best video and audio tracks from youtube, and then ffmpeg to merge them, resizing down to fit the Deck's 1280x800 screen. Then I use `truncate` to make the file the right size.
|
||
|
|
||
|
This all does work on the steamdeck
|
||
|
|
||
|
### Getting the dependencies
|
||
|
|
||
|
```sh
|
||
|
python3 -m ensurepip
|
||
|
~/.local/bin/pip install --user youtube-dl
|
||
|
```
|
||
|
|
||
|
### Creating the animation
|
||
|
|
||
|
```sh
|
||
|
# Get ps1.webm and ps1.m4a. Your file extensions may differ here
|
||
|
~/.local/bin/youtube-dl -f bestvideo -o 'ps1.%(ext)s' https://www.youtube.com/watch?v=1JwbfIi5Uio
|
||
|
~/.local/bin/youtube-dl -f bestaudio -o 'ps1.%(ext)s' https://www.youtube.com/watch?v=1JwbfIi5Uio
|
||
|
|
||
|
# Convert the video from whatever input formats to a webm video in VP9 encoding, with vorbis encoded audio
|
||
|
ffmpeg -i ps1.webm -i ps1.m4a \
|
||
|
-map 0:v:0 -map 1:a:0 \
|
||
|
-filter:v "scale='min(1280,iw)':min'(800,ih)':force_original_aspect_ratio=decrease,pad=1280:800:(ow-iw)/2:(oh-ih)/2" \
|
||
|
-c:v vp9 \
|
||
|
-c:a libvorbis \
|
||
|
my_deck_startup_ps1.webm
|
||
|
|
||
|
# Make sure the generated file is less than 1840847B here
|
||
|
# Mine was `389670`, plenty small enough
|
||
|
stat -c '%s' my_deck_startup_ps1.webm
|
||
|
|
||
|
truncate -s 1840847 my_deck_startup_ps1.webm
|
||
|
```
|
||
|
|
||
|
The ffmpeg command is a bit confusing, so heres a breakdown
|
||
|
|
||
|
* `-i ps1.webm -i ps1.m4a`
|
||
|
Load both the video and audio files we downloaded.
|
||
|
* `-map 0:v:0 -map 1:a:0`
|
||
|
Only use the first video stream from the first file, and first audio stream from the second.
|
||
|
This prevents having multiple video or audio streams in the final file
|
||
|
* `-filter:v "scale='min(1280,iw)':min'(800,ih)':force_original_aspect_ratio=decrease,pad=1280:800:(ow-iw)/2:(oh-ih)/2"`
|
||
|
This is most confusing part, basically we're resizing the video to fit 1280x800
|
||
|
`min'(1280,iw)':min'(800,ih)'` ensures the target size is never upscaled
|
||
|
`force_original_aspect_ratio=decrease` scales to fit within a given size, keeping the original aspect ratio
|
||
|
`pad=1280:800:(ow-iw)/2:(oh-ih)/2` pad the video size to 1280:800, centering the original video. This is optional and I might not use it in the future
|
||
|
* `-c:v vp9 c:a libvorbis` Select our output VP9 / vorbis codecs
|
||
|
|
||
|
|