yaatv turns audio and cover art into an optimized video for YouTube and other upload sites.
yaatv audio.flac cover.jpgGive it audio. Give it artwork. Get a video you can upload.
Browser converter: https://convert.yaatv.org
Download the ZIP for your computer from the latest release:
https://github.com/yaatv/yaatv/releases/latest
Use one of these release assets:
- Windows x64:
yaatv-windows-x64.zip - Linux x64:
yaatv-linux-x64.zip - macOS x64:
yaatv-macos-x64.zip - macOS arm64:
yaatv-macos-arm64.zip
You can ignore GitHub's "Source code (zip)" and "Source code (tar.gz)" files unless you specifically want the code.
On Windows, drag one audio file and one cover image onto yaatv.exe for a
default video next to the audio file.
Use PowerShell when you want to choose the output file, canvas, background, or padding.
Open PowerShell or a terminal in the extracted folder, install the local media tools once, check setup, then create a video.
Windows:
.\yaatv.exe --install-ffmpeg
.\yaatv.exe --scry
.\yaatv.exe audio.flac cover.jpgLinux:
chmod +x ./yaatv-linux
./yaatv-linux --install-ffmpeg
./yaatv-linux --scry
./yaatv-linux audio.flac cover.jpgmacOS:
chmod +x ./yaatv-macos
./yaatv-macos --install-ffmpeg
./yaatv-macos --scry
./yaatv-macos audio.flac cover.jpgUse yaatv-macos-arm64 instead when you download the Apple Silicon ZIP.
Choose an output file:
yaatv -a episode.wav -i cover.jpg -o output.mp4Use embedded cover art:
yaatv -a track.flacOpen the output folder after a successful encode:
yaatv -a track.flac -i cover.jpg --open-folderCreate a square or vertical video:
yaatv -a track.flac -i cover.jpg --aspect square
yaatv -a short.wav -i cover.jpg --aspect 9:16Use a larger canvas:
yaatv -a mix.flac -i cover.jpg --resolution 1440pChoose a background:
yaatv -a track.flac -i cover.jpg --bg-color "#202020"
yaatv -a track.flac -i cover.jpg --bg-image background.jpg
yaatv -a track.flac -i cover.jpg --bg-blurCreate a solid-color video without cover art:
yaatv -a track.flac --bg-color "#202020"Create a large MOV master:
yaatv -a track.flac -i cover.jpg -o master.movAdd a short silence pad:
yaatv -a track.flac -i cover.jpg --pad 2- yaatv keeps cover art from stretching.
- Audio with embedded cover art can be used without
-i. - Square album art works well for square videos.
- WAV, FLAC, and high-bitrate AAC are good source choices.
- JPG, PNG, and static WebP are good cover choices.
- Animated images are rejected.
- Common source audio metadata (such as title, artist, album, and date) is preserved into video outputs where supported.
- The planned output file appears before encoding starts.
- yaatv shows simple progress while encoding and verifying.
- Existing output files require confirmation before replacement.
- Warnings appear when source audio, image size, or file extensions may be less than ideal.
| Input type | Supported extensions |
|---|---|
| Audio | .aac, .aiff, .alac, .flac, .m4a, .mp3, .ogg, .opus, .wav, .wma |
| Images | .bmp, .jpeg, .jpg, .png, .tif, .tiff, .webp |
| Output | .mov, .mp4 |
| Option | Purpose |
|---|---|
| Positional files | Use one audio file and one cover image. |
-a, --audio |
Choose the audio file. |
-i, --image |
Choose the cover image. |
-b, --bg-image |
Choose a background image. |
--bg-color |
Choose a background color. |
--bg-blur |
Use a blurred copy of the cover image as the background. |
-o, --output |
Choose an .mp4 or .mov output file. A .mov path creates ProRes MOV output. |
--output-dir |
Choose the folder for the default output filename. |
--resolution |
Choose 1080p, 1440p, or 4k. |
--aspect |
Choose 16:9, square, or 9:16. |
--pad |
Add 0 through 10 seconds of silence at the end. |
--no-warn |
Hide source quality warnings. |
--dry-run |
Print the command without creating a file. |
--verbose |
Show raw encoding output. |
--overwrite |
Replace an existing output file without asking first. |
--open-folder |
Open the output folder after a successful encode. |
--install-ffmpeg |
Install local media tools for yaatv. |
--scry |
Check yaatv, media tools, and output folder setup. |
Run yaatv --scry when setup looks wrong.
If macOS blocks the downloaded executable, allow it from System Settings, or remove the quarantine flag:
xattr -d com.apple.quarantine ./yaatv-macosIf an output file already exists, choose a different output path, confirm
replacement, or use --overwrite deliberately.
Real videos generated by yaatv and uploaded to YouTube:
- Square artwork (4K): Apple ProRes 422
.mov, 4K (3840×2160), 2160×2160 square image padded onto 16:9 canvas, 32-bit.wavaudio. - Full-frame 16:9 (4K): Apple ProRes 422
.mov, 4K (3840×2160), 3840×2160 full-frame image, 32-bit.wavaudio.
Most people should use the release ZIPs. If you prefer a Python install:
python -m pip install "git+https://github.com/yaatv/yaatv.git"
yaatv --versionPython 3.11 or newer is required.
Python installs still need the local media tools. Run:
yaatv --install-ffmpeg
yaatv --scryyaatv is licensed under the GNU General Public License v2 or later (GPL-2.0-or-later).
Standalone release ZIPs include LICENSE, THIRD_PARTY_LICENSES.txt (recording third-party
runtime dependencies and build components), SOURCE.txt, and FFMPEG_BUILD_INFO.txt.
| Package | License | Purpose | Source |
|---|---|---|---|
mutagen |
GPL-2.0-or-later | Audio metadata and tag reading | PyPI |
Pillow |
MIT-CMU / HPND | Cover art dimensions and validation | PyPI |
Install the project with test and build tools:
python -m pip install -e ".[dev]"Run the same checks used by CI:
yaatv --version
python -m yaatv --version
python -m ruff check .
python -m mypy
python -m bandit -c pyproject.toml -r src
python -m piplicenses --packages mutagen pillow --with-urls
python -m pip_audit . --strict
python -m pytest
python -m build
python -m twine check dist/*Contributions are welcome. See CONTRIBUTING.md for setup, workflows, and guidelines.
- Look through good first issues to get started.
- Leave a comment on an issue before starting work to coordinate and avoid duplicate PRs.
- Report bugs or suggest features on the issue tracker.
- See CONTRIBUTORS for recognition of everyone who has helped build and test yaatv.
- Read our CODE_OF_CONDUCT.md before participating.
Tagging a version that starts with v builds the Windows, Linux, macOS x64,
and macOS arm64 assets, generates matching SPDX Software Bills of Materials (.spdx.json),
and attaches them to a GitHub release alongside SHA256SUMS.
git tag v<version>
git push origin main --tags