Crear título¶
Hacer clic derecho sobre un espacio vacío de la Bandeja del proyecto o hacer clic en el botón Cargar clip o carpeta en la barra de herramientas de la Bandeja del proyecto y seleccionar la opción Crear título….

Agregando un clip de títulos¶
Eso abrirá el Titulador del programa.
Ver Clips de títulos para más detalles.
A continuación se encuentra un script cortesía de Grog (ver su publicación (post) para más detalles e instrucciones sobre cómo usarlo en Windows), que convierte subtítulos en títulos que podrán ser posteriormente editados en el Titulador de Kdenlive:
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
Las líneas resaltadas indican la variable %s
(la misma que es usada como un marcador de posición estándar en las plantillas de títulos). Será posible cambiarla por cualquier otra cosa que se desee, como el término marcador de posición
, por ejemplo.
Aquí se muestra el mismo script pero para el Powershell de Windows (guardarlo como un archivo .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)}