Videoschnitt fast automatisiert...

  • Hallo Freunde,


    wieder mal möchte ich mir die Arbeit am Computer vereinfachen. Es kommt mitunter vor, das ich über DVB-C Film aufzeichne und die sind selbstverständlich vollgemüllt mit Werbung. Da ich das schon recht lange mache, habe ich viel viel Erfahrung mit ffmpeg. Viele Parameter und Optionen kommen da wie aus der Pistole geschossen, dennoch ist man es irgentwann lite, diese Schritte immer und immer wieder zu durchlaufen. Also muss man die Sache größtenteils automatisieren. Und das habe ich mittels eines Scriptes getan.


    Folgendes Script erledigt für euch.
    01) Fragt nach den Encodersettings für die Postproduktion (Videoschnitt) und der Ablage. (libx264, prores, prores_ks, dpx, ffv1, ffvyuv, huffyuv oder zlib(lossless codec library))
    02) Listet euch die verfügbaren TransportStreams auf. (mpegts (.ts))
    03) Sucht nach den idealen Video und Audiostream.
    04) Erkennt unnütze Ränder und rechnet diese gleich zur Postproduktion raus. ( Suchposition kann auch manuel bestimmt werden)
    05) Begrenzt Bilder pro Sekunde auf 25.
    06) Rechnet anamorphe Pixel (64:45) in quadratische (1:1) um.
    07) Konvertiert den Transportstream in ein Postproduktions konformes Intra-Frame Format.
    08) Startet ShotCut und das erstellte File, um den brauchbaren Anteil des Films zu markieren.
    09) Zerschneidet den Film in seine einzelnen Teile und entfernt die Werbung.
    10) Fügt die Teile wieder zusammen.
    11) Konvertiert und komprimiert den Film mit h264 zur Ablage.


    Vorteile:
    -Der Film wird im ersten Schritt fast lossless oder gar lossless mit libx264, prores, huffyuv, u.s.w. vorbereitet.
    -Präzises Schneiden (1000/25), da nur I-Frames benutzt werden. (nur Referenzbilder, keine Differenzialbilder B oder P)
    -Beim zerschneiden und zusammenfügen wird nicht erneut Encodiert, also recht schnell und kein weiterer Qualitätsverlust.
    -für Besitzer von neueren nVidia Grafikkarten habe ich h264_nvenc mit berücksichtigt. Damit encodiert der Computer extrem schnell und sauber.


    Nachteile:
    -Ein in Postproduktions-Verfahren kodierter Film ist auf Grund des ausschließlichen Einsatz von I-Frames extrem groß. Das geht los bei 20Mbit/s bis 285Mbit/s je nach Encoder und Encodersettings.


    Systemvorraussetzung:
    -Linux :D
    -Shell/Bash
    -ShotCut Videoeditor
    -ffmpeg
    -ffmpeg compiliert mit --enable-nonfree und --enable-nvenc, wenn ihr eure Grafikkarte zur Beschleunigung benutzen wollt


    Sonstiges:
    Es ist noch in der Entwicklung, funktioniert aber schon. Es ist trotzdem ratsam, wenn ihr den Code versteht, damit ihr wisst, was da passiert!!!
    Noch ein gut gemeinter Rat. DPX (Digital Picture Exchange) ist ein toller Encoder, da er verlustfrei ist, aber er ist auch verdammt noch mal, wahnsinnig Speicherhungrig.
    Der Encoder wird in der professionellen Filmproduktion eingesetzt und eigentlich ist es überflüssig ihn hier einzusetzen, na ja was soll, isch sage... isch tu's trotzdääääääääääääm.

    Den daraus entstandenen Stream könnt ihr nicht mit normalen Playern öffnen, da die meisten den dpx nicht kennen. Nicht einmal VLC!! Ihr könnt dafür ffplay benutzen...

    Aber behauptet hinterher nicht, ich hätte euch nicht gewarnt...


    Wichtig:
    Ich habe festgestellt, dass im Moment nicht mehr als 9 Film-Schnipsel mit ShotCut erstellt werden dürfen. Grund: Mir ist noch nicht klar wie "ffmpeg -concat" die genierierte Datei mit den Files einliest. Obwohl ich die Dateien bewusst so benenne, das sie vom Computer richtig chronologisch eingelesen werden, wirft ffmpeg bei mehr als 9 Schnipseln alles durcheinander.
    Wenn also jemand weiß, warum das so ist, bitte ich um Hilfe...


    ffmpeg wurde mit folgenden Parametern kompiliert:
    ffmpeg version 3.1.2 Copyright (c) 2000-2016 the FFmpeg developers
    built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.2) 20160609
    configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-ffplay --enable-avresample --enable-frei0r --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcdio --enable-libdc1394 --enable-libfaac --enable-libfdk-aac --enable-libmp3lame --enable-libopencv --enable-libtheora --enable-libtwolame --enable-libv4l2 --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxvid --enable-openal --enable-opencl --enable-opengl --enable-sdl --enable-cuda --enable-cuvid --enable-nvenc --enable-vdpau
    libavutil 55. 28.100 / 55. 28.100
    libavcodec 57. 48.101 / 57. 48.101
    libavformat 57. 41.100 / 57. 41.100
    libavdevice 57. 0.101 / 57. 0.101
    libavfilter 6. 47.100 / 6. 47.100
    libavresample 3. 0. 0 / 3. 0. 0
    libswscale 4. 1.100 / 4. 1.100
    libswresample 2. 1.100 / 2. 1.100
    libpostproc 54. 0.100 / 54. 0.100


    Was ist noch geplant:
    - Vorschau für die Crop-Settings per ffplay
    - Manuelle Auswahl des Audio und Videostreams
    - Subtitle berücksichtigen falls vorhanden
    - Rückgabewerte auswerten und differenziert handeln


    Versionsinfo:
    20160801-03 - release
    20160801-04 - fix - some bugs in function SELECT_FILM() - [ use 1 if ${FILM_CHOICE} are empty ]
    20160802-01 - add - set position to scan crop by manual
    20160802-02 - fix - two-pass encoding if chosing libx264
    20160802-03 - fix - some paths
    20160802-04 - add - increase speed, if only one movie_part is present. (no need to concat movie)
    20160802-06 - fix - CROP_AT is now valid between 0 - 59 minutes
    20160803-01 - add - !! outsource some parts of configuration. !!
    20160804-01 - add - autodetect ! crop values are invalid ! and force scan at other position.
    20160804-02 - add - function DETECT_CROP() is now checking the userinput.
    20160804-03 - fix - return invalid input in DETECT_CROP() if no userinput.
    20160804-04 - add - add dpx video-encoder for postproduction.
    20160804-05 - fix - no concat needed, if only one movie_part is present. (just copy)
    20160805-01 - add - check projectfile was saved and is'nt empty.
    ----------------------------------------------------------------------------------
    20160805-02 - fix - check projectfile is always 'not found'
    20160805-02 - change - input wide is now upscale to 1024px
    20160805-02 - fix - many little bugs ...
    20160805-02 - add - create var FILTER_SCALE for global configuration - stable release (tested with ffmpeg 3.1.2, nVidia Driver Version 361.31, nVidia CUDA 7.5 and nVidia Video Encoder SDK 6.01)
    ----------------------------------------------------------------------------------
    20160826-01 - add - lossless encoder ffv1, ffvyuv, huffyuv and zlib(lossless codec library)
    ----------------------------------------------------------------------------------
    20160828-01 - add - separate gop-settings for encoder to global configuration [ ${GOP} ]
    20160828-01 - add - separate video-bit-settings for encoder to global configuration [ ${VIDEO_BITRATE} ] - stable release (tested with ffmpeg 3.1.2, nVidia Driver Version 367.44, nVidia CUDA 7.5 and nVidia Video Encoder SDK 7.01)
    ----------------------------------------------------------------------------------
    20160829-01 - add - Configuration-Assist will call setup, if no config-file can't be found in userspace, or it is'nt executable.
    20160829-02 - fix - some bugs in Configuration-Assist.
    ----------------------------------------------------------------------------------
    20160913-01 - change - set yadif filter from 0:-1:0 to 1:-1:0. this will double up the framerate to 50fps. at the end of ffmpeg commandline the option -r 25 will reduce the framerate back to 25fps.
    (this is an workoverhead but the picture quality will be increase)
    ----------------------------------------------------------------------------------
    20170524-01 - fix - repair/fix regexp ${TRIM} in funktion TRIM_FILM() from "entry.*producer${MOVIE_PARTS}" to "entry.*producer${MOVIE_PARTS}\""


    Viel Spaß...

  • Der Hintergrund ist, dass ich ständig bestrebt bin mehr zu lernen. Ich lerne nichts, wenn mir eine Software alles vorkaut und im schlimmsten Fall falsch. Ein weiterer Grund ist, ich lebe für die Konsole und verzichte, wenn es geht auf GUI-Basierende Software dessen Quellcode ich im Zweifelsfall nicht einmal einsehen kann. Es ist auch eine Art kontrollverlust, wenn die GUI nur die hälfte an Funktionen bereitstellt. Ich komme aus der Ecke FOSS (Free an Open-Source Software) und entwickle, weil ich Spaß daran habe und weil ich mir die Software auf meine Bedürfnisse anpasse. Dabei lasse ich andere Teilhaben, da ich an gemeinschaftliches Entwickeln glaube und erhebe keinen Anspruch auf geistiges Eigentum. Das erleben Windows-User nur selten und wenn, dann werden sie mit Adware geplagt.

  • Das erleben Windows-User nur selten und wenn, dann werden sie mit Adware geplagt.

    Oh mann, jetzt fängt das wieder an... immer diese Randgruppen-User. Nur weil ihr euch keine Windows Lizenz leisten könnt und stattdessen ein kostenloses Billig-OS nutzt, müsst ihr in jedem Thread Windows schlecht reden.... Fehlt nur noch, dass du Windoof schreibst... Linux ist der größte Scheiß - nicht Windows.


    Seit ich Windows nutze (und das tue ich schon seit Windows 95) hatte ich nie Probleme mit Viren, Adware, oder sonstigem Scheiß.
    Dann habe ich mal (notgedrungen) kurzzeitig mit Linux gearbeitet - das war die Hölle. So ein userunfreundliches OS habe ich noch nie erlebt... Dagegen war die Arbeit mit der Workbench auf dem Amiga ein Traum - und das war 1985!

  • Linux ist für User die mehr wissen wollen als nur ne Exe anklicken wollen.
    Klar ist Linux nicht so einfach zu konfigurieren aber in den letzten Jahren hat sich viel getan . Auch Windows hat seine Vorteile . Aber blubablasen hat mit keinsterweise Windows schlecht gemacht.

  • Versuch doch mal über den Tellerrand hinaus zuschauen. Ich habe die Windows-User in keinster weise beleidigt, oder denunziert, du allerdings fährst hier mit deinen gerade mal 21 geleisteten Beiträgen große Geschütze auf. Beruhige dich wieder und lass dir von mir gesagt sein, das ich Windows akzeptiere, aber deshalb muss ich es nicht benutzen... und das liegt sicherlich nicht daran, das ich mir keine Lizenz leisten kann. Das ist Unsinn...


    Ich mag keine Schraubzwingen... und lasse mir nicht diktieren wie ich meinen Computer einzusetzen habe. Genauso wenig, wie ich anderen diktiren will, welches Betriebssystem sie zu nutzen haben. Ich zeige nur was Möglich ist, wenn man hinter die Kulissen schaut. Das ist eine subjektive Einstellung...


    Schön Tag noch...

  • Das erleben Windows-User nur selten und wenn, dann werden sie mit Adware geplagt.

    Ich wollte deinen Beitrag eigentlich liken, dann aber dieser Satz am Schluss... Wie du in den letzten Beiträgen schön sagst haben beide OS ihre Daseinsberechtigung, dennoch merkt man deinen Beiträgen immer deine Aversion gegen Windows an. Ich sage nicht mla das du mit deinen Aussagen unrecht hast, aber nötig war dieser letzte Satz eigentlich auch nicht...


    Man muss nicht immer wenn man etwas lobt etwas anderes schlecht machen. Es gibt auch viele Open Source Projekte auf Windows Basis die ohne Adware daher kommen.... Von daher ist deine Aussage falsch...


    Wie dich PS3Forever anmacht ist natuerlich unterste Schublade., das will ich damit nicht gutheisen. Es ist m.M. nach nur schade das du dein wirklich geiles Skript nicht ohne einen Seitenhieb an Windows vorstellen kannst... Da muss man dann halt auch damit rechnen das sich MS Fanboys auf den Schlips getreten fühlen und dies in eine Linux/MS Diskussion ausartet. Hättest du dir diesen Seitenhieb verkniffen müssten wir uns jetzt nicht die müssige und überflüssige Diskussion lesen...



    Cheers

  • du allerdings fährst hier mit deinen gerade mal 21 geleisteten Beiträgen große Geschütze auf.

    Das ist ja auch wieder so eine typische Aussage die absolut unnötig ist. Die Anzahl an Beiträgen trägt überhaupt nichts zur Kompetenz des jeweiligen Users bei...
    Aber bevor das hier ausartet, bzw. der Thread noch geschlossen wird, sollte man doch eigentlich wieder zum Hauptthema des Threads zurückkommen: "Fast automatisierter Videoschnitt".

  • Gutes Script. Aber Windows ist auch nichtmehr das was es mal gewesen ist und wenn man heute immer noch sagt Windows ist scheiße dann hat man irgendwie die Welt verschlafen und ist einfach nur naiv.


    Linux ist bombe aber für die meisten Menschen nicht zu gebrauchen.


    Windows ist seit Windows 7 immer besser geworden man muss nur mal Sachen neutral sehen was viele aber nicht können.


    Mir gefällt Linux und Windows weil beide haben vor und Nachteile. So wie alles im Leben. Es gibt nix perfektes.

  • Linux über alles! :D - ich liebe es meine Linux SSD aus meinem Notebook zu entnehmen, in eine Externe HDD Gehäuse zu packen und zur Arbeit zu nehmen und dort am PC anzustecken, alles läuft wie geschmiert ^^


    BTT: Danke für den Script, momentan mache ich nichts mit Videos schnitte, aber sollte mal der Fall eintreffen freue ich mich dein script zu nutzen :)

Jetzt mitmachen!

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