Ah ok danke ![]()
Ja das mit VirtualDub hab ich mir schon gedacht, aber als der mir 30min angezeigt hat, hab ich vergessen dass verlustfreie Videos ja extrem lange zum schreiben brauchen xD
Um schreiben oder kommentieren zu können, benötigst du ein Benutzerkonto.
Du hast schon ein Benutzerkonto? Melde dich hier hier an.
Jetzt anmeldenHier kannst du ein neues Benutzerkonto erstellen.
Neues Benutzerkonto erstellenAh ok danke ![]()
Ja das mit VirtualDub hab ich mir schon gedacht, aber als der mir 30min angezeigt hat, hab ich vergessen dass verlustfreie Videos ja extrem lange zum schreiben brauchen xD
Wenn es verlustfrei ist, wäre die schnellste Methode wohl mit MkvMerge bzw. MkvToolnix - einfach die Timestamps angeben und fertig. Ansonsten geht es meines Wissens auch mit VirtualDub, wenn auch minimal aufwändiger.
Nah ich würde keine Lossless VfW Codecs in MKV stecken. Das ist doch bullshit. Warum den Container überhaupt wechseln.
Klar. Virtualdub. Daran ist absolut auch nichts aufwändig. Blödsinn.
@GrandFiredust Hast du denn bei Video auf Direct Stream Copy gestellt? Standardmäßig wird er sonst unkomprimiert machen. Und beim Processing Fenster natürlich keine Preview angehakt lassen. Für diesen Zweck natürlich beim Codec die Threads auf Vollgas (auch bei Stream Copy, denn irgendwie muss das Video ja auch decodiert werden) und die 64bit Version von Virtualdub hilft ebenfalls.
Auch nicht zu vergessen: Wenn du die gleiche Platte verwendest, muss sie natürlich lesen UND schreiben.
//edit
Scheint nicht mal aufwändiger zu sein, vielleicht sogar schneller weil Timeline statt Framezahlen: afterdawn.com/guides/archive/cut_avi_with_virtualdub.cfm
Du hast gerad offiziell rausgefunden wie man mit SSM mit einer von dir betitelten Timeline schneiden kann. Herzlichen Glückwunsch ![]()
Klar Direct Stream Copy + Preview raus ![]()
Ca. 40 FPS processing rate = 40min für ein 30min Video (50fps).
Das ganze ist ffmpeg's UTVideo (kp ob der auf die Threads im normalen Utvideo reagiert)
Das ganze ist ffmpeg's UTVideo
Wird damit auf alle Fälle langsamer laufen als der richtige Encoder. Auch beim Decode. Wenn ich mich nicht irre, war das nämlich auch dann so.
Du hast keine Probleme mit dem ffmpeg utvideo in OBS? Eig. dürfte der Performanceverlust durch OBS mit ffmpeg ziemlich frustrieren.
Bei der Aufnahme (Dead by Daylight) hab ich keine Performanceprobleme gehabt, beim Decode schon xD
Magix hat ziemliche Probleme das ganze Einzulesen und ist sehr langsam dabei, genauso wie beim Audio extrahieren. Zum Vergleich: mit dem normalen UTVideo hat es überhaupt keine Probleme.
Dxtory's Audioextractor kann das PCM gar nicht rauslesen aus der ffmpeg UtVideo Datei. Das Fenster schließt sich sofort.
Und ab 1h Videolänge stürzt Magix ab wenn man das Video reinzieht xDD (Ja gut ... liegt zum großen Teil natürlich auch an Magix selbst)
Deswegen muss ich die Datei ja auch gerade splitten ![]()
@Sargaras
Genau eben diesen Skript. MeGUI wird auf deinem Rechner temporär ein AVISynth Skript erstellt haben. Genau dessen Inhalt wird gesucht.
Der ist relevant was mit deinem Video passiert.
Steht aber nicht grad viel drin
global MeGUI_darx = 96
global MeGUI_dary = 41
LoadPlugin("C:\Users\Default\Desktop\meGUI\tools\lsmash\LSMASHSource.dll")
LWLibavVideoSource("D:\MeguiWorking\hlspk0hm.pdj\d-braveheart-1080p.mkv.lwi")
#deinterlace
#denoise
@Archimondro
Das Skript ergibt nicht viel Sinn ![]()
Die globalen Variablen werden nirgendwo genutzt und beim Video Source wird die Index Datei eingelesen, obwohl die an sich noch gar nicht existiert am Anfang.
Kann mich jetzt nicht entsinnen das L-Smash ein externen Indexer hat.
Und ich glaube auch kaum das der Filter das Video nur anhand der Angabe der Indexdatei auslesen wird ![]()
Naja... werd ich nicht schlau draus was das soll ![]()
Aber hast du nun was mit der DTS -> PCM was erreicht? Haste mal selbst ein wenig probiert?
Das Skript ergibt nicht viel Sinn
schön dass es nicht nur mir so geht ![]()
Aber hast du nun was mit der DTS -> PCM was erreicht? Haste mal selbst ein wenig probiert?
Leider noch nicht, hab im Moment kaum Zeit, werd aber ne kleine Rückmeldung machen sobald ich es mal probiert hab.
http://www.golem.de/news/video…inemodus-1612-124906.html
"Netflix nutzt VP9-Codec für Offlinemodus"
Das dürfte für einige sicherlich interessant sein.
Desweiteren hört sich der AV1 Codec soweit schon vielversprechend an.
https://en.wikipedia.org/wiki/AOMedia_Video_1
Kann man eigentlich irgendwie herausfinden welcher Skalierer von einem Schnittprogramm verwendet wird?
Schwerlich, wenn es nirgendwo konkret steht.
Wenn man es nicht irgendwo raus bekommen kann vom Entwickler z.B., dann bleibt nur eine mühsame Vergleichsanalyse der Videos.
Für so eine Analyse nehme man am besten ein Pixel Testbild mit feinen Pixellinien auf schwarzen Grund.
MSPaint sollte dir für sowas reichen.
Aus diesem Testbild lässt du ein Roh RGB Video erstellen. Achte darauf das du kein YUV nutzt um spätere Verwischeffekte aufgrund des YUV Farbraumes zu verfälschen.
Das RGB Video wird dann als TestVideo verwendet in den jeweiligen Programmen. In den Programmen selbst sollte man dann am besten um das 4fache oder höher der Videoauflösung skalieren um die Muster dann zu erkennen. Das Video sollte dann wieder mit RGB Verlustfrei abgespeichert werden.
AVISynth ist dann dein Freund und Helfer. Denn dort machst du das gleiche mit dem TestVideo. Dann lädst du das andere Video was du mit der Schnittsoftware erstellt hast auch hinein und lässt beide nebeneinander darstellen. Und dann vergleichst du die Kanten, ob es Ringing aufweisen tut usw.
Die Testvideos sehen dann identisch aus, solltest du in AVISynth den passenden Skalierer genutzt haben.
Wie gesagt... sehr Mühsam. Aber ich denke das man das sonst ohne weiteres nicht herausbekommt, wenn es nicht irgendwo schon steht.
Im Normalfall wird bei Schnittsoftware sehr beliebt Bicubic oder Bilinear verwendet.
Bei TMPGenc und Shotcut kannst du aber auch schon auf Lanczos, Spline und Point antreffen.
Ich kenn mich leider mit AviSynth nicht so gut aus ![]()
Ich hab jetzt ein 360p Raw Testvideo und ein mit Magix skaliertes 1440p Video.
Wie kann ich die jetzt mit AviSynth bzw. mit dem SSM vergleichen?
Nimm am besten AVSPmod als Editor. Das wird dir dann ungemein helfen, vor allem auch wegen der Vorschau schon und den Zoom den du dort nutzen kannst.
Und dann musst du dein Testvideo dort reinziehen und ebenfalls auf das 4x fache skalieren.
http://avisynth.nl/index.php/Resize
Wenn du den passenden Skalierer gefunden hast wird das Bild identisch aussehen.
Aber Vorsicht wie gesagt: Du musst dann schon eine genaue Pixel Analyse vornehmen. Ein Bild wo jeder Pixel unterschiedlich ist, weil es sich um ein neutrales Bild handelt, kannst du keine Analyse nachvollziehen, weil du jeglichen Bezug somit zerstört hättest.
Am besten ist immer ein TestBild mit einem schwarzen Hintergrund und darauf 4 senkrechte und waagerechte 1 pixel breite Streifen mit den Farben Rot, Grün, Blau und Weiß und zwischen jeden Streifen min. 6 pixel frei lassen. Damit kann die Schärfe später besser abgeschätzt werden.
Weil du siehst auf Schwarz sehr gut die Ringbildung dann auch
Auch solltest du Kreise mit diesen Farben einbauen. Damit testest du die Treppenbildung. Kreise dann auch wieder 1px breit.
Und die Farben sind dann halt auch so gewählt dann das du ein Farbverlust sogar wahrnehmen kannst, wenn das Video z.B. eine YV12 Konvertierung hinter sich hatte.
Damit hast du alle Test in einem Testbild drin und kannst es wunderbar vergleichen.
Soviel zum Testvideo.
Und nun zum AVISynth Part:
Hast du das in AVSPmod, kannst du mit einer Zoom Einstellung von 100% den aktuellen Frame als PNG Bild speichern.
Bei deinem Schnittprogramm holst du dir auch ein Frame raus. Das kannst du, wenn du es mit MagicYUV oder sonsteinen Lossless Codec abgespeichert hast ebenfalls mit AVISynth wieder raus holen:
Reicht absolut, da du nur ein Frame haben willst. Stellst den Zoom auf 100% ein und speicherst dann ebenfalls das Frame als PNG Bild.
AVSPmod bietet dir das dann auch an das mit der Bildspeicherung. Zoom und Bildspeicherung kannst du mit Rechtsklick im Vorschaufenster von AVSPmod erreichen.
Beachte: Dies ist ein reiner RGB Test. Da du ja nur die Skalierer ausfindig machen möchtest.
Bei YUV hast du Farbverluste mit drin, daher nicht nutzen, da du somit zur Analyse auch die Farbverluste zwecks dem Verschmieren der Interpolation der Farbunterabtastung fälschlicherweise mit berücksichtigen wirst.
Was aber nicht Ziel deiner Fragestellung ist.
RGB bietet sich deshalb an, weil du zum einen nicht mit Farbranges zu tun hast und zum anderen auch nix mit Farbmatrizen oder wie schon genannt den Farbunterabtastungen. Daher ist RGB ideal als Testquelle und Ausgabe.
Darauf halt immer achten.
Darum hast du auch die Regulär Farben drin im Testbild um das gleich ausschließen zu können. Weil das sieht man dann ;D
Ich habe zurzeit das Problem das Megui nicht die CPU auslastet.
Das Problem tritt nur auf wenn ich mit Effekten arbeite. Ich hab schon geschaut ob es am Martial lag, aber soweit habe ich alles gecheckt.
Anderes Material genommen andere Einstellungen das Problem bleibt bestehen leider.
Naja was für Effekte nutzt du den, weil die werden dann anscheinend langsamer sein als der Encoder von MeGui
Naja was für Effekte nutzt du den, weil die werden dann anscheinend langsamer sein als der Encoder von MeGui
Farbkorrektur, Schärfe und ein Filter.
Eigentlich bin ich froh wenn die CPU nicht ausgelastet wird. Warum sollte man dies also absichtlich wollen? ![]()
Prüf lieber nach was vor dem Encoder stattfindet, statt die Schuld beim Encoder zu suchen.
MeGUI nutzt AVISynth. Also wäre es schon mal von Vorteil zu wissen was die Mediainfo zu deinem Quellvideo sagt das du in MeGUI lädst und was du im AVISynth Skript alles verwendest. Nicht das du es absichtlich ausbremsen tust.
Eigentlich bin ich froh wenn die CPU nicht ausgelastet wird.
Naja wenn die CPU zu 100% ausgelastet ist, dann ist man am Maximum der Möglichen Geschwindigkeit und sollte das so nicht sein, dann bremst da irgendwas aus, was die Dauer erhöht, das ist wieder blöd.
Eigentlich bin ich froh wenn die CPU nicht ausgelastet wird. Warum sollte man dies also absichtlich wollen?
Besser die CPU auf 10% lassen und dann ist 1 Video ca. nach 12 Stunden fertig hört sich gut an xD ![]()
Hier mal das Script:
### SagaraS Scriptmaker - Version 6.1 ###
### Lade Plugins und setze die globalen Variablen ###
Global breite = 2048
Global hoehe = 1152
Global AR = 0
### Lade Videoquellen ###
SetMTMode(3)
AVIload("D:\Karmaa Games\Beyond Two Souls\Videos\Beyond.avi", 0, 0, 0, -0, -0, "Auto", "Auto", 0, 0)
### Filter Verarbeitungszone ###
SetMTMode(2)
last.Trim(0, 60015)
(IsYUY2() == true) ? ConvertToYV16(matrix = "Rec709", ChromaResample = "Spline64") : Last
### Funktion für Video-Laderoutine ###
Function AVIload (String file, int loading, int cl, int co, int cr, int cu, string pixtype, string afps, int fpsn, int fpsd) {
pixtype2 = (pixtype == "YUY2") ? "YUY2" : (pixtype == "RGB24") ? "RGB24" : (pixtype == "Y8") ? "Y8" : (pixtype == "YV12") ? "YUV420P8" : (pixtype == "YV24") ? "YUV444P8" : pixtype
(loading == 1) ? FFIndex(file) : nop()
clip0 = (loading == 3) ? (pixtype == "Auto") ? LWLibavVideoSource(file) : LWLibavVideoSource(file, format = pixtype2) : (loading == 2) ? Import(file).KillAudio() : (loading == 1) ? (pixtype == "Auto") ? FFVideoSource(file, threads=1) : FFVideoSource(file, threads=1, colorspace=pixtype) : (pixtype == "Auto") ? AVISource(file, false).KillAudio() : AVISource(file, false, pixel_type=pixtype).KillAudio()
clip1 = clip0.AutoFPS(afps, fpsn, fpsd).Cropping(cl, co, cr, cu)
Return (clip1.width == breite && clip1.height == hoehe) ? clip1.ConvertToYV12(matrix = "Rec709", ChromaResample = "Spline64") : Clip1.Resize()
}
Function AutoFPS (Clip clip0, string afps, int fpsn, int fpsd) {
rate1 = (afps == "Auto") ? (Round(Float(clip0.framerate * 1000)) / 1000) / 2 : nop()
rate2 = (afps == "Auto") ? Round(clip0.framerate) / 2 : nop()
rate = (afps == "Auto") ? (rate1 == rate2) ? 1 : 1001 : (afps == "Igno.") ? clip0.frameratedenominator : fpsd
ratefaktor = (afps == "Auto") ? (rate == 1001) ? 1000 : 1 : nop()
clip0 = (afps == "Auto") ? (rate == 1001) ? clip0.AssumeFPS(Round(clip0.Framerate) * 1000, rate) : clip0.AssumeFPS(round(clip0.framerate), rate) : (afps == "Igno.") ? clip0.AssumeFPS(clip0.frameratenumerator, rate) : clip0.AssumeFPS(fpsn, rate)
Return clip0.ChangeFPS(60, 1)
}
Function Cropping (Clip clip0, int cl, int co, int cr, int cu) {
clip0 = (clip0.IsRGB32() == True) ? clip0.ConvertToRGB24() : clip0
Return (cl != 0
co != 0
cr != 0
cu != 0) ? clip0.Crop(cl, co, cr, cu) : clip0
}
Function Resize (Clip clip1) {
clip1 = (AR == 1) ? ((float(Clip1.height * breite) / clip1.width) / 2 == round((float(Clip1.height * breite) / clip1.width) / 2)) ? ((float(Clip1.width * hoehe) / clip1.height) / 2 == round((float(Clip1.width * hoehe) / clip1.height) / 2)) ? clip1 : clip1.ConvertToRGB24() : clip1.ConvertToRGB24() : clip1
clip1 = (AR == 1) ? (((clip1.width * hoehe) / clip1.height > breite) ? Clip1.Spline64Resize(breite, ceil(float(Clip1.height * breite) / clip1.width)) : Clip1.Spline64Resize(ceil(float(clip1.width * hoehe) / clip1.height), hoehe)) : clip1.Spline64Resize(breite, hoehe).ConvertToYV12(matrix = "Rec709", ChromaResample = "Spline64")
back = (AR == 1) ? (0 == 1) ? ImageReader("", 0, clip1.framecount - 1, clip1.framerate).ChangeFPS(Clip1.frameratenumerator, Clip1.frameratedenominator).Spline64Resize(breite, hoehe).ConvertToYV12(matrix = "Rec709", ChromaResample = "Spline64") : BlankClip(clip1, width = breite, height = hoehe, pixel_type = "YV12").KillAudio() : clip1
Return (AR == 1) ? Overlay(back, clip1, (back.width - clip1.width) / 2, (back.height - clip1.height) / 2) : clip1
}
PS. Liegt aber nicht am Material sondern an was anderem, denn wenn ich das Video ohen Effekte Render dann ist es wie gewohnt bei 100% CPU Auslastung.
Naja wenn die CPU zu 100% ausgelastet ist, dann ist man am Maximum der Möglichen Geschwindigkeit und sollte das so nicht sein, dann bremst da irgendwas aus, was die Dauer erhöht, das ist wieder blöd.
Jein.
Ich kann dir gern ein Tool schreiben was nur ne Text Datei öffnet, aber trotzdem deine gesamte CPU auslastet. ![]()
Will damit sagen das die Geschwindigkeit nicht unbedingt damit gemessen wird wie hoch der CPU Verbrauch ist.
Die CPU Auslastung erhöht sich nur wenn mehrere Rechnungen stattfinden. Sprich nur dann wenn auch wirklich was passiert.
Und es wird nur soviel verbraucht wie nötig.
Ein Beispiel:
Ist es nötig ein Bitmap Bild mit einer CPU Auslastung von 100% abzuspeichern?
Nein, es ist sogar der Gegenteil der Fall.
Ist es nötig die CPU komplett aus zu nutzen beim Video Encoding?
Nein, wäre sogar Kontraproduktiv.
Eine CPU die ausgelastet ist verlangsamt sämtlichen anderen Dienst am PC. Und das will man in der Regel gar nicht.
Spiele wollen das im Prinzip auch nicht. Wäre auch Fatal bei einem Spiel die komplette CPU aus zu lasten
Weil dann kannste dem Spielvergnügen gute Nacht sagen, weil die Eingabegeräte gar nicht mehr reagieren und dir dein OS langsam absäuft ![]()
Ein Encoder will auch nicht unbedingt die ganze CPU nutzen. Aber ein Encoder ist ohnehin CPU Mäßig limitiert. Zum einen muss er das Input Material verarbeiten und zum anderen muss er oft auch warten auf diese.
Darum ist der Encoder sowas wie ein Trichter. Er kann nicht mehr verarbeiten als das was grad ankommt und dem was er grad schafft.
Für das was beim Encoder ankommt sind im Falle von MeGUI 3 Sachen wichtig.
Festplatte des Quellmaterials
Quellmaterial an sich
und AVISynth
Die Geschwindigkeit der Festplatte muss halt ausreichen, was sie in den meisten Fällen ja meist tut. Das Quellmaterial muss schnell genug decodiert werden und verarbeitet werden von AVISynth, dazu sind schon mal Einlesefilter wichtig wie z.B. FFMS2, L-Smash, AVISource, etc.
Und dann wird der Quark ja noch gewiss durch einige Filter laufen, wobei AVISynth ohne MT nur mit einem Kern läuft in der Regel.
Heißt auf Deutsch: Der Encoder langweilt sich, weil nix ankommt womöglich.
Oder der Encoder ist recht stark eingestellt das er lange braucht um zu kodieren. In diesem Falle muss man an den Einstellungen schrauben.
Aber du kannst mir glauben das kein vernünftiger Entwickler der Welt die CPU mit absicht auslasten will. Das wäre einfach nur Fail dann. ![]()
Kann man im Falle MeGUI und x264 sogar beeinflussen den CPU Verbrauch.
Die Presets sind ja nicht umsonst nach Geschwindigkeiten benannt. Je schneller, desto weniger CPU ist von nöten.
PS. Liegt aber nicht am Material sondern an was anderem, denn wenn ich das Video ohen Effekte Render dann ist es wie gewohnt bei 100% CPU Auslastung.
Effekte brauchen Berechnungs Zeit. Die lässt du aber wie ich es sehe nicht mit AVISynth machen, oder? Weil wenn du diese Effekte in deiner Schnittsoftware machst sollten die am Besten über die GPU weites gehend laufen und nicht via CPU. Sonst bremst du dein System bewusst selbst aus.
Immer dran denken: Rendern und Encodieren sind 2 unterschiedliche Sachen. Das eine schreit förmlich danach mit GPU zu arbeiten. Das andere möchte CPU ;D
Besser die CPU auf 10% lassen und dann ist 1 Video ca. nach 12 Stunden fertig hört sich gut an xD
Das ist ein bisschen Mau mit 10% ![]()
Aber 100% ist etwas arg viel. Solange es aber nicht alle Kerne machen ist das auch ok.
Immer dran denken: Eine CPU will niemand zu 100% auslasten.
Aber im Low Modus ist es auch nicht grad prickelnd für etwas was schneller kann laufen.
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!