Beiträge von 7oby

    redone_times: Aus Deiner Frage geht nicht eindeutig hervor, ob Du

    Fall 1) einfach drei video und drei audio Spuren in einem .mkv zusammenklatschen willst. Also z.B. 4:3 Format; 16:9 Format und 16:9 anamorph sowie deutsch, englisch, spanisch.

    Fall 2) Du meinst, dass aus 3x 1h Film insgesamt ein 3h Film werden soll.

    Wenn man bei .mkv ist, bleibt man aus guten Gründen bei .mkv (.mkv wurde gerade erfunden um viele Schwachstellen von .avi zu überbrücken). Ansonsten ginge aus Kompatibilitätsgründen zu bestimmten Hardwareplayern auch .m2ts oder .mp4. Also Fall 1) kannst mit mkvmerge (GUI) behandeln.

    Fall 2) geht aber auch mit mkvmerge - da muss dann ein "+" vor das zweite .mkv:
    mkvmerge -o output.mkv part1.mkv +part2.mkv
    http://www.bunkus.org/videotools/mkv…c/mkvmerge.html

    Wenn die TrackIDs nicht zusammen passen, müssen sie mti "−−append−to" angepasst werden. Vielleicht geht das auch mit der mkvmerge GUI.


    CALL "%tooldir%\%2" ^ "%base%.dga" ^ %tooldir% ^ >"%base%.avs"
    Was möchtest Du damit erreichen?

    Sagen wir das Skript liegt in C:\hdtv. Dadurch, dass convert.bat mit den Parametern "meinStream.ts scripts\template_dx_video720p.bat" aufgerufen wird, expandiert sich obige Zeile zu

    CALL C:\hdtv\scripts\template_dx_video720p.bat meinStream.dga C:\hdtv >meinStream.avs

    template_dx_video720p.bat generiert also die Datei meinStream.avs mit etwa folgendem Inhalt und das müsstest Du überprüfen:

    Code
    LoadPlugin("C:\hdtv\dgavcdec100a15\DGAVCDecode.dll")
    LoadPlugin("C:\hdtv\TIVTCv102\TDeint.dll")
    AVCSource(meinStream.dga)
    CropBottom(8)
    BilinearResize(1280, height)
    TDeint()
    BilinearResize(width, 720)

    Die .dga Datei hat zuvor übrigens DGAVCIndex.exe erzeugt.

    --

    Wenn's mehrere uneindeutige PIDs gibt, dann hat man natürlich ein Problem. Ziel des Skripts war vollautomatisierte Konvertierung - ohne Benutzerinteraktion. In dem Fall wie Du schon gemacht hast: Zuerst die PIDs manuell vorgeben und wenn man die Struktur seiner .ts Files erkannt hat, dann ggf. das Skript anpassen.

    x264.exe ist dann ausgestiegen mit: " Rawyuv input requires a resolution." Somit habe ich noch ein [1920x1080] hinter das Input-File geschrieben


    Das ist ganz sicher nicht so wie's sein soll. Denn der Import der MPEG4-AVC Daten erfolgt mit AviSynth (und nicht raw YUV!). Avisynth gibt dann auch die korrekte Auflösung an x264 weiter. Bei Dir hat irgendetwas mit Avisynth nicht geklappt (hast das überhaupt installiert?).

    --

    Es ist empfehlenswert die gesamte Toolkette manuell zuerst zu probieren, da das "Debuggen" so einfacher ist. Mit manuell meine ich die Tools einzeln anstoßen und Ergebnisse kontrollieren. Nachdem alles geprüft ist, kann es in einem Rutsch als Skript laufen. Ggf. das Löschen der temporären Zwischendateien auskommentieren, um so wieder leichter debuggen zu können.

    Das Skript ist generell nur empfehlenswert, wenn man wirklich vollautomatisieren möchte. Möglicherweise gibt es heute schon Tools, die dies leisten. Zum Zeitpunkt als dieses Skript entstanden ist, gab es diese Tools nicht.

    Ein weiter Punkt, den man sich überlegen sollte: Muss ich wirklich zeitaufwändig transcoden? Das Skript hat Dateien für die PS3 aufbereitet und dessen MPEG4-AVC Dekoder hat eben gewisse Einschränkungen. Zur Archivierung von HDTV per DVB-S2 auf dem PC spricht auch nichts dagegen lediglich den Transport-Stream aufzutrennen und die wichtigen Video + Audio spuren in MP4 oder .MKV zu muxen. Denn der PC kann alles abspielen. Transcoden kann aber auch hier (DVB-S2) sehr nützlich sein. Beispielsweise hatte ich 720p50 Streams, die 50Hz Bilder enthielten. Da die zugrunde liegende Videoquelle jedoch 25Hz (bzw. hoch gepitches 23,976fps) Material war, waren jeweils zwei aufeinander folgende Bilder jeweils gleich (und trotzdem neu kodiert). In diesem Fall habe ich einfach jedes zweite Bild verworfen um nur das "echte" Video zu speichern und konnte so die benötigte Bandbreite deutlich reduzieren.

    Will man trotzdem transcoden sei noch auf den DXVA nVidia Decoder für H.264 von neuron2 verwiesen:
    http://forum.doom9.org/showthread.php?t=141104
    Damit kann man das Transcoden noch deutlich beschleunigen sofern man eine moderne nVidia Grafikkarte besitzt und außerdem das Quellmaterial mit dem DXVA H.264 GPU Decoder von nVidia kompatibel ist.

    Ja die "Anamorphität" geht verlohren. Nicht aber das korrekte Seitenverhältnis.

    Aber denk' mal genau nach, ob Du das sagen wir 1280 x 720 wirklich anamorph speichern willst als sagen wir 1024 x 720.

    Du hast nämlich ein 1080p Original, dass nicht in 1920 x 1080 gespeichert ist, sondern einer geringeren Auflösung und nur auf die höhere Auflösung unter Qualitätsverlust interpoliert wird. Jetzt rechnest Du's runter auf 1280 x 720. Hier ist die Qualität dann besser als wenn Du's noch weiter runterrechnest auf 1024 x 720 und den AR anpasst.

    Es gibt nur zwei theoretische Gründe anamorphes 720p zu verwenden:

    1. Dein Abspielgerät ist an den Grenzen seiner Leistungsfähigkeit. Du musst weniger Pixel encoden, damit's beim Abspielen nicht ruckelt. In dem Fall würde ich aber eher an der Bitraten-Schraube drehen und diese reduzieren, was auch gleichzeitig einer etwas geringeren Gesamtkapazität des Zielmaterials zu Gute kommt. Also Aspekt/Ratio nicht unbedingt die ideale Schraube

    2. Das 1080p Original hatte horizontal schon weniger als 1280 Pixel. Dann würde ich das Anamorph beibehalten aber in einem anderen Verhältnis.

    Lies mal hier so rum:
    http://encodingwissen.de/video/anamorph-quelle.html

    Wenn Du anamorph brauchst, kannst das beim Encoding z.B. im x264 mit --sar einstellen. Auch möglich, dass man das im Container (MP4) auch nochmal angeben kann.

    bg,
    7oby

    vielleicht auch mal einfach ffmpeg/mencoder versuchen


    mencoder hab' ich mal vor einem halben Jahr probiert. Mir gefällt das ganz Programm nicht. Man weiß einfach nicht was es tut.

    ffmpeg hab' ich jetzt nicht direkt probiert, aber nochmal einen Versuch mit ffdshow-tryouts beta 4a rev1723 restartet. Funktioniert auch soweit ganz gut. Ähnlich wie CoreAVC. Allerdings versagen beide dramatisch bei PremiereHD Sport Übertragungen bei echten 50fps (25Hz interlaced). Beide würfeln Szenen wild durcheinander. Witzigerweise beide nur, wenn ich den AviSynth Frameserver mittels DirectShowSource() bemühe, jedoch nicht wenn ich diese im WMP wiedergebe.

    Ich möchte aber ohnehin weg von DirectShow u.a. wegen Portabilität: Auf jedem Rechner sind unterschiedliche Codecs mit unterschiedlichen Merits und Features installiert. Ein portables Konvertertool wie Xvid4PSP bekommt man auf Basis von DirectShowSource nicht gescheint hin.

    @EDIT: seit 6. Februar 2008 gibt's eine Command Line Version von DGAVCDec 1.0.0 Alpha 15
    http://forum.doom9.org/showthread.php?p=1096739#post1096739

    Meine Skripts habe ich sofort angepasst und es läuft prächtig. Ohne Audio/Video Versatz und ohne DirectShow Filter Abhängigkeiten. Hier mal aktualisierte Skripts von mir, der ein oder andere mag' sich da vielleicht was abgucken. z.B. wie man xport automatisiert:

    convert_720p.bat:

    Code
    @ECHO OFF:: keep system interactive, by assigning low task priority:START /BELOWNORMAL convert.bat %1 scripts\template_dx_video720p.bat

    convert.bat:

    Code
    @ECHO OFFset filepath=%~dp1set ext=%~x1set base=%~n1set tooldir=%CD%cd /D %filepath%if NOT "%ext%"==".ts" goto usage:: demux with xport:"%tooldir%\xport\xport" -p "%base%".ts 0 0 0 >_xport.outFOR /F "tokens=4" %%a IN ('FINDSTR /C:"Program Number" _xport.out') DO (  echo Program Number %%a found in %base%.ts. Demuxing ...  "%tooldir%\xport\xport" "%base%".ts %%a 1 1 >_xport.out2)REN bits0001.mpv "%base%.h264":: create .dga file for AviSynth MPEG4-AVC importFOR /F "delims=()x tokens=3" %%a IN ('FINDSTR /C:"Program Number" _xport.out') DO (  "%tooldir%\dgavcdec100a15\DGAVCIndex.exe" -i "%base%.h264" -v %%a -o "%base%.dga" -f 0 -h)DEL /Q _xport.out:: set correct filename extensionFOR /F "tokens=8" %%a IN ('FINDSTR /C:"Audio PID" _xport.out2') DO set audiotype=%%aIF "%audiotype%"=="0x06" (  REN bits0001.mpa "%base%.ac3") ELSE (  REN bits0001.mpa "%base%.mpa")DEL /Q _xport.out2:: extract audio .> .wav:: BeSweet requires correct filename extension to detect audio typeif exist "%base%.ac3" (  set audiosrc="%base%.ac3") else (  if exist "%base%.mp2" (    set audiosrc="%base%.mp2") else (    set audiosrc="%base%.mpa"))"%tooldir%\BeSweetv1.4\BeSweet.exe" -core( -input %audiosrc% -output "%base%.wav" -2ch -logfile "%base%.BeSweet.log" ) -azid(-s stereo -c normal -L -3db )DEL /Q %audiosrc% "%base%.BeSweet.log":: convert .wav -> .aac"%tooldir%\neroAacEnc_v1_1_34_2\neroAacEnc_SSE.exe" -br 128000 -lc -if "%base%".wav -of "%base%".aacDEL /Q "%base%".wav:: put filename in .avsCALL "%tooldir%\%2" ^ "%base%.dga" ^ %tooldir% ^ >"%base%.avs":: convert video"%tooldir%\x264.revision.667.icl\x264.exe" --bitrate 8192 -A all --aud --level 4.1 --ref 3 --mixed-refs --bframes 3 --direct auto --threads auto --thread-input --progress "%base%.avs" -o "%base%264.mp4"DEL /Q "%base%.h264" "%base%.dga" "%base%.avs":: mux audio + video -> .mp4"%tooldir%\MP4Box\MP4Box.exe" -add "%base%264.mp4" -add "%base%.aac" -new "%base%.mp4"DEL /Q "%base%264.mp4" "%base%.aac"goto end:usageecho usage:echo %0 filename.ts:endREM exit

    scripts\template_dx_video720p.bat fehlt noch:

    Code
    @ECHO OFF
    echo LoadPlugin("%2%\dgavcdec100a15\DGAVCDecode.dll")
    echo LoadPlugin("%2%\TIVTCv102\TDeint.dll")
    echo AVCSource(%1%)
    echo CropBottom(8)
    echo BilinearResize(1280, height)
    echo TDeint()
    echo BilinearResize(width, 720)

    Vorteile:
    . vollautomatisch
    . transcoding mit niedriger Taskpriorität
    . volle Kontrolle über 720p, 1080p, Deinterlacer (hier braucht man nur einzeilige zusätzliche convert_1080p, convert_720p_deinterlace, die jeweils convert.bat parametrisiert aufrufen)
    . MultiCore Support
    . keine DirectShow Filter Abhängigkeit

    Nachteile / ToDos:
    . Einige Operationen wie [ts -> .mpv/.mpa demux] sowie [.mpv -> PS3 MPEG4-AVC] geschehen im gleichen Verzeichnis / gleiche Platte. Hier wäre es besser beide Kopieroperationen mit source/target auf unterschiedlichen Platten zu haben. Also: Support für ein TEMP Verzeichnis auf einer anderen Platte.

    bg,
    7oby

    Benötige einen vollautomatischen (also ohne Benutzerinteraktion) Konverter MPEG4-AVC featured .ts -> MPEG4-AVC Playstation 3 kompatibel.

    Mittlerweile schneide ich meine H.264TS-Streams mit der neusten Version vom H264TS_Cutter. Und in der geschnittenen .ts-Datei ist alles synchron. Bloß wenn ich die Datei weiter bearbeiten will (über AviSynth mit DirectShowSource) wird das Ergebnis asynchron, scheinbar sind Fehler in der .ts-Datei (dabei entfallen Frames und dadurch ist das Bild schneller als der Ton).

    Das Problem habe ich ebenfalls bei folgender vollautomatischer Toolkette:

    . x264 mit PS3 encoding settings
    + Video über AviSynth DirectShowSource() mit HaaliMediaSplitter
    + Deinterlace und Crop 1088->1080 meist über CoreAVC
    + FFDShow-Tryouts wäre für Deinterlace ebenso möglich
    . neroAacEnc für .wav -> .aac
    + Audio Extract mit VirtualDub Script von gleichem .ts mit HaaliMediaSplitter
    . MP4Box

    Meine .ts Dateien sind laut TSPE fehlerfrei. Ansonsten hätte ich ggf. auch auf Frame drops getippt.

    Was mich wundert: Im WMP kann ich das .ts ohne Audio/Video synchron Probleme abspielen.

    Zitat von bergi

    xport kann einwandfrei synchron demuxen

    Das ist meine zweite Toolkette:
    . xport .ts -> audio + H.264 video elementary streams
    . video mux in MKV
    . x264 mittels DirectShowSource(.mkv)
    . Belight MPEG-audio -> .wav
    . neroAacEnc .wav -> .aac
    . MP4Box

    Ergebnis ist Video + Audio synchron. Allerdings ist das etwas schwieriger zu automatisieren. Außerdem stört mich noch der Umweg über den MKV mux.

    Hab' dann auch mal DGAVCDec Alpha 13 probiert:
    . xport .ts -> audio + H.264 video elementary streams
    . DGAVCIndex .mpv -> .dga
    . x264 auf AviSynth mit DGAVCDecode.dll
    . Belight MPEG-audio -> .wav
    . neroAacEnc .wav -> .aac
    . MP4Box
    Auch synchron. Vorteil ist, dass ich nicht mehr am DirectShow-Filter hänge. Bei manchen Codec Merits macht das Probleme und erfordert auf Rechnern auf denen es Laufen soll die volle Kontrolle über die installierten Codecs.

    Allerdings scheint DGAVCIndex keine Commandline Options mehr zu unterstützen. Also derzeit nicht automatisierbar (klick).

    Hab' dann noch probiert'
    . x264 direkt vom .ts mit Haali Media Splitter
    . xport .ts -> audio (Idee ist, dass dieser den Audio Offset richtig berechnet)
    . audio -> .aac
    . MP4Box

    Ist allerdings asynchron.

    Warum klappt's mit dem Haali Media Splitter nicht?
    Wie geht's mit xport elegant und synchron?

    bg,
    7oby