media-utils

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Media Utilities

媒体实用工具

Internal utilities for media assembly. Used by producer skills.
These scripts wrap FFmpeg to provide reliable media operations.
用于媒体合成的内部实用工具,供生产者类Skill调用。
这些脚本封装FFmpeg以提供可靠的媒体处理操作。

Prerequisites

前提条件

  • FFmpeg must be installed:
    brew install ffmpeg
    (macOS) or
    apt install ffmpeg
    (Linux)
  • Check with:
    python3 check_ffmpeg.py
  • 必须安装FFmpeg
    brew install ffmpeg
    (macOS)或
    apt install ffmpeg
    (Linux)
  • 验证安装:
    python3 check_ffmpeg.py

Available Utilities

可用工具

audio_concat.py

audio_concat.py

Concatenate multiple audio files into one.
bash
undefined
将多个音频文件拼接为一个文件。
bash
undefined

Simple concatenation

简单拼接

python3 audio_concat.py -i intro.wav segment1.wav outro.wav -o podcast.mp3
python3 audio_concat.py -i intro.wav segment1.wav outro.wav -o podcast.mp3

With crossfade between clips

片段间添加交叉淡入淡出

python3 audio_concat.py -i track1.wav track2.wav --crossfade 2.0
python3 audio_concat.py -i track1.wav track2.wav --crossfade 2.0

With normalization

音频归一化

python3 audio_concat.py -i *.wav -o mixed.mp3 --normalize
undefined
python3 audio_concat.py -i *.wav -o mixed.mp3 --normalize
undefined

audio_mix.py

audio_mix.py

Mix voice/narration with background music (with optional ducking).
bash
undefined
将人声/旁白与背景音乐混合(支持可选的音量闪避)。
bash
undefined

Voice + music with ducking (music lowers when voice plays)

人声+音乐(带音量闪避,即人声播放时降低音乐音量)

python3 audio_mix.py --voice narration.wav --music background.mp3 -o final.mp3
python3 audio_mix.py --voice narration.wav --music background.mp3 -o final.mp3

Adjust music volume (default: 0.3)

调整音乐音量(默认值:0.3)

python3 audio_mix.py --voice voice.wav --music music.mp3 --music-volume 0.2
python3 audio_mix.py --voice voice.wav --music music.mp3 --music-volume 0.2

No ducking

不启用音量闪避

python3 audio_mix.py --voice voice.wav --music music.mp3 --no-duck
python3 audio_mix.py --voice voice.wav --music music.mp3 --no-duck

With fade in/out on music

音乐添加淡入淡出效果

python3 audio_mix.py --voice voice.wav --music music.mp3 --fade-in 2 --fade-out 3
undefined
python3 audio_mix.py --voice voice.wav --music music.mp3 --fade-in 2 --fade-out 3
undefined

video_concat.py

video_concat.py

Concatenate multiple video clips.
bash
undefined
拼接多个视频片段。
bash
undefined

Simple concatenation

简单拼接

python3 video_concat.py -i clip1.mp4 clip2.mp4 clip3.mp4 -o final.mp4
python3 video_concat.py -i clip1.mp4 clip2.mp4 clip3.mp4 -o final.mp4

With fade transition

添加淡入淡出过渡效果

python3 video_concat.py -i *.mp4 -o final.mp4 --transition fade --duration 1.0
python3 video_concat.py -i *.mp4 -o final.mp4 --transition fade --duration 1.0

Normalize to 1080p

归一化至1080p分辨率

python3 video_concat.py -i *.mp4 -o final.mp4 --resolution 1080p
python3 video_concat.py -i *.mp4 -o final.mp4 --resolution 1080p

Available transitions: fade, dissolve, wipeleft, wiperight, slideup, slidedown

可用过渡效果:fade(淡入淡出)、dissolve(溶解)、wipeleft(左擦除)、wiperight(右擦除)、slideup(上滑动)、slidedown(下滑动)

undefined
undefined

video_audio_merge.py

video_audio_merge.py

Add audio track(s) to video.
bash
undefined
为视频添加音轨。
bash
undefined

Replace video audio

替换视频原有音频

python3 video_audio_merge.py --video clip.mp4 --audio voiceover.mp3 -o final.mp4
python3 video_audio_merge.py --video clip.mp4 --audio voiceover.mp3 -o final.mp4

Add voice + music with ducking

添加人声+音乐(带音量闪避)

python3 video_audio_merge.py --video clip.mp4 --voice narration.wav --music bg.mp3
python3 video_audio_merge.py --video clip.mp4 --voice narration.wav --music bg.mp3

Mix with existing video audio

与视频原有音频混合

python3 video_audio_merge.py --video clip.mp4 --audio music.mp3 --mix
python3 video_audio_merge.py --video clip.mp4 --audio music.mp3 --mix

Audio sync offset

音频同步偏移

python3 video_audio_merge.py --video clip.mp4 --audio audio.mp3 --offset 0.5
undefined
python3 video_audio_merge.py --video clip.mp4 --audio audio.mp3 --offset 0.5
undefined

video_strip_audio.py

video_strip_audio.py

Remove audio from video files (for replacing with custom audio).
bash
undefined
移除视频文件中的音频(用于替换为自定义音频)。
bash
undefined

Strip audio from single file

移除单个文件的音频

python3 video_strip_audio.py -i video.mp4 -o silent_video.mp4
python3 video_strip_audio.py -i video.mp4 -o silent_video.mp4

Strip audio from multiple files (batch mode)

批量移除多个文件的音频

python3 video_strip_audio.py -i clip1.mp4 clip2.mp4 clip3.mp4
python3 video_strip_audio.py -i clip1.mp4 clip2.mp4 clip3.mp4

Strip with custom output directory

移除音频并输出到指定目录

python3 video_strip_audio.py -i *.mp4 --output-dir ./silent/
python3 video_strip_audio.py -i *.mp4 --output-dir ./silent/

Re-encode video instead of copying

重新编码视频而非直接复制流

python3 video_strip_audio.py -i video.mp4 --reencode
undefined
python3 video_strip_audio.py -i video.mp4 --reencode
undefined

check_ffmpeg.py

check_ffmpeg.py

Verify FFmpeg installation.
bash
python3 check_ffmpeg.py
验证FFmpeg安装情况。
bash
python3 check_ffmpeg.py

✅ FFmpeg is available!

✅ FFmpeg已可用!

ffmpeg version 6.0 ...

ffmpeg版本 6.0 ...

undefined
undefined

report_to_pdf.py

report_to_pdf.py

Convert Markdown reports to professional PDF documents.
bash
undefined
将Markdown报告转换为专业PDF文档。
bash
undefined

Basic conversion

基础转换

python3 report_to_pdf.py -i analysis.md -o analysis.pdf
python3 report_to_pdf.py -i analysis.md -o analysis.pdf

With custom title and executive style

自定义标题与高管风格

python3 report_to_pdf.py -i report.md -o report.pdf --title "Q4 Market Analysis" --style executive
python3 report_to_pdf.py -i report.md -o report.pdf --title "Q4市场分析" --style executive

Technical documentation with table of contents

带目录的技术文档

python3 report_to_pdf.py -i docs.md -o docs.pdf --style technical --toc

**Available styles:**
| Style | Description |
|-------|-------------|
| `business` | Clean, professional (default) |
| `executive` | Executive summary with larger fonts |
| `technical` | Technical documentation |
| `minimal` | Minimal styling, maximum content |

**Requires:** `pip install markdown weasyprint`
python3 report_to_pdf.py -i docs.md -o docs.pdf --style technical --toc

**可用样式:**
| 样式 | 说明 |
|-------|-------------|
| `business` | 简洁专业风格(默认) |
| `executive` | 高管摘要风格,字体更大 |
| `technical` | 技术文档风格 |
| `minimal` | 极简风格,内容优先 |

**依赖安装:** `pip install markdown weasyprint`

Usage by Producer Skills

生产者类Skill调用方式

These utilities are called by the producer skills to assemble final outputs:
python
from pathlib import Path
import subprocess
import sys
这些工具由生产者类Skill调用以合成最终输出内容:
python
from pathlib import Path
import subprocess
import sys

Get path to media-utils

获取media-utils的路径

UTILS_PATH = Path(file).parent.parent.parent / "media-utils" / "scripts"
def concat_audio(files: list, output: str): cmd = [ sys.executable, str(UTILS_PATH / "audio_concat.py"), "-i", *files, "-o", output ] subprocess.run(cmd, check=True)
undefined
UTILS_PATH = Path(file).parent.parent.parent / "media-utils" / "scripts"
def concat_audio(files: list, output: str): cmd = [ sys.executable, str(UTILS_PATH / "audio_concat.py"), "-i", *files, "-o", output ] subprocess.run(cmd, check=True)
undefined

Output Formats

输出格式

UtilityDefault OutputOptions
audio_concatMP3Inherits from input
audio_mixMP3MP3
video_concatMP4 (H.264)MP4
video_audio_mergeMP4 (H.264)MP4
video_strip_audioMP4 (copy)MP4
工具默认输出格式可选格式
audio_concatMP3继承自输入格式
audio_mixMP3MP3
video_concatMP4(H.264编码)MP4
video_audio_mergeMP4(H.264编码)MP4
video_strip_audioMP4(直接复制流)MP4