Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| c3tracker:repair [2019/07/03 17:23] – [Cur the last second off a recording] bjoern | c3tracker:repair [2023/03/15 17:01] (current) – [Manually repairing a Recording (TS)] jwacalex | ||
|---|---|---|---|
| Line 21: | Line 21: | ||
| Zum Reparieren der Timestamps wird das vorhandene, aber " | Zum Reparieren der Timestamps wird das vorhandene, aber " | ||
| - | ffmpeg -i / | + | ffmpeg -i /video/fuse/ |
| Anschließend mit dem Reparaturprozess (nächster Abschnitt) fortfahren. | Anschließend mit dem Reparaturprozess (nächster Abschnitt) fortfahren. | ||
| 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 '' | + | Die Vorgehensweise wird vom Tracker etwas unterstützt. Das Material ist als handelsübliche Videodatei (z.B. MPEG2-TS, h264 mp4) im Verzeichnis '' |
| Direkt im Anschluss kann/muss das Ticket nochmal geschnitten werden, also den Cutting-Status durchlaufen. Es wird **nur** der Status im Tracker durchlaufen, | Direkt im Anschluss kann/muss das Ticket nochmal geschnitten werden, also den Cutting-Status durchlaufen. Es wird **nur** der Status im Tracker durchlaufen, | ||
| Ab hier läuft dann die Pipeline ganz normal weiter. | Ab hier läuft dann die Pipeline ganz normal weiter. | ||
| + | |||
| + | Wenn es einen Fuse/ | ||
| + | |||
| + | === Camera backup Audio stereo to 2x stereo | ||
| + | |||
| + | Soll der Kameraton benutzt werden liegt dieser meist als L: original R: translation vor. Das muss im repair.ts auf 2 stereo streams geaendert werden das sollte mit dieser zeile funktionieren: | ||
| + | < | ||
| + | ffmpeg -i repair_rl.ts -filter_complex " | ||
| + | </ | ||
| == Hints for repairing / manual cutting with KDEnlive | == Hints for repairing / manual cutting with KDEnlive | ||
| Line 48: | Line 57: | ||
| **Achtung** da die Software " | **Achtung** da die Software " | ||
| - | === 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/ | ||
| + | |||
| + | == Convert to TS | ||
| (Not necessary for repairing) | (Not necessary for repairing) | ||
| Line 63: | Line 79: | ||
| </ | </ | ||
| - | === remux TS file | + | == remux TS file |
| < | < | ||
| ffmpeg -v verbose -y \ | ffmpeg -v verbose -y \ | ||
| Line 69: | Line 85: | ||
| -c copy \ | -c copy \ | ||
| -f mpegts / | -f mpegts / | ||
| - | </ | + | </ |
| == Audiospur bearbeiten | == Audiospur bearbeiten | ||
| Line 90: | Line 107: | ||
| </ | </ | ||
| + | Weitere Audiospuren als nicht default markieren: | ||
| + | < | ||
| + | ffmpeg -i 10223-hd.mp4.orig -i / | ||
| + | </ | ||
| + | |||
| + | Manuelles AV/Delay mit ffmpeg von 200ms korrigieren: | ||
| + | < | ||
| + | ffmpeg -i 10397-hd-async.mp4 -itsoffset 0.200 -i 10397-hd-async.mp4 -c copy -map 0:v:0 -map 0:v:1 -map 1:a:0 -map_metadata 0 10397-hd.mp4 | ||
| + | </ | ||
| == Copyright aus audio mit hilfe von YouTube entfernen | == Copyright aus audio mit hilfe von YouTube entfernen | ||
| Line 134: | Line 160: | ||
| Now place a '' | Now place a '' | ||
| - | == Cur the last second off a recording | + | == Cut the last second off a recording |
| When the outro has additional frames (bacause of a non empty output folder after a --debug run) the files can be shortened by downloading them from media and using the fowllowing script. | When the outro has additional frames (bacause of a non empty output folder after a --debug run) the files can be shortened by downloading them from media and using the fowllowing script. | ||
| Line 141: | Line 167: | ||
| #!/bin/bash | #!/bin/bash | ||
| - | for video in *.mp4; do | + | EXT=" |
| + | |||
| + | for video in *${EXT}; do | ||
| echo " | echo " | ||
| DURATION=$(ffprobe -v quiet -print_format json -show_format $video | jq ' | DURATION=$(ffprobe -v quiet -print_format json -show_format $video | jq ' | ||
| DURATIONX2=$(ffprobe -v quiet -print_format json -show_format $video | jq ' | DURATIONX2=$(ffprobe -v quiet -print_format json -show_format $video | jq ' | ||
| - | VIDEONAME=$(basename $video | + | VIDEONAME=$(basename $video |
| - | REPAIRNAME=repair/ | + | REPAIRNAME=repair/ |
| echo "OLD: $DURATION" | echo "OLD: $DURATION" | ||
| echo "NEW: ${DURATIONX2}" | echo "NEW: ${DURATIONX2}" | ||
| - | echo ffmpeg -hide_banner -t $DURATIONX2 -i ${VIDEONAME}.mp4 -map 0 -c copy ${REPAIRNAME} | + | echo ffmpeg -hide_banner -t $DURATIONX2 -i ${VIDEONAME}${EXT} |
| - | ffmpeg -hide_banner -t $DURATIONX2 -i ${VIDEONAME}.mp4 -map 0 -c copy ${REPAIRNAME} | + | ffmpeg -hide_banner -t $DURATIONX2 -i ${VIDEONAME}${EXT} |
| done | done | ||
| </ | </ | ||
| + | |||
| + | == 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. | ||
| + | |||
| + | < | ||
| + | import os | ||
| + | import sys | ||
| + | |||
| + | files = os.listdir('/ | ||
| + | relive_folder = '/ | ||
| + | fuse_folder = '/ | ||
| + | |||
| + | i = 0 | ||
| + | |||
| + | for file in files: | ||
| + | filename = relive_folder+sys.argv[1]+'/' | ||
| + | if filename[-3: | ||
| + | file = file.split(' | ||
| + | new_filename = relive_folder+sys.argv[1]+'/ | ||
| + | os.rename(filename, | ||
| + | i += 1 | ||
| + | |||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | |||