一問一答短影音:實拍對答與生成畫面怎麼接
短影音後製
常見需求:要做一支一問一答的短影音,口播或對答是實拍,中間的說明段落則想用生成畫面來示意。這跟「整支片子都用生成」不同,接縫與授權才是重點。
這次測試到哪裡
本機已用 ffmpeg 把兩段色塊測試片接成一支,並轉成直式 1080×1920。concat_clips.sh 要求片段的編碼參數一致,否則會失敗。沒有測試任何生成模型,也沒有實拍人像。
三層怎麼分工
| 層 | 做什麼 |
|---|---|
| 企劃 | 把腳本切成「問/答/說明」。只有說明段才考慮用生成畫面。 |
| 拍攝或生成 | 問答段實拍;說明段若用生成,要留下提示詞、來源與授權紀錄。 |
| 後製與發布 | 統一格式後接片,並依平台條款決定是否標示合成或生成內容。 |
先鎖定哪些段落可以生成
問答若涉及真實的人、真的意見或真的服務,應用本人出鏡或真實錄音。生成畫面比較適合示意物體、流程或抽象背景,不適合假造某位特定人士正在回答。若畫面裡出現可辨識的臉或聲音,需要當事人同意;不要把路人、同事或公眾人物的肖像拿去生成「看起來像他」的版本。
音樂與音效應使用你有權使用的檔案。各平台對合成內容的標示規定會更新,發布前請查該平台最新條款,必要時主動標示。這不是可有可無的裝飾,而是讓觀眾知道哪一段不是現場拍到的。
接片時先統一規格
實拍與生成素材的解析度、幀率和編碼常常不同。先各自轉成同一規格,再接起來。下面的指令已在本機用測試色塊跑過。
#!/usr/bin/env bash
# 把影片裁成直式 1080x1920,並可選擇截到指定秒數。
# 依賴:ffmpeg(測試環境為 7.1.5)
set -euo pipefail
if [[ $# -lt 2 ]]; then
echo "用法:$0 輸入.mp4 輸出.mp4 [秒數]" >&2
exit 2
fi
IN="$1"
OUT="$2"
SECONDS_LIMIT="${3:-}"
FILTER="scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2,setsar=1"
ARGS=(-y -i "$IN" -vf "$FILTER" -c:v libx264 -pix_fmt yuv420p -c:a aac -movflags +faststart)
if [[ -n "$SECONDS_LIMIT" ]]; then
ARGS+=(-t "$SECONDS_LIMIT")
fi
ARGS+=("$OUT")
ffmpeg -hide_banner -loglevel error "${ARGS[@]}"
echo "已寫出 $OUT"#!/usr/bin/env bash
# 依順序列出的檔案接成一支影片。輸入需為相同編碼參數。
set -euo pipefail
if [[ $# -lt 2 ]]; then
echo "用法:$0 輸出.mp4 片段1.mp4 片段2.mp4 ..." >&2
exit 2
fi
OUT="$1"
shift
LIST="$(mktemp)"
trap 'rm -f "$LIST"' EXIT
for f in "$@"; do
printf "file '%s'\n" "$(realpath "$f")" >> "$LIST"
done
ffmpeg -hide_banner -loglevel error -y -f concat -safe 0 -i "$LIST" -c copy "$OUT"
echo "已寫出 $OUT"先統一,再接片
bash make_vertical.sh answer.mp4 answer-v.mp4
bash make_vertical.sh explain.mp4 explain-v.mp4
bash concat_clips.sh qa-final.mp4 answer-v.mp4 explain-v.mp4 answer-v.mp4常見錯誤
- 問答段也用生成的臉,觀眾會分不清這是不是當事人在說話。
- 兩段素材的畫面比例不同,接起來會跳動或被裁切。
- 生成服務的條款不允許該種商用,卻拿去當廣告。
- 沒有保存「哪一段是生成」的紀錄,後續無法標示或替換。