Files
bilibili-merge/README.md
2026-01-04 01:46:39 +08:00

71 lines
2.2 KiB
Markdown

# bilibili-merge
Merge bilibili downloaded videos with audio files.
## Install
```bash
cargo install bilibili-merge
```
## Usage
```bash
bilibili-merge [OPTIONS] [PATH]
```
### Arguments
- `PATH` - Path to the directory containing video and audio files (default: current directory)
### Options
- `-n, --dry-run` - Dry run mode: show what would be done without actually doing it
- `-f, --force` - Force overwrite existing files
- `-h, --help` - Print help information
## How It Works
1. **Video File Selection**: The tool automatically finds the **largest file** (by file size) in the specified directory and uses it as the video file. This means:
- If there's only one video file, it will be selected
- If there are multiple files, the largest one (by size) will be selected
- Only files (not directories) are considered
- The selection is based on file size, not file name
2. **Audio File Matching**: The tool looks for an audio file with the same base name as the video file, but with `.m4a` extension. For example:
- Video: `video.mp4` → Audio: `video.m4a`
- Video: `episode_01.flv` → Audio: `episode_01.m4a`
3. **Processing Steps**:
- Converts the audio file from M4A to AAC format
- Renames the original video file to `original.<extension>` as a backup
- Merges the video and audio into a single file
- The merged file is saved as `<original_name>.mp4` (always MP4 format, regardless of input format)
## Examples
```bash
# Merge video and audio in current directory
bilibili-merge
# Merge video and audio in a specific directory
bilibili-merge /path/to/video/directory
# Dry run to see what would be done
bilibili-merge -n
# Force overwrite existing files
bilibili-merge -f
# Combine options
bilibili-merge -n -f /path/to/directory
```
## Notes
- The tool requires `ffmpeg` to be installed and available in your PATH
- By default, the tool will **not** overwrite existing files (use `-f` to force)
- The original video file is automatically backed up as `original.<extension>`
- The output file is always in MP4 format, regardless of the input video format
- In dry-run mode, you'll get a shell script that you can review or execute manually