Probleme beim Abspielen nach Schnitt

Begonnen von Maischens, November 05, 2015, 12:02:47

« vorheriges - nächstes »

Djfe

Zitat von: Maischens am November 11, 2015, 17:55:19
Zitat von: Djfe am November 10, 2015, 23:35:50
FFmpeg: da werd ich dir noch was raussuchen

Stark. Ich warte gespannt :-)

normalerweise sollten 192kbit/s mehr als ausreichen
besonders da AC3 viel besser komprimiert als MPEG
192kbit/s entspricht da wahrscheinlich 256kbit/s oder noch mehr in einer MPEG
und man kann natürlich nicht mehr Qualität herausholen, als da ist

du könntest die Bitrate aber z.B. kleiner stellen, wenn du Platz sparen willst

lohnt sich aber nicht, da der Ton kaum Speicherplatz frisst (im Vergleich zum Video)
wenn du Platz sparen willst, lohnt es sich die ganze Aufnahme z.B. mit Handbrake zu encodieren (neu zu speichern)
dabei wird die Datei verkleinert, indem u.A. Informationen weggelassen werden und andere besser komprimiert werden,
wenn man zu aggressive Settings wählt sieht/hört man die Unterschiede sogar, die Datei wird aber deutlich kleiner

weitere Infos findest du hier:
https://trac.ffmpeg.org/wiki/Encode/HighQualityAudio


nach etwas Überlegung würde ich dir also empfehlen, keine spezielle Bitrate anzugeben, FFmpeg selbst scheint da schon ganz gute Entscheidungen zu treffen ;)
besonders, wenn du keinen Unterschied zwischen dem Originalton und dem neu encodierten aus FFmpeg hörst

Maischens


Also ich gehe mal davon aus das ich den Unterschied zwischen 256 und 192 nicht wirklich beurteilen kann. Habe auch gesehen das die SD Aufnahmen eh nur 192 kbits haben.

Habe derweil beim Ausprobieren der TS 2.0 die Batch Funktion für gut befunden und nach kurzem suchen entdeckt....die gibt es auch schon in der 1.2 :-)

Gibt es die Möglichkeit auch für ffmpeg? Also das ich mehrere Dateien angebe die dann nacheinander abgearbeitet werden?

Djfe

for %%a in ("*.ts") do "PFAD ZU FFMPEG" -i "%%a" -map 0 -c:v copy -c:a ac3 "neueDateien\%%~na.mkv"
der Code nimmt alle .ts Dateien im aktuellen Pfad und speichert sie mit anderem audio codec und als mkv aber ansonsten gleichem Dateinamen im Ordner "neueDateien"
wenn es den noch nicht gibt, wird er automatisch angelegt

PFAD ZU FFMPEG sollte durch einen festen Pfad zu ffmpeg ersetzt werden, wenn er bei dir nicht schon in der Umgebungsvariable steht (konntest du ffmpeg einfach so über die Kommandozeile aufrufen oder musstest du in einen anderen Ordner wechseln?)

was gibt ffmpeg -version bei dir aus, wenn du es in die Commandozeile kopierst und ausführst?

Maischens

 Also ffmpeg hat die Version N-76526-ga5202bc

Wenn ich den gedownloadeten Ordner öffne ist da eine ff-prompt.bat drin und die hab ich geöffnet.

Also kann ich mit diesem Befehl das Umwandeln der .ts in .mkv durch den TS Doc sparen?

Muss ich den Pfad auch mit den Klammern und Anführungszeichen eingeben?

Zum Thema Pfad zu ffmpeg. Reicht da der Oberordner oder muss ich noch eine bestimmte Datei anführen?

Könntest du mal ein komplettes Beispiel aufzeigen? Ich seh grad nicht so richtig durch :-)

Djfe

eigentlich wollte ich nur wissen, ob du einfach nur ffmpeg aus der commandline ausführst
aber die prompt Datei fügt ffmpeg zur Umgebungsvariable von Windows hinzu, d.h. es reicht, wenn du ffmpeg schreibst, du brauchst keinen Pfad anzugeben

ja du musst die Pfade mit Anführungszeichen und Klammern angeben

wenn die .ts Dateien in einem anderen Pfad sind musst du diesen einfach nur angeben, wenn sie in dem Ordner sind in dem du mit der commandline bist reicht *.ts:
for %%a in ("D:\Filme\*.mkv") do ffmpeg -i "%%a" -map 0 -c:v copy -c:a ac3 "D:\neueDateien\%%~na.mkv"

wenn du aus einem Ordner die Eingabeaufforderung öffnen willst, dann halte die Umschalttaste gedrückt und klicke in dem Ordner mit der rechten Taste
danach öffnet sich die Eingabeaufforderung in diesem Ordner

und nein ich würde dir empfehlen weiter den TSD zum remuxen zu verwenden, damit die Synchronisation zwischen den Audiospuren erhalten bleibt
eig. sollte FFmpeg das aber auch können
außerdem kann nur FFmpeg Batchumwandeln der aber TSD nicht

es hängt von der Menge der Aufnahmen ab, die du bearbeitest

Maischens

Also ich habe das mal versucht.

Jedoch gibt mir ffmpeg folgendes aus: "%%a" kann syntaktisch an dieser Stelle nicht verarbeitet werden.

tsduser

Zitat von: Maischens am November 16, 2015, 12:16:29
Jedoch gibt mir ffmpeg folgendes aus: "%%a" kann syntaktisch an dieser Stelle nicht verarbeitet werden.

Diese Meldung kommt hoechstwahrscheinlich nicht von ffmpeg, sondern vom Windows-Kommandointerpreter.
Wo genau, d.h. auf welche Weise wurde "das mal versucht"?

Die Zeile mit den doppelten %% wird so in einer Batch-Datei (*.cmd oder *.bat) verwendet; auf der Kommandozeile selbst wird dagegen nur EIN % verwendet.

PS:
Im letzten Beispiel duerfte auch ("D:\Filme\*.ts") gemeint gewesen sein, und nicht ("D:\Filme\*.mkv")

Djfe

das wusste ich bisher gar nicht
hab bisher immer mit .cmd getestet und nicht auf der Commandline

@Maischens versuch mal auf der Kommandozeile stattdessen ein % zuverwenden statt 2

also
for %a in ("D:\Filme\*.mkv") do ffmpeg -i "%a" -map 0 -c:v copy -c:a ac3 "D:\neueDateien\%a"
ich hab am Ende den Teil mit der Tilde weggelassen, da die Datei ja eine mkv bleiben soll, sich die Endung also nicht ändert

wenn du es als ausführbare Datei willst
öffne notepad und schreibe
for %%a in ("D:\Filme\*.mkv") do ffmpeg -i "%%a" -map 0 -c:v copy -c:a ac3 "D:\neueDateien\%%a"
pause

ersetze noch dei Pfade
dann speichern unter
Dateityp: Alle (nicht txt)
und z.B. als convert.cmd
das .cmd ist wichtig der Name der Datei ist beliebig

dann speichern und starten
am besten erstmal mit Testordnern, sodass nichts kaputt geht

Maischens

#23
Zitat von: Djfe am November 16, 2015, 23:38:42

for %a in ("D:\Filme\*.mkv") do ffmpeg -i "%a" -map 0 -c:v copy -c:a ac3 "D:\neueDateien\%a"


Wenn ich diese Anweisung in der ffprompt.bat eingebe werden nacheinander alle Dateien mit dem selben Fehler abgehakt. Siehe Bild im Anhang.

Wenn ich dies in eine ausführbare Datei eingebe, muss ich dann statt "do ffmpeg" einen Pfad dahin angeben?

Also z.B.

for %%a in ("D:\Filme\*.mkv") do C:\Users\maisc\Downloads\ffmpeg -i "%%a" -map 0 -c:v copy -c:a ac3 "D:\neueDateien\%%a"
pause

In diesem Falle sind alle Dateien im Ordner Downloads im Unterordner ffmpeg.

Wäre das so korrekt oder muss ich dann noch auf eine Datei innerhalb des ffmpeg Ordners verweisen?

Noch ne dumme Frage: Wenn ich den ffmpeg nach C Programme x86 verschiebe, wie ist dann der genaue Pfad? Wenn ich C:\programm files (x86)\ffmpeg angebe dann hängt es am Leerzeichen nach "programm".????

Mam

#24
Zitat von: Maischens am November 17, 2015, 09:23:46
for %a in ("D:\Filme\*.mkv") do ffmpeg -i "%a" -map 0 -c:v copy -c:a ac3 "D:\neueDateien\%a"

Nachdem man Dich so mit gesundem Halbwissen quält, die obige Zeile ist natürlich syntaktisch falsch und kann nicht funktionieren.
Abgesehen davon, dass man heute lieber die Powershell nehmen sollte, als sich durch eine krumpelige FOR Schleife in der Batch zu quälen, Deine Chancen steigen ungemein, wenn Du es so schreibst:

for %a in ("D:\Filme\*.mkv") do ffmpeg -i "%a" -map 0 -c:v copy -c:a ac3 "D:\neueDateien\%~na%~xa" (alternativ kann man auch "%~nxa" schreiben)

(Erklärung: bei der Ausgabedatei soll ja ein anderer Pfad verwendet werden, da muß man natürlich erstmal den alten für abschneiden und nur Dateinamen und Endung überlassen)
(Achtung! keinen extra Punkt zwischen Name und Endung! der Punkt ist automatisch Teil der Endung!)

Noch ein kleiner Hinweis für Dfje und andere Möchtegern-Shell-Gurus: Grundsätzlich ist es eine total blöde Idee, Variablen nur mit einem Buchstaben und den auch noch in Kleinschrift zu wählen! Mit Deinem "%a" hast Du zufällig Glück gehabt, aber probier mal aus, was passiert, wenn Du "n","x","p" (gibt noch einige andere Funktionen, bin jetzt zu faul, die ganze Liste rauszusuchen) statt "a" nimmst... Fährt voll gegen die Wand...
(als alter FORTRAN Hase weis man, dass "i","j" und "k" ungefährlich sind  ;D )


(Insgesamt finde ich den gesamten Ansatz aber als ziemlichen Krampf...)

Zitat
Noch ne dumme Frage: Wenn ich den ffmpeg nach C Programme x86 verschiebe, wie ist dann der genaue Pfad? Wenn ich C:\programm files (x86)\ffmpeg angebe dann hängt es am Leerzeichen nach "programm".????

Wie bei den Ostfriesen mit "DAS GRÜNE NACH OBEN!" gibt es auch hier eine einfache Regel: "ALLE PFAD/DATEINAMEN SIND IN ANFÜHRUNGSZEICHEN ZU SETZEN!"
Also, schreib "C:\Programme (x86)..." und schon klappts auch mit dem Nachbarn...

Maischens

Danke Mam. Ich habe die Anregungen gleich mal umgesetzt.

Meine fertiger Code für die ff-prompt.bat ist:

for %a in ("E:\01MKVMPEG\*.mkv") do ffmpeg -i "%a" -map 0 -c:v copy -c:a ac3 "E:\01MKVAC3\%~na%~xa"

Und siehe da. Es läuft soweit.

Die umgewandelten Filme laufen mit gemischtem Erfolg. Siehe Anhang. Bei Filmen mit dem Fehler Invalid DTS zeigt mir der Player nun "Videoformat nicht Unterstützt". Filme wo nur der Hinweis mit den global Headers kommt, laufen gut.


Wenn ich das ganze in eine .cmd packe sieht er so aus:

for %a in ("E:\01MKVMPEG\*.mkv") do "C:\Program Files (x86)\ffmpeg" -i "%a" -map 0 -c:v copy -c:a ac3 "E:\01MKVAC3\%~na%~xa"

Beim ausführen der cmd öffnet sich kurz die Konsole und schließt sich gleich wieder. Ähnlich auch wenn ich ...\ffmpeg\ff-prompt.bat einstelle.




tsduser

#26
Wir hatten oben bereits erwaehnt, dass IN EINER CMD die % DOPPELT zu verwenden sind.

Damit das Konsolfenster nicht gleich wieder zugeht, startest Du eine Kommandzeile aka Eingabeaufforderung, wechselst in das Verzeichnis, in dem Deine .cmd steht, und rufst diese dort durch Eingabe von "<NAME>.cmd" auf. Hier bitte <NAME> durch den von Dir verwendeten Namen der Batchdatei ersetzen.

Wenn Du Dir spasseshalber mal die ff-prompt.bat anschaust, so siehst Du, dass der Entwickler hier im Prinzip nix tut ausser die Pfadvariable zu erweitern, und eine Command-Shell mit veraendertem Prompt zu starten.

EDIT: Ueberfluessiges entfernt.

Maischens

#27
Also danke an tsduser. jetzt funktioniert es.

Aber nun mal was Grundsätzliches.

Der Urfehler mit dem nicht unterstützen Audioformat hat sich bei SD Aufnahmen in ein Problem mit dem MPEG Videoformat gewandelt.

Bei HD Aufnahmen ist als Videospur H264 angeben. Durch das Umwandeln der Tonspur von MPEG in AC3 spielt der Player diese nun sauber ab.

Bei SD Aufnahmen hat der Fehler "nicht unterstützten Audioformat" den Fehler "Nicht unterstütztes Videoformat" überdeckt.

Somit stellt sich jetzt die Frage ob der Aufwand Audio und Videospur umzuwandeln sich mit einem anderen Receiver umgehen lässt. (Zwischfrage: Der Receiver nimmt HD Programme zwar mit 50fps auf aber nur mit 1280x7.. Pixel auf. Geht das nicht in 1920x1080?)

UND die Grundfrage warum mein Player die Filme im AVI Container ( SD, MPEG Ton und Bild) problemlos frisst, nur im MKV Container nicht???

Bin gerade echt planlos.

Mam

So mal ein Tipp, um das Ganze generell in den Griff zu bekommen: Was Du brauchst, ist nicht so eine einzeilige Batchdatei mit ein wenig ffmpeg im Hintergrund, sondern eine komplette Recode Lösung wie z.B. Handbrake (Dfje wird sicherlich was anderes empfehlen :-) ).

Hier definierst Du Dir einmal ein gewünschtes Zielformat (also z.B. "Ton grundsätzlich in AC3 wandeln" und "Bild immer in H264 wandeln") und speicherst Dir das als Profil ab. Dieses Profil definierst Du dann gleich als "Default" und schon wird jede Datei, die Du dort reinpackst (mit der Maus, ist nicht so batchartig) in dieses Zielformat umgerechnet.

Solltest Du mit dem Ergebnis bei SD Filmen nicht ganz zufrieden sein (stottern bei Schwenks z.B.), so gehst Du noch auf den Reiter "Filter" und aktivierst "Deinterlace" mit dem Wert "Default". Dies dann wieder als Profil gespeichert erlaubt den einfachen Wechsel der Profile mit einem Mausklick.

Und da sollte dann immer was rauskommen, was Dein Player auch verdauen kann...

Maischens

Sozusagen kann ich mit Handbrake in den MKV Dateien Ton und Bild in ein für mich geeignetes Format bringen. Somit würde der Workflow wie folgt aussehen.

TS Doc: TS Dateien zusammenführen und schneiden
TS Converter: Konvertieren der TS Datei in MKV
Handbrake: Bild und Ton der MKV anpassen.

Würde Handbrake in der von dir beschriebenen Konfig die Filme die schon in H264 sind trotzdem bearbeiten oder einfach durchreichen?


www.cypheros.de