Drag'n'Drop-Encoding

  • Hallo,

    ich möchte viele Videos meiner Digicam per Drag and Drop von MJPEG/PCM zu x264/FAAC transcoden.

    Im Moment mache ich das manuell mit AviDemux. Das Ergebnis ist gut, aber der Aufwand zu groß.


    Gibt es ein Tool, bei dem man die Videos vorne reinkippt, die Parameter übergibt, und hinten das fertige mp4-File rauskommt?


    AviDemux kann AFAIK per Kommandozeile nicht mit FAAC umgehen. Sonst wäre das vermutlich genau das Richtige für mich.

    Ich habe mir nun schon MeGui angesehen. Ich habe nach viele Probiererei auch ein Video mit der One-Click-Funktion hinten herausbekommen und im Log scheint man auch die Kommandozeilen zu erhalten, aber daraus kann ich mir keine Batchdatei basteln. Dafür sind das einfach zu viele Scripte, die ich da erstellen müsste.

  • Willst du nun mit einem "One Click" GUI arbeiten oder per Kommandozeile ??? :grübeln:


    Falls du mit Kommandozeile arbeitest, kannst du dir eine einfache Batch Datei selbst zusammen basteln:

    1. Video enkodieren mit Avidemux (alternativ x264.exe, MEncoder.exe oder ffmpeg.exe)

    2. Audio encodieren mit dem Nero AAC Encoder

    3. Alles mit MP4Box oder MKVtoolnix zusammen muxen


    Wenn du ein einfaches "One Click" GUI suchst, dann würde ich mal Handbreak oder MediaCoder angucken ;)


    Zitat

    AviDemux kann AFAIK per Kommandozeile nicht mit FAAC umgehen. Sonst wäre das vermutlich genau das Richtige für mich.

    Ich benutze Avidemux selten per Kommandozeile, aber was genau funktioniert da ausgerechnet mit FAAC nicht?

  • Hallo Lord_Mulder,

    sorry, dass ich erst jetzt antworte.


    Ich suche eine Möglichkeit, Videos per Batchdatei zu encoden, denn für die Videos meiner DigiCam benutze ich fast immer die gleichen Einstellungen.
    OneClick von MEGUI habe ich nur benutzt um nachvollziehen zu können, wie dieses Tool vorgeht. Das habe ich aber nicht gerafft.

    Die Möglichkeiten AviDemux per Kommandozeile zu steuern, sind stark begrenzt. Unter anderem kann man FAAC nicht per Kommandozeile als Zielformat einstellen. Zumindest ist dafür in der Dokumentation nichts angegeben.

    Guckstu zweite Zeile in der Tabelle:
    http://avidemux.org/admWiki/index.…_usage#Commands

    Ich habe dort zwar testweise mal "AAC" und "FAAC" angegeben, aber das hat nicht funktioniert.


    Deine Dreischrittanleitung liest sich sehr einfach, aber genauso einfach hatte ich es probiert und bin gescheitert.
    MEGUI demuxt das Video zuerst, erstellt dabei einen Index, erstellt dann ein AVISynth-Script und erst mit diesem Script wird dann Video und Audio encodet.

    Wenn du eine Möglichkeit kennst, wie ich ein Video (MJPEG/PCM) direkt, also ohne Avisynth encoden kann, bin ich ganz Ohr :)
    Die drei Prozesse bekomme dann auch ich bestimmt in eine Batchdatei gepackt. :)


    Am Liebsten würde ich es aber mit AviDemux_Cli machen, denn dann bräuchte ich nur ein Programm aufzurufen, welches sich um den ganzen Rest kümmert.

  • Die Möglichkeiten AviDemux per Kommandozeile zu steuern, sind stark begrenzt. Unter anderem kann man FAAC nicht per Kommandozeile als Zielformat einstellen. Zumindest ist dafür in der Dokumentation nichts angegeben.

    Guckstu zweite Zeile in der Tabelle:
    http://avidemux.org/admWiki/index.…_usage#Commands

    Ich habe dort zwar testweise mal "AAC" und "FAAC" angegeben, aber das hat nicht funktioniert.

    Würde mich nicht darauf verlassen, dass das Wiki vollständig und auf dem aktuellen Stand ist.

    Im Zweifel lieber mal im Forum nachfragen, wie man es macht...


    Deine Dreischrittanleitung liest sich sehr einfach, aber genauso einfach hatte ich es probiert und bin gescheitert.
    MEGUI demuxt das Video zuerst, erstellt dabei einen Index, erstellt dann ein AVISynth-Script und erst mit diesem Script wird dann Video und Audio encodet.

    Wenn du eine Möglichkeit kennst, wie ich ein Video (MJPEG/PCM) direkt, also ohne Avisynth encoden kann, bin ich ganz Ohr :)
    Die drei Prozesse bekomme dann auch ich bestimmt in eine Batchdatei gepackt. :)

    Die Indizierung ist nur bei MPEG-Dateien notwendig. Ich gehe mal davon aus, dass deine MJPEG Dateien im AVI Container vorliegen.

    Ein Avisynth Script, den man direkt in x264.exe füttern kann, könnte daher so aussehen:

    Code
    AVISource("C:\Input.avi")ConvertToYV12()


    Ansonsten kann man es auch mit FFmpegSource machen:

    Code
    v = FFVideoSource("C:\Input.avi").ConvertToYV12()


    Oder eben mit DirectShowSource:

    Code
    DirectShowSource("C:\Input.avi")


    Mit AVISource() bzw. DirectShowSource() muss natürlich ein passender VFW bzw. DirectShow Decoder für MJPEG installiert sein (vorzugsweise ffdshow).


    Und wenn du den MEncoder benutzt, dann kannst du dir den "Umweg" über Avisynth ganz sparen, sofern du keine speziellen Filter in Avisynth anwenden willst:

    Code
    MEncoder.exe -ovc x264 -oac copy -x264encopts crf=22 -o "c:\Output.avi" "c:\Input.avi"
  • @ LoRd_MuldeR: Kann der Parameter "pixel_type" in AviSource nicht sinnvoller sein, um YV12 zu erhalten (wenn der VfW-Codec YV12 liefern kann)?

    Andererseits kann bei Interlaced-Video (ist bei MJPEG durchaus möglich) besser sein, YUY2 anzufordern, und ConvertToYV12(interlaced=true) zu verwenden...

  • @ LoRd_MuldeR: Kann der Parameter "pixel_type" in AviSource nicht sinnvoller sein, um YV12 zu erhalten (wenn der VfW-Codec YV12 liefern kann)?

    Kann schon sein ^^

    Funktioniert das denn auch noch, wenn der VfW Codec den "pixel_type" nicht liefern kann?

    Wie dem auch sei, ein ConvertToYV12() am Ende des Scriptes schadet jedenfalls nicht. Wenn die Daten schon als YV12 vorliegen ist das ein NOP.

  • "Schadet nicht" ist bei Interlaced-Video eine kühne Aussage (ein roter Ball fliegt vor einem blauen Himmel - das wird durch ein ConvertToYV12 ohne Interlaced-Option in lila Matsch verwandelt)... und unterstreicht im Grunde, warum Batch-Encoding bei weitem nicht so simpel ist wie es klingt.

  • "Schadet nicht" ist bei Interlaced-Video eine kühne Aussage (ein roter Ball fliegt vor einem blauen Himmel - das wird durch ein ConvertToYV12 ohne Interlaced-Option in lila Matsch verwandelt)... und unterstreicht im Grunde, warum Batch-Encoding bei weitem nicht so simpel ist wie es klingt.

    Ich sagte, wenn die Daten bereits als YV12 vorliegen, etwa weil der VfW Codec YV12 zurückliefert, dann schadet ein zusätzlicher Aufruf von ConvertToYV12() nicht, weil es einfach ein NOP ist.
    Gleichzeitig kann das Weglassen von ConvertToYV12() bei RGB quellen dazu führen, dass x264 den Script nicht akzeptiert, weil das Farbformat nicht unterstützt wird.

    Wenn die Daten tatsächlich interlaced sind, dann sollte man natürlich ConvertToYV12(interlaced=true) benutzen...

  • Würde mich nicht darauf verlassen, dass das Wiki vollständig und auf dem aktuellen Stand ist.

    Im Zweifel lieber mal im Forum nachfragen, wie man es macht...

    Das habe ich einfach mal gemacht.



    Die Indizierung ist nur bei MPEG-Dateien notwendig. Ich gehe mal davon aus, dass deine MJPEG Dateien im AVI Container vorliegen.

    Jau. Ich hatte da etwas vermischt. Ich hatte beim Testen von MEGUI gerade kein gutes Quellvideo da, mit dem ich die Qualität von MEGUI testen konnte und hatte deshalb ein VOB genommen.
    Dass ein VOB anders bearbeitet werden muss, hatte ich nicht bedacht.

    Sehe ich das richtig, dass ich ein AVI mit MJPEG/PCM dann einfach ohne zu demuxen in x264.exe schieben kann?
    Geht das dann mit dem Ton genauso?
    Dann wäre ich ja wirklich in den von dir genannten 3 Schritten fertig.
    Das werde ich heute Abend noch mal angehen.


    Zitat


    Ein Avisynth Script, den man direkt in x264.exe füttern kann, könnte daher so aussehen:

    Code
    AVISource("C:\Input.avi")ConvertToYV12()

    Das sieht ja gar nicht wild aus.
    Wenn ich ohne Avisynth-Script auskomme, wäre mir das lieber, denn dann brauche ich per Batchdatei keine Datei zu erstellen, diese mit Text zu füllen und wieder löschen. Für jemanden, der da gelegentlich macht, ist das sicher eine Klacks, aber ich müsste erst wieder lange suchen, bis ich mir die nötigen Befehle dafür zusammen gesucht hätte.


    Zitat


    Ansonsten kann man es auch mit FFmpegSource machen:

    Code
    v = FFVideoSource("C:\Input.avi").ConvertToYV12()


    Oder eben mit DirectShowSource:

    Code
    DirectShowSource("C:\Input.avi")


    Mit AVISource() bzw. DirectShowSource() muss natürlich ein passender VFW bzw. DirectShow Decoder für MJPEG installiert sein (vorzugsweise ffdshow).

    Örks.
    Ich vermute, dass jedes dieser Varianten so ihre Eigenheiten hat und man bei jeder unterschiedliche Sachen bedenken muss.


    Zitat


    Und wenn du den MEncoder benutzt, dann kannst du dir den "Umweg" über Avisynth ganz sparen, sofern du keine speziellen Filter in Avisynth anwenden willst:

    Code
    MEncoder.exe -ovc x264 -oac copy -x264encopts crf=22 -o "c:\Output.avi" "c:\Input.avi"


    Das ist alles?
    MEGUI hat ellenlange Kommandozeilen erzeugt. Ist das alles überflüssig?
    Muss man für eine optimale Effizienz (gutes Bild bei kleiner Dateigröße) nicht ein paar Parameter angeben (Deblocking, Trellis, ...)?

    Bei MEGUI waren haufenweise Presets bei, und ich hatte gehofft, das eines für meine Videos geeignet sei. Bei Avidemux weiß ich ja, dass es gute Ergebnisse liefert.

    Muss ich für MEncoder nichts demuxen? Auch nicht für den Ton?


    Ich hoffe, ich nerve nicht, aber ich habe leider kaum einen Überblick.

  • Sehe ich das richtig, dass ich ein AVI mit MJPEG/PCM dann einfach ohne zu demuxen in x264.exe schieben kann?

    Ja, mit Avisynth und einem passenden Quell-Filter (AVISource, FFVideoSource, DirectShowSource) geht das!

    Geht das dann mit dem Ton genauso?

    x264.exe verarbeitet überhaupt kein Audio. Der Audio Stream müsste also separate konvertiert und dann gemuxt werden.

    Das ist alles?
    MEGUI hat ellenlange Kommandozeilen erzeugt. Ist das alles überflüssig?
    Muss man für eine optimale Effizienz (gutes Bild bei kleiner Dateigröße) nicht ein paar Parameter angeben (Deblocking, Trellis, ...)?

    Das hängt natürlich ganz davon ab, welche x264 Parameter du setzen willst. Standardmäßig verwendet x264 eher "konservative" Einstellungen. Es gibt eine ganze Reihe von Parametern mit denen man sich bessere Qualität (bei gleicher Datenrate) durch niedrigere Enkodiergeschwindigkeit erkaufen kann. Etwas "--me", "--subme", "--merage", "--ref", "--bframe", "--b-adapt" und "--trellis". Und es gibt Parameter, bei denen man einen "sinnvollen" Mittelwert finden muss, da hier weder "zu viel" noch "zu wenig" gute Ergebnisse liefert. Dazu zählt VAQ, der Deblocking Filter sowie Psy RDO und Psy Trellis.

    Muss ich für MEncoder nichts demuxen?

    Nö, MEncoder schluckt so ziemlich alles was es gibt.

    Faustregel: Wenn es der MPlayer abspielt, dann konvertiert es auch der MEncoder ;)

    Auch nicht für den Ton?

    Jop. MEncoder liest auch den Ton direkt aus der Quell-Datei. Und im Gegensatz zu x264.exe kann MEncoder den Ton auch selbst verarbeiten.

  • @ Schnarchnase:

    Das mit dem Nachfragen wegen FAAC in AviDemux -- ich glaube, da war nicht unser Forum (Gleitz) gemeint, sondern eines, in dem die Avidemux-Autoren Mitglieder sind.

    Ach so, ihr wollt mich hier loswerden :)

    Welches Forum würdet ihr denn empfehlen? Da geht's doch bestimmt nach auswärts, oder?

  • Ja, mit Avisynth und einem passenden Quell-Filter (AVISource, FFVideoSource, DirectShowSource) geht das!

    Aha. Dann würde das wohl doch keine einfache Drei-Schritt-Batchdatei werden.


    Zitat


    x264.exe verarbeitet überhaupt kein Audio. Der Audio Stream müsste also separate konvertiert und dann gemuxt werden.

    Ohne Hilfe bin ich da verloren. Ich habe gerade mal FAAC.eXE und NeroAACenc.exe angeschmissen, aber die wollen beide nur mit WAVs zusammen arbeiten.

    Dann habe ich mal nach einem Demuxer gegoogelt, aber auf die Schnelle nichts passendes gefunden. Es sollte ja auch schon was halbwegs modernes sein, was vernünftig arbeitet.
    Und dann habe ich keine Infos dazu gefunden, ob die Encoder auch mit 11.025 Hz zurecht kommen und das zu 44.100 Hz ändern können.

    Bfff...
    Da tut sich eine Baustelle nach der anderen auf.
    Da werd ich ja nie fertig.


    Zitat


    Das hängt natürlich ganz davon ab, welche x264 Parameter du setzen willst. Standardmäßig verwendet x264 eher "konservative" Einstellungen. Es gibt eine ganze Reihe von Parametern mit denen man sich bessere Qualität (bei gleicher Datenrate) durch niedrigere Enkodiergeschwindigkeit erkaufen kann. Etwas "--me", "--subme", "--merage", "--ref", "--bframe", "--b-adapt" und "--trellis". Und es gibt Parameter, bei denen man einen "sinnvollen" Mittelwert finden muss, da hier weder "zu viel" noch "zu wenig" gute Ergebnisse liefert. Dazu zählt VAQ, der Deblocking Filter sowie Psy RDO und Psy Trellis.

    Dafür braucht man wohl viel Erfahrung oder ein paar gute Presets, gelle?
    Das war mit ein Grund, warum ich mir den MEGUI angesehen habe, denn bei den Presets konnte ich vom Namen in etwa auf das Ergebnis schließen und ich konnte dann mit den Standard-Einstellungen von AviDemux vergleichen.


    Zitat


    Nö, MEncoder schluckt so ziemlich alles was es gibt.

    Das hört sich sehr gut an :)

    Taugt der denn auch was? Also encodet nicht schnarchlahm und ist vor allem die Qualität bei annehmbarer Dateigröße ordentlich?

    Zitat


    Faustregel: Wenn es der MPlayer abspielt, dann konvertiert es auch der MEncoder ;)

    Wenn ich mit AviDemux nicht weiterkomme, dann komme ich bestimmt auf MEncoder zurück.

    Gibt es da eine gute Seite oder FAQ, die ein paar gute Presets, bzw. Empfehlungen hergibt?
    Bisher habe ich mit DivX in -q3 bzw. später mit AviDemux x264 -q24 encodet und war mit der Qualität zufrieden. Dieses Qualitätsniveau möchte ich behalten.
    Ist das mit MEncoder möglich?


    Zitat


    Jop. MEncoder liest auch den Ton direkt aus der Quell-Datei. Und im Gegensatz zu x264.exe kann MEncoder den Ton auch selbst verarbeiten.


    <Sabber> :)
    Welchen Grund gibt es dann eigentlich noch, etwas anderes zu verwenden?
    Irgendwo muss doch auch ein Haken sein, oder?

  • Zitat

    Taugt der denn auch was? Also encodet nicht schnarchlahm und ist vor allem die Qualität bei annehmbarer Dateigröße ordentlich?


    arbeitet intern mit x264, d.h. je nach Aktualität der x264 Version im mencoder ist die Qualität wie die von x264 in der Version. :)

    Zitat

    Welchen Grund gibt es dann eigentlich noch, etwas anderes zu verwenden?


    1. Avisynth hat die besseren Filter.
    2. Faac ist nicht so dolle bei niedrigeren Datenraten

    Cu Selur

  • 1. Avisynth hat die besseren Filter.

    Nich zuvergessen, dass auch MPlayer/MEncoder Avisynth-Input akzeptieren...

    Zitat von Schnarchnase

    Ich habe gerade mal FAAC.eXE und NeroAACenc.exe angeschmissen, aber die wollen beide nur mit WAVs zusammen arbeiten.

    Nach WAV zu convertieren sollte kein Problem sein:

    MPlayer.exe -vo dummy −ao pcm:waveheader:file=foobar.wav "C:\Input.avi"

    Welches Forum würdet ihr denn empfehlen? Da geht's doch bestimmt nach auswärts, oder?

    Mal davon abgesehen, dass deine Frage hier schon beantwortet wurde, findest du das Avidemux Forum dort:

    http://avidemux.org/admForum/

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!