podcastcut-final-touch
2
总安装量
2
周安装量
#72971
全站排名
安装命令
npx skills add https://github.com/luoyuweidu1/podcastcut-skills --skill podcastcut-final-touch
Agent 安装分布
amp
2
gemini-cli
2
antigravity
2
codex
2
kimi-cli
2
Skill 文档
æå®¢æç»æ¶¦è²
é«äº®ç段 â ç头é¢è§ â 䏻颿²ç头çå°¾ â æ¶é´æ³ç« è â æ é¢ + ç®ä»
â ï¸ å¯å¨æ¶å¿ 须询é®ä¸»é¢æ²
å¨å¼å§ä»»ä½å·¥ä½ä¹åï¼å¿ é¡»å 询é®ç¨æ·ï¼
å¨å¼å§æç»æ¶¦è²ä¹åï¼è¯·æä¾ä»¥ä¸ä¿¡æ¯ï¼
1. **䏻颿²æä»¶è·¯å¾**ï¼ç¨äºç头çå°¾èæ¯é³ä¹ï¼
- ä¾å¦ï¼`/path/to/your/theme-song.mp3`
- 妿ä¸éè¦èæ¯é³ä¹ï¼è¯·åè¯æ
2. **å·²åªè¾å¥½çæå®¢é³é¢è·¯å¾**
- ä¾å¦ï¼`/path/to/podcast_v2.mp3`
3. **ï¼å¯éï¼éå稿æè½¬å½ JSON è·¯å¾**
- ç¨äºåæé«äº®ç段åçææ¶é´æ³
ä¸è¦åè®¾ç¨æ·ä½¿ç¨ä»»ä½ç¹å®ç䏻颿²ï¼ æ¯ä¸ªæå®¢çç头飿 ¼é½ä¸åã
ç头çå°¾è§åï¼éç¨ï¼
| ä½ç½® | æ¶é¿ | ææ |
|---|---|---|
| ç头 | ~15ç§ | 䏻颿²æ¸å ¥ â 人声å¼å§æ¶æ¸åº |
| çå°¾ | ~15ç§ | äººå£°ç»æå â 䏻颿²æ¸å ¥ â æ¸åºç»æ |
å¿«é使ç¨
ç¨æ·: 帮æåæå®¢çæç»æ¶¦è²
ç¨æ·: å 个ç头é¢è§
ç¨æ·: çææ¶é´æ³ç« è
ç¨æ·: final touch
è¾å ¥
- å·²åªè¾å¥½çæå®¢é³é¢/è§é¢ï¼é常æ¯
/podcastcut-editè¾åºççæ¬ï¼ - ï¼å¯éï¼éå稿æè½¬å½JSON
- ï¼å¯éï¼çå¤´èæ¯é³ä¹æä»¶
è¾åº
- ç头é¢è§ – 3-4个é«äº®çæ®µæ¼æ¥å°ç头
- å¸¦èæ¯é³ä¹çç头 – é¢è§ç段é ä¸èæ¯é³ä¹
- æ¶é´æ³ç« è – éåYouTube/æå®¢å¹³å°çç« èå表
- æ é¢å»ºè®® – 3-5个æ é¢é项
- æå®¢ç®ä» – éååå¸çç®ä»ææ¡
æµç¨
0. 询é®ç¨æ·ï¼ä¸»é¢æ²è·¯å¾ãæå®¢é³é¢è·¯å¾ãéå稿路å¾
â
1. åæå
å®¹ï¼æ¨èé«äº®ç段
â
ãç¨æ·éæ© 3-4 ä¸ªçæ®µã
â
2. æåçæ®µ + æ¼æ¥ç头é¢è§
â
3. æ·»å 䏻颿²ç头ï¼~15ç§ï¼æ¸å
¥æ¸åºï¼
â
4. æ·»å 䏻颿²çå°¾ï¼~15ç§ï¼æ¸å
¥æ¸åºï¼
â
5. åæè¯é¢ç»æï¼çææ¶é´æ³ç« è
â
6. çææ é¢å»ºè®®
â
7. çææå®¢ç®ä»
â
宿
ä¸ãé«äº®ç段æ¨è
ä»ä¹æ¯å¥½çé«äº®ç段
| ç¹å¾ | 说æ |
|---|---|
| éå¥ | æåãç®æ´ãæè®°å¿ç¹ç表达 |
| è§ç¹ç¢°æ | ä¸åæè§ç精彩交é |
| æ 绪é«ç¹ | ç¬å£°ãæå¹ãæè®¶çæ¶å» |
| æ¬å¿µ/é©å | 让å¬ä¼æ³ç»§ç»å¬ä¸å»çå 容 |
| æ ¸å¿æ´å¯ | æå®¢ææä»·å¼çè§ç¹æµç¼© |
æ¨èæ ¼å¼
## æ¨èé«äº®ç段
æä»æå®¢ä¸è¯å«äºä»¥ä¸ç²¾å½©ç段ï¼è¯·éæ© 3-4 个ä½ä¸ºç头é¢è§ï¼
| # | æ¶é´ | 说è¯äºº | å
容æè¦ | æ¨èçç± |
|---|------|--------|----------|----------|
| 1 | 15:32-15:58 | åææ | "å·¥ä½çæä¹ä¸æ¯..." | éå¥ï¼æ ¸å¿è§ç¹ |
| 2 | 32:45-33:12 | Maia | "æå½æ¶å°±è§å¾ä¸å¯¹å²..." | æ
äºæ§å¼ºï¼ææ¬å¿µ |
| 3 | 48:20-48:45 | å®å® | "è¿å®å
¨æ¯ä¸¤åäº..." | è§ç¹ç¢°æ |
| 4 | 1:05:30-1:06:00 | åææ | [ç¬] "ä½ è¿ä¸ªæ¯å»å¤ªç»äº" | æ
绪é«ç¹ |
| 5 | 1:18:22-1:18:50 | Maia | "妿鿰鿩..." | å¼åæè |
请åå¤éæ©çç¼å·ï¼å¦ï¼`1, 3, 4` æ `é 1 3 4`
è¯å«è§å
- æ«æè½¬å½ææ¬ï¼å¯»æ¾æåçè¡¨è¾¾ãæ¯å»ãåé®
- æ£æµæ 绪è¯ï¼ç¬ãåãççåã太对äº
- å ³æ³¨è½¬æç¹ï¼ä½æ¯ãå ¶å®ã说å®è¯ãæè§å¾
- è¯å«é奿¨¡å¼ï¼çå¥ãææ¯ã对æ¯ãç±»æ¯
- æ¨è 5-8 个ï¼è®©ç¨æ·é 3-4 个
äºãç头é¢è§å¶ä½
é¢è§ç段è§è
| è§è | 说æ |
|---|---|
| æ°é | 3-4 ä¸ªçæ®µ |
| åçæ®µæ¶é¿ | 10-30 ç§ |
| æ»æ¶é¿ | 30-90 ç§ |
| é¡ºåº | æç²¾å½©ç¨åº¦æåï¼æå¸å¼äººçæ¾ç¬¬ä¸ä¸ª |
FFmpeg çæ®µæ¼æ¥
# 1. æååçæ®µ
ffmpeg -i podcast.mp4 -ss 15:32 -to 15:58 -c copy clip1.mp4
ffmpeg -i podcast.mp4 -ss 32:45 -to 33:12 -c copy clip2.mp4
ffmpeg -i podcast.mp4 -ss 48:20 -to 48:45 -c copy clip3.mp4
# 2. åå»ºçæ®µå表
echo "file 'clip1.mp4'" > clips.txt
echo "file 'clip2.mp4'" >> clips.txt
echo "file 'clip3.mp4'" >> clips.txt
# 3. æ¼æ¥ç段
ffmpeg -f concat -safe 0 -i clips.txt -c copy preview.mp4
çæ®µé´è¿æ¸¡
| é项 | ææ |
|---|---|
| ç´å | é»è®¤ï¼ç®æ´ |
| é»åºè¿æ¸¡ | 0.3-0.5ç§é»å±ï¼åºåçæ®µ |
| æ·¡å ¥æ·¡åº | æ´æåï¼ä½å¢å æ¶é¿ |
ä¸ã䏻颿²ç头çå°¾
ç»æç¤ºæ
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â ç头䏻颿² â é«äº®é¢è§ â æ£çå
容 â ç尾䏻颿² â
â (~15ç§) â (30-90ç§) â â (~15ç§) â
â æ¸å
¥âæ¸åº â â â æ¸å
¥âæ¸åº â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
ç头å¤ç
| åæ° | å¼ |
|---|---|
| æ¶é¿ | 约 15 ç§ |
| æ¸å ¥ | 0-2ç§ï¼ä»é鳿¸å ¥å°æ£å¸¸é³é |
| æ¸åº | æå 3 ç§ï¼æ¸åºå°éé³ï¼ä¸äººå£°è¡æ¥ï¼ |
| é³é | æ£å¸¸ææ¾é³é |
# 1. æå䏻颿²ç头ï¼15ç§ï¼
THEME_SONG="/Users/xiangli/Music/Music/Media.localized/Music/Unknown Artist/Unknown Album/Surfaces - Sunny Side Up (Official Audio).mp3"
ffmpeg -i "$THEME_SONG" -t 15 \
-af "afade=t=in:d=2,afade=t=out:st=12:d=3" \
intro_music.mp3
# 2. æ¼æ¥ï¼ç头é³ä¹ + é¢è§ + æ£ç
ffmpeg -i intro_music.mp3 -i preview_and_main.mp3 \
-filter_complex "[0:a][1:a]concat=n=2:v=0:a=1[outa]" \
-map "[outa]" output_with_intro.mp3
çå°¾å¤ç
| åæ° | å¼ |
|---|---|
| æ¶é¿ | 约 15 ç§ |
| æ¸å ¥ | 0-3ç§ï¼ä»é鳿¸å ¥ï¼ä¸äººå£°è¡æ¥ï¼ |
| æ¸åº | æå 2 ç§ï¼æ¸åºå°éé³ |
| é³é | æ£å¸¸ææ¾é³é |
# 1. æå䏻颿²çå°¾ï¼15ç§ï¼å¯ä»¥ä»ææ²ä¸åä½ç½®æªåï¼
ffmpeg -i "$THEME_SONG" -ss 30 -t 15 \
-af "afade=t=in:d=3,afade=t=out:st=13:d=2" \
outro_music.mp3
# 2. æ¼æ¥ï¼æ£ç + çå°¾é³ä¹
ffmpeg -i main_content.mp3 -i outro_music.mp3 \
-filter_complex "[0:a][1:a]concat=n=2:v=0:a=1[outa]" \
-map "[outa]" output_with_outro.mp3
宿´æ¼æ¥å½ä»¤
# 䏿¬¡æ§æ¼æ¥ï¼ç头 + é¢è§ + æ£ç + çå°¾
ffmpeg -i intro_music.mp3 -i preview.mp3 -i main.mp3 -i outro_music.mp3 \
-filter_complex "[0:a][1:a][2:a][3:a]concat=n=4:v=0:a=1[outa]" \
-map "[outa]" -c:a libmp3lame -q:a 2 \
podcast_final.mp3
é³éè°æ´
妿䏻颿²å¤ªåæå¤ªè½»ï¼å¯ä»¥è°æ´ï¼
# éä½é³éï¼0.8 = 80%ï¼
ffmpeg -i intro_music.mp3 -af "volume=0.8" intro_music_adjusted.mp3
# æé«é³éï¼1.2 = 120%ï¼
ffmpeg -i intro_music.mp3 -af "volume=1.2" intro_music_adjusted.mp3
åãæ¶é´æ³ç« èçæ
æ ¼å¼è§è
00:00 ç头é¢è§
01:30 æ£å¼å¼åº
02:05 è¯é¢ä¸çæ é¢
07:58 è¯é¢äºçæ é¢
26:16 è¯é¢ä¸çæ é¢
1:00:08 è¯é¢åçæ é¢
1:23:00 è¯é¢äºçæ é¢
æ ¼å¼è§å
| è§å | 说æ |
|---|---|
| æ¶é´æ ¼å¼ | MM:SS æ H:MM:SSï¼è¶
è¿1å°æ¶ï¼ |
| é¦ç« | 00:00 ç头é¢è§ï¼å¦ææé¢è§ï¼ |
| é´é | è¯é¢é´ç©ºè¡åç»ï¼å¯éï¼ |
| æ é¢ | ç®æ´ãæä¿¡æ¯éï¼ä¸è¶ è¿20å |
ç« èè¯å«è§å
- è¯é¢åæ¢ç¹ï¼ä»éå稿è¯å«ä¸»é¢åå
- ä¿¡å·è¯ï¼
- “æ¥ä¸æ¥èè…”
- “说å°è¿ä¸ª…”
- “å¦ä¸ä¸ªè¯é¢æ¯…”
- “æåèä¸ä¸…”
- ç« èç²åº¦ï¼
- 30åéå ï¼3-5 ä¸ªç« è
- 1å°æ¶ï¼5-8 ä¸ªç« è
- 2å°æ¶ï¼8-12 ä¸ªç« è
示ä¾
00:00 ç头精彩é¢è§
01:26 æä»¬ä¸ºä»ä¹è¦è"å·¥ä½çæä¹"ï¼
02:05 童年记å¿ï¼ç¶æ¯é£ä¸ä»£çå·¥ä½è§
07:58 å¦çæ¶ä»£ï¼å¯¹"å
é²å·¥ä½"çå¹»æ³ä¸å®ä¹ ä½éª
26:16 第ä¸ä»½å·¥ä½ï¼å¤§åå
ç¯ã身份ç¦èä¸éæ©
32:07 çå¦çæ±èï¼ä¸ºèº«ä»½èå·¥ä½ vs ä¸ºçæ´»èå·¥ä½
38:27 é±ãæä¹æä¸å·¥ä½çæ´»ç平衡
1:00:08 å·¥ä½ç"æ æä¹"æ¶å»ï¼æä»¬å¨å¯¹æä»ä¹ï¼
1:08:17 ä»·å¼è§ç¢°æï¼å·¥ä½å°åºææ²¡ææä¹ï¼
1:23:00 建ç«çæ´»æ¯ç¹ï¼å¦ä½ä¸è®©å·¥ä½å®ä¹èªå·±ï¼
1:32:58 æä»¬æ¯ä¸¤ç§äººï¼ä½é½å¨å¯»æ¾èªå·±ççæ¡
äºãæ é¢å»ºè®®
æ é¢ç±»å
| ç±»å | ç¤ºä¾ | éç¨åºæ¯ |
|---|---|---|
| é®é¢å | “å·¥ä½çæä¹æ¯ä»ä¹ï¼” | å¼åæè |
| è§ç¹å | “å·¥ä½ä¸è¯¥å®ä¹ä½ çäººç” | ç«åºé²æ |
| éå¥å | “æä»¬é½å¨å¯»æ¾èªå·±ççæ¡” | æ æå ±é¸£ |
| è¯é¢å | “èè大åã身份ç¦èåéæ©” | ä¿¡æ¯æç¡® |
| æ¬å¿µå | “é£ä¸å»ï¼æå³å®ä¸å为身份工佔 | å¸å¼ç¹å» |
è¾åºæ ¼å¼
## æ é¢å»ºè®®
1. **å·¥ä½çæä¹æ¯ä»ä¹ï¼ä¸ä¸ª"æå·¥äºº"çç宿è**ï¼é®é¢ + ä¿¡æ¯ï¼
2. **æä»¬ä¸ºä»ä¹è¦è"å·¥ä½çæä¹"ï¼**ï¼é®é¢åï¼
3. **䏿³è®©å·¥ä½å®ä¹èªå·±ï¼ç¶åå¢ï¼**ï¼æ¬å¿µåï¼
4. **大åå
ç¯ã身份ç¦èã人çéæ©ï½ä¸äººçå¿è¯**ï¼è¯é¢åï¼
5. **两ç§äººï¼ä¸ä¸ªçæ¡ï¼æ¾å°ä½ èªå·±çå·¥ä½è§**ï¼éå¥åï¼
æ¨èï¼ç¬¬ 1 个ï¼ä¿¡æ¯éè¶³ï¼æå¸å¼åï¼
å ãæå®¢ç®ä»
ç®ä»ç»æ
ãæ¬æè¯é¢ã
ä¸å¥è¯æ¦æ¬æ¬æå
容
ãå宾/主æã
- ååï¼ä¸å¥è¯ä»ç»
ãæ¶é´æ³ã
ï¼ç²è´´æ¶é´æ³ç« èï¼
ãç²¾å½©çæ®µã
- "éå¥1"
- "éå¥2"
ãå
³äºæä»¬ã
åºå®çæå®¢ä»ç»ï¼ç¨æ·æä¾æ¨¡æ¿ï¼
示ä¾
ãæ¬æè¯é¢ã
å·¥ä½å°åºææ²¡ææä¹ï¼ä¸ä½èæ¯è¿¥å¼çæåï¼èèåèªå¯¹å·¥ä½ççå®çæ³ã
ã主æã
- Maiaï¼å大å产åç»çï¼ç°èªç±èä¸
- åææï¼ç¡
è°·å·¥ç¨å¸ï¼å¨ç¾åå¹´
- å®å®ï¼åä¸ä¸ï¼æ¾æ¾å¼å¤§åoffer
ãæ¶é´æ³ã
00:00 ç头精彩é¢è§
01:26 æä»¬ä¸ºä»ä¹è¦è"å·¥ä½çæä¹"ï¼
02:05 童年记å¿ï¼ç¶æ¯é£ä¸ä»£çå·¥ä½è§
...
ãç²¾å½©çæ®µã
- "å·¥ä½çæä¹ä¸æ¯æ¾å°çï¼æ¯åé ç"
- "æä¸æ³è®©ç¾è¯å®ä¹æç人çéæ©"
- "ä½ å¯ä»¥æ¯ä¸¤ç§äººï¼ä¹å¯ä»¥æ¯ç¬¬ä¸ç§"
ãæ¶å¬å¹³å°ã
å°å®å® / Apple Podcasts / Spotify / å马æé
è¿åº¦ TodoList
å¯å¨æ¶å建ï¼
- [ ] 询é®ç¨æ·ï¼ä¸»é¢æ²è·¯å¾ãæå®¢é³é¢è·¯å¾ãéå稿路å¾
- [ ] åæå
å®¹ï¼æ¨èé«äº®ç段ï¼5-8个ï¼
- [ ] çå¾
ç¨æ·éæ© 3-4 ä¸ªçæ®µ
- [ ] æåå¹¶æ¼æ¥ç头é¢è§
- [ ] æ·»å 䏻颿²ç头ï¼~15ç§ï¼æ¸å
¥æ¸åºï¼
- [ ] æ·»å 䏻颿²çå°¾ï¼~15ç§ï¼æ¸å
¥æ¸åºï¼
- [ ] çææ¶é´æ³ç« è
- [ ] çææ é¢å»ºè®®
- [ ] çææå®¢ç®ä»
è¾åºæä»¶
podcast_preview.mp3 # é«äº®ç段é¢è§
podcast_intro.mp3 # ç头䏻颿²ï¼15ç§ï¼æ¸å
¥æ¸åºï¼
podcast_outro.mp3 # ç尾䏻颿²ï¼15ç§ï¼æ¸å
¥æ¸åºï¼
podcast_final.mp3 # æç»çæ¬ï¼ç头 + é¢è§ + æ£ç + çå°¾ï¼
podcast_æ¶é´æ³.txt # æ¶é´æ³ç« è
podcast_æ é¢å»ºè®®.txt # æ é¢é项
podcast_ç®ä».txt # åå¸ç®ä»
ä¸å ¶ä» Skill çå ³ç³»
/podcastcut-content â å
容åªè¾
/podcastcut-edit â æ§è¡åªè¾
/podcastcut-transcribe â å£è¯¯è¯å«
/podcastcut-final-touch â æç»æ¶¦è² â æ¬ Skill
æ¨èæµç¨ï¼
åå§é³é¢/è§é¢
â
/podcastcut-content â å é¤åºè¯ãè·é¢ãéç§
â
/podcastcut-edit â æ§è¡åªè¾ï¼è¾åº v2
â
ãå¯éãå¤çå£è¯¯
â
/podcastcut-final-touch â ç头é¢è§ + èæ¯é³ä¹ + æ¶é´æ³ + æ é¢ + ç®ä»
â
åå¸
示ä¾å¯¹è¯
ç¨æ·: 帮æåè¿ä¸ªæå®¢ç final touch
AI: 好çï¼ææ¥å¸®ä½ åæç»æ¶¦è²ãå¨å¼å§ä¹åï¼è¯·æä¾ä»¥ä¸ä¿¡æ¯ï¼
1. **䏻颿²æä»¶è·¯å¾**ï¼ç¨äºç头çå°¾èæ¯é³ä¹ï¼
- ä¾å¦ï¼`/path/to/your/theme-song.mp3`
- 妿ä¸éè¦èæ¯é³ä¹ï¼è¯·åè¯æ
2. **å·²åªè¾å¥½çæå®¢é³é¢è·¯å¾**
- ä¾å¦ï¼`/path/to/podcast_v2.mp3`
3. **ï¼å¯éï¼éå稿æè½¬å½ JSON è·¯å¾**
- ç¨äºåæé«äº®ç段åçææ¶é´æ³
ç¨æ·: 䏻颿²æ¯ ~/Music/my-theme.mp3ï¼æå®¢æ¯ ~/podcast/episode1_v2.mp3
AI: æ¶å°ï¼ä¸»é¢æ²ï¼~/Music/my-theme.mp3ï¼æå®¢ï¼~/podcast/episode1_v2.mp3
æ£å¨åæå
容ï¼å¯»æ¾é«äº®ç段...
## æ¨èé«äº®ç段
| # | æ¶é´ | 说è¯äºº | å
容 | æ¨èçç± |
|---|------|--------|------|----------|
| 1 | 15:32 | 主æA | "..." | éå¥ |
| 2 | 32:45 | 主æB | "..." | æ
æå
±é¸£ |
| 3 | 48:20 | å宾 | "..." | æ
äºæ¬å¿µ |
| 4 | 1:05:30 | 主æA | "..." | æ
绪é«ç¹ |
| 5 | 1:18:22 | 主æB | "..." | æ ¸å¿è§ç¹ |
è¯·éæ© 3-4 ä¸ªçæ®µï¼å¦ï¼`1, 2, 4`
ç¨æ·: 1, 2, 4
AI: 好çï¼æåçæ®µ 1ã2ã4 å¹¶æ¼æ¥ç头é¢è§...
é¢è§å·²çæï¼podcast_preview.mp3ï¼68ç§ï¼
æ¥ä¸æ¥ä½¿ç¨ä½ ç䏻颿²æ·»å ç头çå°¾...
- ç头ï¼my-theme.mp3 å15ç§ï¼æ¸å
¥2ç§ï¼æ¸åº3ç§ï¼
- çå°¾ï¼my-theme.mp3 15ç§ï¼æ¸å
¥3ç§ï¼æ¸åº2ç§ï¼
æ£å¨æ¼æ¥æç»é³é¢ï¼ç头 + é¢è§ + æ£ç + çå°¾...
宿ï¼podcast_final.mp3
## æ¶é´æ³ç« è
00:00 ç头
00:15 精彩é¢è§
01:23 æ£å¼å¼åº
...
## æ é¢å»ºè®®
1. ...
2. ...
## æå®¢ç®ä»
ãæ¬æè¯é¢ã
...
æææä»¶å·²ä¿åï¼å¯ä»¥åå¸äºï¼
ä¸ãFFmpeg å ³é®ç»éª â
7.1 -ss 对 mp3 ä¸å¯é ï¼å¿
é¡»ç¨ atrim
# â é误ï¼-ss å¯è½ seek å°éé³ä½ç½®
ffmpeg -i song.mp3 -ss 20 -t 3 output.mp3 # ç»æå¯è½æ¯ -91dB éé³
# â
æ£ç¡®ï¼ç¨ atrim 滤é精确æªå
ffmpeg -i song.mp3 \
-af "atrim=start=5:end=8,asetpts=PTS-STARTPTS" \
output.mp3
7.2 å¿ é¡»æ£æ¥é³é¢é³é
æªååç«å³æ£æ¥ï¼-91dB åºæ¬æ¯éé³ï¼
ffmpeg -i output.mp3 -af "volumedetect" -f null - 2>&1 | grep max_volume
# æ£å¸¸é³éåºè¯¥å¨ -20dB å° 0dB ä¹é´
7.3 é³é¢æ··åï¼äººå£° + èæ¯é³ä¹ï¼
# 人声æé«å° 1.8 å + æ·¡æ·¡èæ¯é³ä¹ 5%
ffmpeg -i voice.mp3 -i bg_music.mp3 \
-filter_complex "[0:a]volume=1.8[voice];[1:a]volume=0.05[bg];[voice][bg]amix=inputs=2:duration=first[out]" \
-map "[out]" -c:a libmp3lame -q:a 2 output.mp3
7.4 è¿æ¸¡é³ä¹ï¼å¸¦æ¸å ¥æ¸åºï¼
# 4ç§ç段é´è¿æ¸¡ï¼æ¸å
¥0.5sï¼æ¸åº0.5s
ffmpeg -i song.mp3 \
-af "atrim=start=5:end=9,asetpts=PTS-STARTPTS,afade=t=in:d=0.5,afade=t=out:st=3.5:d=0.5" \
-c:a libmp3lame -q:a 2 music_bridge_4s.mp3
# 8ç§æ·¡å
¥æ£æï¼æ¸å
¥0.5sï¼ç¶å7ç§æ¸åºå°éé³
ffmpeg -i song.mp3 \
-af "atrim=start=9:end=17,asetpts=PTS-STARTPTS,afade=t=in:d=0.5,afade=t=out:st=1:d=7" \
-c:a libmp3lame -q:a 2 music_to_main_8s.mp3
å «ã宿´é¢è§ç»æï¼æ¨èï¼
ç»æç¤ºæ
ââââââââââââ¬ââââââââââââââ¬âââââââââ¬ââââââââââââââ¬âââââââââââââ¬âââââââââââ¬âââââââââââ
â ç头é³ä¹ â çæ®µ1+èæ¯ â é³ä¹è¿æ¸¡â çæ®µ2+èæ¯ â é³ä¹æ·¡å
¥ â æ£æ â çå°¾é³ä¹ â
â (15s) â 人声+5%bg â (4s) â 人声+5%bg â (8s) â â (15s) â
ââââââââââââ´ââââââââââââââ´âââââââââ´ââââââââââââââ´âââââââââââââ´âââââââââââ´âââââââââââ
æ¶é´æ³ç¤ºä¾
| é¨å | æ¶é´ | 说æ |
|---|---|---|
| ç头é³ä¹ | 00:00-00:15 | 15ç§ï¼æ¸å ¥2sâæ¸åº3s |
| é«äº®ç段1 | 00:15-00:25 | 人声1.8x + 5%èæ¯é³ä¹ |
| é³ä¹è¿æ¸¡ | 00:25-00:29 | 4ç§ï¼æ¸å ¥0.5sâæ¸åº0.5s |
| é«äº®ç段2 | 00:29-00:49 | 人声1.8x + 5%èæ¯é³ä¹ |
| é³ä¹æ·¡å ¥ | 00:49-00:57 | 8ç§ï¼æ¸å ¥0.5sâæ¸åº7s |
| æ£æ | 00:57- | 主è¦å 容 |
| çå°¾é³ä¹ | æå15ç§ | æ¸å ¥3sâæ¸åº2s |
宿´å¶ä½æµç¨
WORK_DIR="/path/to/project"
THEME_SONG="/path/to/theme.mp3"
MAIN_AUDIO="/path/to/main.mp3"
# 1. ç头é³ä¹ï¼15ç§ï¼
ffmpeg -i "$THEME_SONG" \
-af "atrim=start=0:end=15,asetpts=PTS-STARTPTS,afade=t=in:d=2,afade=t=out:st=12:d=3" \
-c:a libmp3lame -q:a 2 "$WORK_DIR/intro_music.mp3"
# 2. 为æ¯ä¸ªé«äº®ç段添å èæ¯é³ä¹
# å
çæå¯¹åºæ¶é¿çèæ¯é³ä¹ï¼5%é³éï¼
ffmpeg -i "$THEME_SONG" \
-af "atrim=start=15:end=25,asetpts=PTS-STARTPTS,volume=0.05" \
-c:a libmp3lame -q:a 2 "$WORK_DIR/bg_10s.mp3"
# æ··åï¼äººå£°(1.8x) + èæ¯é³ä¹
ffmpeg -i "$WORK_DIR/clip1.mp3" -i "$WORK_DIR/bg_10s.mp3" \
-filter_complex "[0:a]volume=1.8[voice];[voice][1:a]amix=inputs=2:duration=first[out]" \
-map "[out]" -c:a libmp3lame -q:a 2 "$WORK_DIR/clip1_with_bg.mp3"
# 3. çæ®µé´é³ä¹è¿æ¸¡ï¼4ç§ï¼
ffmpeg -i "$THEME_SONG" \
-af "atrim=start=5:end=9,asetpts=PTS-STARTPTS,afade=t=in:d=0.5,afade=t=out:st=3.5:d=0.5" \
-c:a libmp3lame -q:a 2 "$WORK_DIR/music_bridge_4s.mp3"
# 4. æ·¡å
¥æ£æé³ä¹ï¼8ç§ï¼
ffmpeg -i "$THEME_SONG" \
-af "atrim=start=9:end=17,asetpts=PTS-STARTPTS,afade=t=in:d=0.5,afade=t=out:st=1:d=7" \
-c:a libmp3lame -q:a 2 "$WORK_DIR/music_to_main_8s.mp3"
# 5. çå°¾é³ä¹ï¼15ç§ï¼
ffmpeg -i "$THEME_SONG" \
-af "atrim=start=30:end=45,asetpts=PTS-STARTPTS,afade=t=in:d=3,afade=t=out:st=13:d=2" \
-c:a libmp3lame -q:a 2 "$WORK_DIR/outro_music.mp3"
# 6. æ¼æ¥æç»çæ¬
ffmpeg -y \
-i "$WORK_DIR/intro_music.mp3" \
-i "$WORK_DIR/clip1_with_bg.mp3" \
-i "$WORK_DIR/music_bridge_4s.mp3" \
-i "$WORK_DIR/clip2_with_bg.mp3" \
-i "$WORK_DIR/music_to_main_8s.mp3" \
-i "$MAIN_AUDIO" \
-i "$WORK_DIR/outro_music.mp3" \
-filter_complex "[0:a][1:a][2:a][3:a][4:a][5:a][6:a]concat=n=7:v=0:a=1[outa]" \
-map "[outa]" -c:a libmp3lame -q:a 2 \
"$WORK_DIR/podcast_final.mp3"
ä¹ãæ¶é´æ³å移计ç®
å å ¥ç头é¢è§åï¼æ£æå å®¹çæ¶é´æ³éè¦å ä¸åç§»éã
è®¡ç®æ¹æ³
åç§»é = ç头é³ä¹ + çæ®µ1 + è¿æ¸¡ + çæ®µ2 + æ·¡å
¥
= 15 + 10 + 4 + 20 + 8 = 57 ç§
示ä¾
| åæ¶é´æ³ | åç§»å |
|---|---|
| 00:45 æ£å¼å¼åº | 00:57 æ£å¼å¼åº (+12ç§) |
| 01:30 è¯é¢ä¸ | 01:42 è¯é¢ä¸ |
| 10:00 è¯é¢äº | 10:12 è¯é¢äº |
注æï¼å¦æåæ¶é´æ³åºäºæ§çæ¬ï¼å¦ 00:45 æ£å¼å¼åºï¼ï¼éè¦è®¡ç®å·®å¼ï¼57-45=12ç§ï¼ï¼ç»æææ¶é´æ³å ä¸è¿ä¸ªå·®å¼ã
åãè¾åºæä»¶ç»ç»
åå¸ç´ ææä»¶å¤¹
mkdir -p "$WORK_DIR/åå¸ç´ æ"
# å¤å¶æç»æä»¶
cp "$WORK_DIR/podcast_final.mp3" "$WORK_DIR/åå¸ç´ æ/æå®¢å_æç»ç.mp3"
cp "$WORK_DIR/podcast_æ¶é´æ³.txt" "$WORK_DIR/åå¸ç´ æ/"
cp "$WORK_DIR/podcast_æ é¢å»ºè®®.txt" "$WORK_DIR/åå¸ç´ æ/"
cp "$WORK_DIR/podcast_ç®ä».txt" "$WORK_DIR/åå¸ç´ æ/"
è¾åºç»æ
åå¸ç´ æ/
âââ æå®¢å_æç»ç.mp3 # æç»é³é¢
âââ podcast_æ¶é´æ³.txt # æ¶é´æ³ç« èï¼å·²åç§»ï¼
âââ podcast_æ é¢å»ºè®®.txt # æ é¢é项
âââ podcast_ç®ä».txt # æå®¢ç®ä»
åé¦è®°å½
2026-02-02
-
FFmpeg
-ss对 mp3 ä¸å¯é- é®é¢ï¼ç¨
-ss 45 -t 3æªåé³ä¹ï¼ç»ææ¯ -91dB éé³ - åå ï¼
-ss对 mp3 æä»¶ seek ä¸åç¡® - è§£å³ï¼æ¹ç¨
atrim滤é精确æªå - æè®ï¼æªååå¿
é¡»ç¨
volumedetectæ£æ¥é³é
- é®é¢ï¼ç¨
-
宿´é¢è§ç»æ
- æ§ç»æï¼ç头 â é¢è§ â æ£æ â çå°¾ï¼é¢è§å¤ªç硬ï¼
- æ°ç»æï¼ç头 â çæ®µ1+bg â 4sè¿æ¸¡ â çæ®µ2+bg â 8sæ·¡å ¥ â æ£æ â çå°¾
- æ¹è¿ï¼é«äº®çæ®µå æ·¡æ·¡èæ¯é³ä¹ï¼çæ®µé´æé³ä¹è¿æ¸¡
-
é³é¢æ··ååæ°
- äººå£°ï¼æé«å° 1.8 åï¼åæ¥å¤ªå°ï¼
- èæ¯é³ä¹ï¼5% é³éï¼20% 太åï¼10% å好ï¼5% æ´å®å ¨ï¼
- è¿æ¸¡é³ä¹ï¼æ£å¸¸é³éï¼4ç§ï¼æ¸å ¥æ¸åºå0.5s
- æ·¡å ¥æ£æï¼8ç§ï¼æ¸å ¥0.5s忏åº7s
-
è¾åºç»ç»
- æ°å¢ãåå¸ç´ æãæä»¶å¤¹ï¼éä¸åæ¾æç»è¾åº
- æ¶é´æ³æä»¶éè¦æ´æ°åç§»é
2026-01-17
- é«äº®ç段ä¸è¦åªæ¯åå¥ï¼ç¨æ·åé¦é«äº®ç段å¯ä»¥æ¯å å¥è¿èµ·æ¥ç䏿®µè¯ï¼ä¸ç¨åªéä¸å¥
- å·²æ´æ°ï¼æ¨èæ¶èè宿´æ®µè½ï¼å å«ä¸ä¸æï¼è®©çæ®µæ´ææ äºæå宿´æ§