2026年11月14日

一問一答短影音:實拍對答與生成畫面怎麼接

短影音後製

常見需求:要做一支一問一答的短影音,口播或對答是實拍,中間的說明段落則想用生成畫面來示意。這跟「整支片子都用生成」不同,接縫與授權才是重點。

這次測試到哪裡

本機已用 ffmpeg 把兩段色塊測試片接成一支,並轉成直式 1080×1920。concat_clips.sh 要求片段的編碼參數一致,否則會失敗。沒有測試任何生成模型,也沒有實拍人像。

三層怎麼分工

層做什麼
企劃把腳本切成「問/答/說明」。只有說明段才考慮用生成畫面。
拍攝或生成問答段實拍;說明段若用生成,要留下提示詞、來源與授權紀錄。
後製與發布統一格式後接片,並依平台條款決定是否標示合成或生成內容。

先鎖定哪些段落可以生成

問答若涉及真實的人、真的意見或真的服務,應用本人出鏡或真實錄音。生成畫面比較適合示意物體、流程或抽象背景,不適合假造某位特定人士正在回答。若畫面裡出現可辨識的臉或聲音,需要當事人同意;不要把路人、同事或公眾人物的肖像拿去生成「看起來像他」的版本。

音樂與音效應使用你有權使用的檔案。各平台對合成內容的標示規定會更新,發布前請查該平台最新條款,必要時主動標示。這不是可有可無的裝飾,而是讓觀眾知道哪一段不是現場拍到的。

接片時先統一規格

實拍與生成素材的解析度、幀率和編碼常常不同。先各自轉成同一規格,再接起來。下面的指令已在本機用測試色塊跑過。

make_vertical.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"
concat_clips.sh
#!/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

常見錯誤

下載