Aggiungi clip titolatrice

Clic destro in una zona vuota del contenitore del progetto, oppure fai clic sull’icona kdenlive-add-clipgo-downAggiungi clip nel contenitore del progetto, poi seleziona Aggiungi clip titolatrice.

project_bin_add_title

Aggiungere una clip titolatrice

Si apre L’editor dei titoli incorporato.

Per maggiori dettagli, vedi Clip titolatrici.

Qui, per gentile concessione di Grog c’è uno script (per maggiori dettagli vedi il suo post e come usarlo in Windows): trasforma i sottotitoli in titoli, che possono essere ulteriormente modificati nell’editor dei titoli:

 1#!/bin/bash
 2
 3read -p "frame rate:"$'\n' frate
 4[ "$frate" = "" ] && frate=60
 5echo "..."
 6
 7[ -d ./Kden_Titles/ ] && rm -r ./Kden_Titles
 8mkdir -p Kden_Titles
 9
10readarray -t frm < <( (sed -n '2~4p' ./*.srt) )
11readarray -t sub < <( (sed -n '3~4p' ./*.srt) )
12
13n=1
14w=$(bc<<<"length(${#sub[@]}*2)")
15
16for i in "${!frm[@]}"; do
17
18        b=$(date -d "${frm[i]:0:12}" "+%S.%3N")
19        e=$(date -d "${frm[i]:17:12}" "+%S.%3N")
20        ee=$(date -d "${frm[i-1]:17:12}" "+%S.%3N")
21
22        if [ "$i" -eq 0 ]; then ee=0; fi
23        if [ "$(bc<<<"$b<$ee && $i!=0")" -eq 1 ]; then b="$(bc<<<"$b+60")"; fi
24        if [ "$(bc<<<"$e<$b")" -eq 1 ]; then e="$(bc<<<"$e+60")"; fi
25
26        blank="$(bc <<< "($b*$frate+0.5)/1-($ee*$frate+0.5)/1")"
27        duration="$(bc <<< "($e*$frate+0.5)/1-($b*$frate+0.5)/1")"
28
29        if [ "$blank" -gt 0 ]; then
30        sed -e "s/30/$blank/" -e "s/%s//" ./*.kdenlivetitle* > ./Kden_Titles/"$(printf "%0*d" "$w" "$n")"_.kdenlivetitle
31        ((n++))
32        fi
33
34        sed -e "s/30/$duration/" -e "s/%s/${sub[i]}/" ./*.kdenlivetitle* > ./Kden_Titles/"$(printf "%0*d" "$w" "$n")".kdenlivetitle
35        ((n++))
36
37done
38
39sleep 1
40echo "Titles in $PWD/Kden_Titles"$'\n'
41touch ./Kden_Titles/*_*
42
43$SHELL

Le righe evidenziate fanno notare la variabile %s, la stessa usata come segnaposto standard nei modelli di titolo. Puoi cambiarla in qualunque cosa vuoi, ad esempio segnaposto.

Qui c’è lo stesso script, ma per la Powershell di Windows (salvalo come .ps1):

# Prompt for frame rate
$frate = Read-Host "frame rate"
if (-not $frate) { $frate = 60 }
Write-Host "..."

# Remove existing Kden_Titles directory if it exists
if (Test-Path -Path "./Kden_Titles/") { Remove-Item -Path "./Kden_Titles/" -Recurse -Force }
New-Item -ItemType Directory -Path "Kden_Titles"

# Read frames and subtitles from SRT files
$frm = Get-Content -Path '*.srt' | Select-Object -Skip 1 | ForEach-Object -Begin {$i=0} -Process {if ($i++ % 4 -eq 0) {$_}}
$sub = Get-Content -Path '*.srt' | Select-Object -Skip 2 | ForEach-Object -Begin {$i=0} -Process {if ($i++ % 4 -eq 0) {$_}}
# output File name width / counter
$w = [math]::Ceiling($sub.Count * 2)
$w = "$w".length
$n = 1
# Template file placeholders
[regex] $p_1='30'
[regex] $p_2='%s'

for ($i = 0; $i -lt $frm.Count; $i++) {
    # Timing
   $b = [datetime]::ParseExact($frm[$i].Substring(0, 12), "hh:mm:ss,fff", $null).ToString("ss.fff")
   $e = [datetime]::ParseExact($frm[$i].Substring(17, 12), "hh:mm:ss,fff", $null).ToString("ss.fff")
   $ee = if ($i -gt 0) { [datetime]::ParseExact($frm[$i - 1].Substring(17, 12), "hh:mm:ss,fff", $null).ToString("ss.fff") } else { 0 }
   # Add 60s if necessary
   if ($i -eq 0) { $ee = 0 }
   if ($b -lt $ee -and $i -ne 0) { $b = [math]::Round([double]$b + 60, 3) }
   if ($e -lt $b) { $e = [math]::Round([double]$e + 60, 3) }
   # Clip length / padding
   $blank = [math]::Round([decimal]$b * $frate + 0.1) - [math]::Round([decimal]$ee * $frate + 0.1)
   $duration = [math]::Round([decimal]$e * $frate + 0.1) - [math]::Round([decimal]$b * $frate + 0.1)
   # Replace placeholders
   if ($blank -gt 0) {
      Get-Content -Path ./*.kdenlivetitle* |
           ForEach-Object { $p_1.replace("$_", "$blank", 1) } |
           ForEach-Object { $p_2.replace("$_", '',1) } |
      Set-Content -Path "./Kden_Titles/$($n.ToString("D$w"))_.kdenlivetitle"
      $n++
   }
   Get-Content -Path ./*.kdenlivetitle* |
   ForEach-Object { $p_1.replace("$_", "$duration", 1) } |
   ForEach-Object { $p_2.replace("$_", $sub[$i],1) } |
   Set-Content -Path "./Kden_Titles/$($n.ToString("D$w")).kdenlivetitle"
   $n++
}

Start-Sleep -Seconds 1
Write-Host "`nTitles in $PWD\Kden_Titles`n"
# Set date modified for blank clips
(Get-ChildItem -Path ./Kden_Titles/*_*) | % {$_.LastWriteTime = (Get-Date)}