000.ts 001.ts 002.ts .... zu einer mp4 codieren?
000.ts 001.ts 002.ts .... zu einer mp4 codieren?
Lösungen zu ähnlichen Aufgaben habe ich schon gefunden, aber nichts passendes zu meinem Ding hier:
Ich habe ettliche Verzeichnisse, die mein SAT-PVR aufgenommen hat. Die Aufnahmen werden in mehrere *.ts - Dateien aufgeteilt, die maximal 3.9GB groß sind. Je nach Auflösung und Länge der Aufnahme befinden sich verschieden viele Dateien im Ordner.
Was ich bis jetzt per script hinbekomme, ist daß jedes Aufnahmeverzeichnis durchsucht wird und jede *.ts Datei in eine gleichnamige *.mp4 codiert wird. Kann ffmpeg das auch in einer do ... done Schleife gleich beim Codieren in eine einzige Datei schreiben?
Hier mein bisheriges Script, ist nicht optimiert und noch "entschärft", weil ich noch am Basteln bin (mit NoPaste hat es nicht funktioniert, und so lang ist es auch nicht):
#!/bin/sh
for titel in 201?-* # Die Verzeichnisse fangen mit der Jahreszahl an, nur diese sollen bearbeitet werden
do
echo $titel
echo "--"
for tsvideo in $titel/*.ts
do
mpvideo=$titel/`basename -s .ts $tsvideo`.mp4
echo $titel $tsvideo $mpvideo
# ffmpeg -i $tsvideo $mpvideo
done
echo "-----------------------------"
done
Ich habe ettliche Verzeichnisse, die mein SAT-PVR aufgenommen hat. Die Aufnahmen werden in mehrere *.ts - Dateien aufgeteilt, die maximal 3.9GB groß sind. Je nach Auflösung und Länge der Aufnahme befinden sich verschieden viele Dateien im Ordner.
Was ich bis jetzt per script hinbekomme, ist daß jedes Aufnahmeverzeichnis durchsucht wird und jede *.ts Datei in eine gleichnamige *.mp4 codiert wird. Kann ffmpeg das auch in einer do ... done Schleife gleich beim Codieren in eine einzige Datei schreiben?
Hier mein bisheriges Script, ist nicht optimiert und noch "entschärft", weil ich noch am Basteln bin (mit NoPaste hat es nicht funktioniert, und so lang ist es auch nicht):
#!/bin/sh
for titel in 201?-* # Die Verzeichnisse fangen mit der Jahreszahl an, nur diese sollen bearbeitet werden
do
echo $titel
echo "--"
for tsvideo in $titel/*.ts
do
mpvideo=$titel/`basename -s .ts $tsvideo`.mp4
echo $titel $tsvideo $mpvideo
# ffmpeg -i $tsvideo $mpvideo
done
echo "-----------------------------"
done
Re: 000.ts 001.ts 002.ts .... zu einer mp4 codieren?
ich weiss nicht welcher codec in den .ts - Dateien vorhanden ist.
keine .ts Dateien zum testen
sowas kann ffmpeg ob es das ist was du willst?
2016-tvp-480p.mkv
2017-tvp-480p.mkv
2018-tvp-480p.mkv
ins Verzeichnis mit den Videos
gruss MaGe
keine .ts Dateien zum testen
sowas kann ffmpeg ob es das ist was du willst?
2016-tvp-480p.mkv
2017-tvp-480p.mkv
2018-tvp-480p.mkv
ins Verzeichnis mit den Videos
Code: Alles auswählen
ffmpeg -safe 0 -f concat -i <(printf "file '$PWD/%s'\n" 201?-*) -c copy output.mp4
gruss MaGe
Wir müssen uns vor der Klimaerwärmung nicht fürchten.
Uns rottet die soziale Kälte viel früher aus.
Uns rottet die soziale Kälte viel früher aus.
Re: 000.ts 001.ts 002.ts .... zu einer mp4 codieren?
Das hier sind die Infos, die z.B. in einem der *.ts Dateien stecken:
40205
Die Konvertierung mit ffmpeg funktioniert so weit schon mal, Feineinstellungen kann man immer noch machen. Nur kommen halt einzelne Dateien dabei heraus, ich hätte sie gerne gleich in einer Datei, sonst muss ich nochmal durch alle Verzeichnisse einzeln gehen oder alle in KDEnlive oder AviDemux zusammenkleben.
Im Idealfall habe ich nach dem Durchlauf des Scriptes eine *.mp4 Datei, bei der ich nur noch Anfang und Ende trimmen muss, und ggf. noch Werbung herausschneide, ohne alles noch einmal neu zu kodieren.
40205
Die Konvertierung mit ffmpeg funktioniert so weit schon mal, Feineinstellungen kann man immer noch machen. Nur kommen halt einzelne Dateien dabei heraus, ich hätte sie gerne gleich in einer Datei, sonst muss ich nochmal durch alle Verzeichnisse einzeln gehen oder alle in KDEnlive oder AviDemux zusammenkleben.
Im Idealfall habe ich nach dem Durchlauf des Scriptes eine *.mp4 Datei, bei der ich nur noch Anfang und Ende trimmen muss, und ggf. noch Werbung herausschneide, ohne alles noch einmal neu zu kodieren.
Re: 000.ts 001.ts 002.ts .... zu einer mp4 codieren?
201?currock hat geschrieben: Nur kommen halt einzelne Dateien dabei heraus, ich hätte sie gerne gleich in einer Datei
zuallererst ich habe überhaupt keine ahnung von skripten,
ich matsche mir aus dem internet allerlei zusammen.
Ich teste das so weit wie möglich auf meinem PC
immer Sicherung von den Dateien anlegen!!
Ändern der 201? in *.ts
konsole
wechseln in den ordner 201? mit den .ts dateien
Code: Alles auswählen
ffmpeg -safe 0 -f concat -i <(printf "file '$PWD/%s'\n" *.ts) -c copy output.mp4
gruss MaGe
Wir müssen uns vor der Klimaerwärmung nicht fürchten.
Uns rottet die soziale Kälte viel früher aus.
Uns rottet die soziale Kälte viel früher aus.
Re: 000.ts 001.ts 002.ts .... zu einer mp4 codieren?
Gerade darum geht es mir ja. Das Script soll durch alle Aufnahmeverzeichnisse, die mit der Jahreszahl anfangen (deswegen 201?*), durchgehen, die *.ts-Dateien umcodieren, und zwar in eine einzige *.mp4 Datei, die dann idealerweise den Namen des Verzeichnisses trägt, ohne daß ich von Hand noch mal hinterhergehen muss.MaGe hat geschrieben:25.03.2018 16:06:36Ändern der 201? in *.ts
konsole
wechseln in den ordner 201? mit den .ts dateien
output.mp4 umbenennenCode: Alles auswählen
ffmpeg -safe 0 -f concat -i <(printf "file '$PWD/%s'\n" *.ts) -c copy output.mp4
Zur Verdeutlichung:
home/guido/Multimedia/Videorecorder/2018-03-11.01.25.03-ONE_HD-783_Doctor_Who/ mit den Dateien
-rw------- 1 guido guido 32K Mär 11 02:25 info3.dvr
-rw------- 1 guido guido 3,9G Mär 11 02:25 000.ts
-rw------- 1 guido guido 64K Mär 11 02:25 000.dvr
-rw------- 1 guido guido 3,9G Mär 11 03:04 001.ts
-rw------- 1 guido guido 64K Mär 11 03:04 001.dvr
-rw------- 1 guido guido 3,9G Mär 11 03:44 002.ts
-rw------- 1 guido guido 64K Mär 11 03:44 002.dvr
-rw------- 1 guido guido 3,9G Mär 11 04:25 003.ts
-rw------- 1 guido guido 64K Mär 11 04:25 003.dvr
-rw------- 1 guido guido 363M Mär 11 05:06 004.ts
-rw------- 1 guido guido 64K Mär 11 05:06 004.dvr
Und herauskommen soll dann idealerweise eine Datei mit dem Namen
2018-03-11.01.25.03-ONE_HD-783_Doctor_Who.mp4
Die Verzeichnisse, die mit der Jahreszahl anfangen, werden so von meinem SAT-Receiver angelegt und von mir noch mit einer Kurzbeschreibung versehen. (Easy-One, hat ca. 35€ gekostet, läuft aber tadellos).
Re: 000.ts 001.ts 002.ts .... zu einer mp4 codieren?
Ja, nun probiere doch die Zeile von MaGe mal aus (mir ist seine <()-Konstruktion etwas suspekt, die lässt sich schwer debuggen):
Wenn das klappt, musst du nur noch ein cd in jedes Verzeichnis machen und das output.mp4 nach deinen Wünschen setzen.
Code: Alles auswählen
cd /home/guido/Multimedia/Videorecorder/2018-03-11.01.25.03-ONE_HD-783_Doctor_Who/
ffmpeg -safe 0 -f concat -i <(printf "file '$PWD/%s'\n" *.ts) -c copy output.mp4
Never change a broken system. It could be worse afterwards.
"No computer system can be absolutely secure." Intel Document Number: 336983-001
"No computer system can be absolutely secure." Intel Document Number: 336983-001
Re: 000.ts 001.ts 002.ts .... zu einer mp4 codieren?
Dank an MaGe und NAB erstmal, das hilft jedenfalls schon mal weiter.
Dann werden alle *.ts in dem Verzeichnis neu codiert und aus (in diesem Fall) 12 GB werden 1,9 GB.
Nur wenn ich das so in ein Script einbauen will (um alle Verzeichnisse durchzugehen) gibt es eine Fehlermeldung:
Ich bin mich auch eher am durchwursteln. Wozu das %s beim (printf "file '$PWD/%s'\n" *.ts) ist, habe ich auch noch nicht herausgefunden.
Ich habe es noch so abgeändert:NAB hat geschrieben:27.03.2018 06:26:40Wenn das klappt, musst du nur noch ein cd in jedes Verzeichnis machen und das output.mp4 nach deinen Wünschen setzen.Code: Alles auswählen
ffmpeg -safe 0 -f concat -i <(printf "file '$PWD/%s'\n" *.ts) -c copy output.mp4
Code: Alles auswählen
ffmpeg -safe 0 -f concat -i <(printf "file '$PWD/%s'\n" *.ts) Doctor_Who.mp4
Nur wenn ich das so in ein Script einbauen will (um alle Verzeichnisse durchzugehen) gibt es eine Fehlermeldung:
Code: Alles auswählen
Syntax error: "(" unexpected
Re: 000.ts 001.ts 002.ts .... zu einer mp4 codieren?
Ist das so erwünscht?currock hat geschrieben:01.04.2018 02:08:48Dann werden alle *.ts in dem Verzeichnis neu codiert und aus (in diesem Fall) 12 GB werden 1,9 GB.
Das könnte an dem Script liegen, welches du uns vorenthältst. Insbesondere sollte es mit:currock hat geschrieben:01.04.2018 02:08:48Nur wenn ich das so in ein Script einbauen will (um alle Verzeichnisse durchzugehen) gibt es eine Fehlermeldung:
#!/bin/bash
anfangen.
Das steht auch nirgendwo so richtig, nicht mal in "man 3 printf". Dazu bräuchtest du ein C Handbuch, welches "printf()" gründlich durchkaut. Das %s ist der Platzhalter, der durch sämtliche *.ts ersetzt wird. So extravagant hätte ich mir das auch nicht zurechtgebastelt. Die ganze Konstruktion stammt von hier:currock hat geschrieben:01.04.2018 02:08:48Wozu das %s beim (printf "file '$PWD/%s'\n" *.ts) ist, habe ich auch noch nicht herausgefunden.
https://trac.ffmpeg.org/wiki/Concatenate
Die Alternativen erzeugen alle eine extra .txt Datei pro Verzeichnis (pro Film) auf der Platte. Das ist zwar umständlicher und mehr Code, aber meiner Meinung nach leichter verständlich und leichter zu debuggen. Ich sehe aber keinen Grund, warum du es nicht genau so lassen solltest wie es ist.
Never change a broken system. It could be worse afterwards.
"No computer system can be absolutely secure." Intel Document Number: 336983-001
"No computer system can be absolutely secure." Intel Document Number: 336983-001
Re: 000.ts 001.ts 002.ts .... zu einer mp4 codieren?
einmal mit %s und ohne %scurrock hat geschrieben: Ich bin mich auch eher am durchwursteln. Wozu das %s beim (printf "file '$PWD/%s'\n" *.ts) ist, habe ich auch noch nicht herausgefunden.
printf "file '%s'\n" ./*.mkv > mit-s.txt
file './tvs-agents-of-shield-ded-dl-ithd-x264-301.mkv'
file './tvs-agents-of-shield-ded-dl-ithd-x264-302.mkv'
file './tvs-agents-of-shield-ded-dl-ithd-x264-303.mkv'
und ohne %s
printf "file \n" ./*.mkv > ohne-s.txt
file '
gruss MaGe
Wir müssen uns vor der Klimaerwärmung nicht fürchten.
Uns rottet die soziale Kälte viel früher aus.
Uns rottet die soziale Kälte viel früher aus.