Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
c3tracker:repair [2019/10/26 12:11] andic3tracker:repair [2025/09/14 12:38] (current) v0tti
Line 29: Line 29:
 Das reparierte Material wird im gleichen Format wie das Capture zur Verfügung gestellt, also MPEG2-TS mit 4 Audiospuren etc.pp. Dabei wird im Prozess zwar noch vor dem Schnitt eingesetzt, ein Abstecken mit KDEnlive erfolgt aber **nicht** nochmal. Das Material sollte also bereits zugeschnitten sein (siehe auch nächster Abschnitt). Allerdings darf das ersetzte Material **nicht** bereits Intro oder Outro beinhalten, da dies beim Encoding angefügt wird. Das reparierte Material wird im gleichen Format wie das Capture zur Verfügung gestellt, also MPEG2-TS mit 4 Audiospuren etc.pp. Dabei wird im Prozess zwar noch vor dem Schnitt eingesetzt, ein Abstecken mit KDEnlive erfolgt aber **nicht** nochmal. Das Material sollte also bereits zugeschnitten sein (siehe auch nächster Abschnitt). Allerdings darf das ersetzte Material **nicht** bereits Intro oder Outro beinhalten, da dies beim Encoding angefügt wird.
  
-Die Vorgehensweise wird vom Tracker etwas unterstützt. Das Material ist als handelsübliche Videodatei (z.B. MPEG2-TS, h264 mp4) im Verzeichnis ''Processing.Path.Repair'' (Defaultwert, wenn nicht gesetzt: ''/video/tmp/<projektslug>/repair/''abzulegen. Dabei kann ein beliebiger Dateiname gewählt werden. Im Tracker muss dieser Dateiname (ohne den Pfad!) in die Property ''Record.SourceReplacement'' am zugehörigen Recording-Ticket eingetragen werden. Das Recording-Ticket ist anschließend auf den Status ''recorded'' zu setzen. Das Mount-Skript erkennt den Sonderfall der Reparatur, und statt eines Fuse-Mounts wird einfach ein Softlink gesetzt. **Achtung** hier ist zu beachten, dass die Encoder das Ziel des Softlinks ebenfalls erreichen können! Daher am Besten alles unter einem Verzeichnis, z.B. ''/video'' bereitstellen.+Die Vorgehensweise wird vom Tracker etwas unterstützt. Das Material ist als handelsübliche Videodatei (z.B. MPEG2-TS, h264 mp4) im Verzeichnis ''Processing.Path.Repair'' abzulegen. Dabei kann ein beliebiger Dateiname gewählt werden. Im Tracker muss dieser Dateiname (ohne den Pfad!) in die Property ''Record.SourceReplacement'' am zugehörigen Recording-Ticket eingetragen werden. Das Recording-Ticket ist anschließend auf den Status ''recorded'' zu setzen. Das Mount-Skript erkennt den Sonderfall der Reparatur, und statt eines Fuse-Mounts wird einfach ein Softlink gesetzt. **Achtung** hier ist zu beachten, dass die Encoder das Ziel des Softlinks ebenfalls erreichen können! Daher am Besten alles unter einem Verzeichnis, z.B. ''/video'' bereitstellen.
  
 Direkt im Anschluss kann/muss das Ticket nochmal geschnitten werden, also den Cutting-Status durchlaufen. Es wird **nur** der Status im Tracker durchlaufen, ein Schnitt mit KDEnlive findet **nicht** statt. Hier wäre jetzt der richtige Moment, um z.B. falsch gesetzte Sprachen/Übersetzungen nochmal zu korrigieren. Direkt im Anschluss kann/muss das Ticket nochmal geschnitten werden, also den Cutting-Status durchlaufen. Es wird **nur** der Status im Tracker durchlaufen, ein Schnitt mit KDEnlive findet **nicht** statt. Hier wäre jetzt der richtige Moment, um z.B. falsch gesetzte Sprachen/Übersetzungen nochmal zu korrigieren.
  
 Ab hier läuft dann die Pipeline ganz normal weiter. Ab hier läuft dann die Pipeline ganz normal weiter.
 +
 +Wenn es einen Fuse/Mountfehler gibt kann es sein, dass die Mounts noch aus dem alten Durchlauf schief sind.
  
 === Camera backup Audio stereo to 2x stereo === Camera backup Audio stereo to 2x stereo
Line 41: Line 43:
 ffmpeg -i repair_rl.ts -filter_complex "channelsplit=channel_layout=stereo[l][r]" -c:v copy -c:a mp2 -b:a 192k -ar:a 48000 -map 0:0 -map "[l]" -map "[r]" -ac 2 repair_2chan.ts ffmpeg -i repair_rl.ts -filter_complex "channelsplit=channel_layout=stereo[l][r]" -c:v copy -c:a mp2 -b:a 192k -ar:a 48000 -map 0:0 -map "[l]" -map "[r]" -ac 2 repair_2chan.ts
 </code> </code>
 +
 +=== Hints for simple .ts repairs with ffmpeg
 +
 +For basic repairs (for example, removing sections from the middle of a recording), you can use ''ffmpeg'' directly. This approach not only offers excellent performance but also preserves secondary video and audio tracks with minimal effort.
 +
 +First, determine the start and end timestamps of the sections you want to keep, relative to ''uncut.ts''. Then, export these sections as separate ''.ts'' files to your local machine (or the ''tmp'' mount on local event storage), for example:
 +
 +<code>
 +ffmpeg -i uncut.ts -ss 00:02:46.20 -to 00:17:25.18 -map 0 -c copy part1.ts
 +ffmpeg -i uncut.ts -ss 00:19:12.12 -to 00:52:27.23 -map 0 -c copy part2.ts
 +</code>
 +
 +After that, you can easily combine the parts with ''cat'':
 +
 +<code>
 +cat part1.ts part2.ts > combined.ts
 +</code>
 +
 +Finally, repair the timestamps with ''ffmpeg'':
 +
 +<code>
 +ffmpeg -i combined.ts -c copy -map 0 repair.ts
 +</code>
 +
 +Place this file in the repair directory of your current event and follow the steps as described above. With this method, there is no need to use KDEnlive or Shotcut for cutting anymore.
 +
  
 == Hints for repairing / manual cutting with KDEnlive == Hints for repairing / manual cutting with KDEnlive
Line 55: Line 83:
  
 **Achtung** da die Software "nur" libavcodec und libavformat verwendet, ist die Angabe von Filtern im Exportprofil prinzipbedingt nicht möglich. Ein Denoising, wie es in der Pipeline für die Masterfiles gemacht wird, muss als Filter auf die entsprechenden Videostücken geklickt werden! **Achtung** da die Software "nur" libavcodec und libavformat verwendet, ist die Angabe von Filtern im Exportprofil prinzipbedingt nicht möglich. Ein Denoising, wie es in der Pipeline für die Masterfiles gemacht wird, muss als Filter auf die entsprechenden Videostücken geklickt werden!
-=== Convert to TS+ 
 +=== Lokal schneiden, remote rendern 
 + 
 +Dafür muss auf dem Encoder (oder der Server auf dem gerendert wird), muss melt installiert werden: `sudo apt install melt`. Beim Schneiden mit KDEnvlive sollten die Quelldateien schon an gleicher stelle wie auf dem Encoder liegen. 
 + 
 +Wenn man fertig ist im KDEnlive auf rendern klicken, das Profil `VOC H.264 main video track with audio` auswählen, den richtigen Exportpfad setzen und auf `Generate Script` klicken. Jetzt sollte in `$HOME/Videos/kdenlive-renderqueue/` eine passende `.mlt`-Datei liegen. Diese muss nun auf den Encoder kopiert werden. Hier kann nun in einem Screen/tmux `melt $DATEINAME.mlt` gestartet werden. 
 + 
 +== Convert to TS
  
 (Not necessary for repairing) (Not necessary for repairing)
Line 70: Line 105:
 </code> </code>
  
-=== remux TS file+=== Convert intro without audio to ts 
 +Input can be any file that can be read by ffmpeg. The intro needs a audio track in order to be compatible with the tracker pipeline. 
 + 
 +<code> 
 +ffmpeg -loop 1 -i 123.mp4 -ar 48000 -ac 1 -f s16le -i /dev/zero -ar 48000 -ac 1 -f s16le -i /dev/zero -ar 48000 -ac 1 -f s16le -i /dev/zero -ar 48000 -ac 1 -f s16le -i /dev/zero  -map 0:v -c:v mpeg2video -q:v 0 -aspect 16:9 -map 1:0 -map 2:0 -map 3:0 -map 4:0 -shortest -f mpegts 123.ts 
 +</code> 
 + 
 +== remux TS file
 <code> <code>
 ffmpeg -v verbose -y \ ffmpeg -v verbose -y \
Line 76: Line 118:
     -c copy \     -c copy \
     -f mpegts /video/tmp/$EVENT/repair/${TALKID}_repair.ts     -f mpegts /video/tmp/$EVENT/repair/${TALKID}_repair.ts
 +</code>können
 +
 +=== source replacement with remapped audio streams + av-delay
 +
 +<code>
 +ffmpeg -i /video/fuse/38c3/stage_huff/838/uncut.ts -itsoffset 0.2 -i /video/fuse/38c3/stage_huff/838/uncut.ts -map 0:v -map 1:a:1 -map 1:a:2 -c copy -ss 2:23 -to 45:00 383-remuxed.ts
 </code> </code>
 +
 +==Audio Stream Reihenfolge reparieren via Jobfile.xml
 +Issue: Audio Spuren vertauscht, Translation + Main in falscher Reihenfolge
 +Ausgangslagen: Tracker steht auf to cut, AudioSpuren sind vertauscht
 +  - Sich selbst als encoding worker zuweisen
 +  - Track nach Wiki Anleitung schneiden
 +  - Warten bis Recording auf finalized steht
 +  - TS- HD master mp4 aufrufen
 +  - Job file runterladen
 +  - Audio spuren in encoding teil vom Jobfile richtig einsortieren
 +  - z.B. Audiospuren 1 und 2 sind vertauscht <code>-map '[audio1_mix]' -c:a:0 aac -b:a:0 128k -ar:a:0 48000 \
 +  -map '[audio0_mix]' -c:a:1 aac -b:a:1 128k -ar:a:1 48000 \
 +  -map '[audio2_mix]' -c:a:2 aac -b:a:2 128k -ar:a:2 48000 </code>
 +  - Schnittmarken + AV delay macht der Tracker automatisch
 +  - auf ein einem worker anmelden und auf voc user wechseln 
 +  - Angepasste encoding ffmpeg Zeile aus dem Jobfile ausführen 
 +  - 
 +
 +
 +
 == Audiospur bearbeiten == Audiospur bearbeiten
  
Line 172: Line 240:
 done done
 </code> </code>
 +
 +== ReLive to fusemount
 +
 +If you for example screwed up a recording, it could be useful to use the ReLive-Snippets as a source for the fuse-ts. This python-script might help you. The Fahplan-ID has to be given as a argument.
 +
 +<code>
 +import os
 +import sys
 +
 +files = os.listdir('/video/tmp/ber-relive/36c3/5'+sys.argv[1])
 +relive_folder = '/video/tmp/ber-relive/36c3/5'
 +fuse_folder = '/video/fuse/36c3-wikipakawg/Wikipaka/'
 +
 +i = 0
 +
 +for file in files:
 +    filename = relive_folder+sys.argv[1]+'/' + file
 +    if filename[-3:] == '.ts':
 +        file = file.split('-')
 +        new_filename = relive_folder+sys.argv[1]+'/{}-{:05d}.ts'.format(file[0], int(file[1][:-3]))
 +        os.rename(filename, new_filename)
 +        i += 1
 +
 +print("sudo umount "+fuse_folder+sys.argv[1] + ' && sudo /usr/bin/fuse-ts p="{prefix}-" c="{relive_folder}{id}" st="0000" numfiles={num} totalframes={frames} -oallow_other,use_ino "{fuse_folder}{id}"'.format(id=sys.argv[1], prefix=file[0], num=i, frames=(150*i) + 1000,relive_folder=relive_folder,fuse_folder=fuse_folder))
 +</code>
 +
 +
  • c3tracker/repair.1572084660.txt.gz
  • Last modified: 2019/10/26 12:11
  • by andi