Commit 070769f2 authored by Gerion Entrup's avatar Gerion Entrup
Browse files

workshop 2nd version 2016 focus on filtering

parent 4e396f79
...@@ -157,13 +157,18 @@ http://krul.finf.uni-hannover.de/$\sim$gerion/ffmpeg/ ...@@ -157,13 +157,18 @@ http://krul.finf.uni-hannover.de/$\sim$gerion/ffmpeg/
\begin{frame}[fragile]{Installation: Debian Special} \begin{frame}[fragile]{Installation: Debian Special}
Unter Debian Jessie (Stable): Unter Debian Jessie (Stable):
Nachziehen aus den Backports (ggf. in den Quellen nachtragen) Nachziehen aus den Backports:
\begin{lstlisting} \begin{lstlisting}
$ apt-get install -t jessie-backports ffmpeg $ apt-get install -t jessie-backports ffmpeg
\end{lstlisting} \end{lstlisting}
sources.list Eintrag:
\begin{lstlisting}
deb http://httpredir.debian.org/debian
jessie-backports main contrib non-free
\end{lstlisting}
\end{frame} \end{frame}
\section{Multimediagrundlagen} \section{Grundlagen Multimedia}
\subsection{Container} \subsection{Container}
\begin{frame}{Container} \begin{frame}{Container}
\begin{columns} \begin{columns}
...@@ -197,7 +202,6 @@ http://krul.finf.uni-hannover.de/$\sim$gerion/ffmpeg/ ...@@ -197,7 +202,6 @@ http://krul.finf.uni-hannover.de/$\sim$gerion/ffmpeg/
\begin{frame}{Codecs} \begin{frame}{Codecs}
Dort findet die eigentliche Komprimierung statt. Speziell auf Art der Daten angepasst. Dort findet die eigentliche Komprimierung statt. Speziell auf Art der Daten angepasst.
Später: Wie Codecs prinzipiell arbeiten.
\vspace{1cm} \vspace{1cm}
\pause \pause
...@@ -206,8 +210,13 @@ http://krul.finf.uni-hannover.de/$\sim$gerion/ffmpeg/ ...@@ -206,8 +210,13 @@ http://krul.finf.uni-hannover.de/$\sim$gerion/ffmpeg/
\end{frame} \end{frame}
\section{FFmpeg} \section{Grundlagen FFmpeg}
\subsection{Einleitung}
\begin{frame}{Aufbau I} \begin{frame}{Aufbau I}
Gegründet 2000 von Fabrice Bellard
\vspace{1cm}
FFmpeg ist ersteinmal ein Framework: FFmpeg ist ersteinmal ein Framework:
\begin{itemize} \begin{itemize}
\item libavdevice \item libavdevice
...@@ -228,15 +237,6 @@ http://krul.finf.uni-hannover.de/$\sim$gerion/ffmpeg/ ...@@ -228,15 +237,6 @@ http://krul.finf.uni-hannover.de/$\sim$gerion/ffmpeg/
\end{itemize} \end{itemize}
\end{frame} \end{frame}
\begin{frame}{FFmpeg vs. Libav}
\begin{itemize}
\item Libav 2010 entstanden
\item aus User-Sicht in erster Linie verwirrend
\item ffmpeg und avconv
\item ffplay und avplay
\end{itemize}
\end{frame}
\subsection{Workflow} \subsection{Workflow}
\tikzstyle{block}=[draw, fill=gray!20, text width=4.7em, \tikzstyle{block}=[draw, fill=gray!20, text width=4.7em,
...@@ -287,8 +287,7 @@ http://krul.finf.uni-hannover.de/$\sim$gerion/ffmpeg/ ...@@ -287,8 +287,7 @@ http://krul.finf.uni-hannover.de/$\sim$gerion/ffmpeg/
\end{tikzpicture} \end{tikzpicture}
\end{frame} \end{frame}
\section{Syntax} \subsection{Syntax}
\subsection{Grundaufbau}
\begin{frame}[fragile]{Grundaufbau} \begin{frame}[fragile]{Grundaufbau}
Generell: Generell:
\begin{lstlisting} \begin{lstlisting}
...@@ -332,11 +331,11 @@ http://krul.finf.uni-hannover.de/$\sim$gerion/ffmpeg/ ...@@ -332,11 +331,11 @@ http://krul.finf.uni-hannover.de/$\sim$gerion/ffmpeg/
\end{frame} \end{frame}
\subsection{map}
% map vorstellen: -map x:y % map vorstellen: -map x:y
\begin{frame}[fragile]{Mapping} \begin{frame}[fragile]{Mapping}
Kommandozeilenoption um Multimedia-Streams auszuwählen und zuzuordnen.
Beispiele: Beispiele:
%interaktiv durchsprechen, Teilnehmer sollen sagen, was das bedeutet %interaktiv durchsprechen, Teilnehmer sollen sagen, was das bedeutet
\begin{itemize} \begin{itemize}
...@@ -350,8 +349,8 @@ http://krul.finf.uni-hannover.de/$\sim$gerion/ffmpeg/ ...@@ -350,8 +349,8 @@ http://krul.finf.uni-hannover.de/$\sim$gerion/ffmpeg/
\begin{frame}[fragile]{Aufgabe} \begin{frame}[fragile]{Aufgabe}
\begin{block}{Aufgabe - Teil 1:} \begin{block}{Aufgabe - Teil 1:}
Finden Sie ein geeignetes Mapping, um von der Dateien tos-vid+sub.mkv die Videospur in die Datei vid.mkv zu übernehmen.\\ Finden Sie ein geeignetes Mapping, um von der Datei tos-vid+sub.mkv die Videospur in die Datei vid.mkv zu übernehmen.\\
Finden Sie außerdem ein Mapping, um von der Datei tos-sound.mkv die Surround-tonspur in die Datei surrond.ac3 zu übernehmen. Finden Sie außerdem ein Mapping, um von der Datei tos-sound.mkv die Surround-Tonspur in die Datei surrond.ac3 zu übernehmen.
\end{block} \end{block}
\begin{block}{Hinweis:} \begin{block}{Hinweis:}
Der Parameter \lstinline$-c copy$ sorgt dafür, dass alle Spuren ohne Rekodierung übernommen werden. Der Parameter \lstinline$-c copy$ sorgt dafür, dass alle Spuren ohne Rekodierung übernommen werden.
...@@ -360,7 +359,7 @@ http://krul.finf.uni-hannover.de/$\sim$gerion/ffmpeg/ ...@@ -360,7 +359,7 @@ http://krul.finf.uni-hannover.de/$\sim$gerion/ffmpeg/
\begin{frame}[fragile]{Aufgabe} \begin{frame}[fragile]{Aufgabe}
\begin{block}{Aufgabe - Teil 2:} \begin{block}{Aufgabe - Teil 2:}
Kombnieren Sie nun die Kommandos und finden Sie ein geeignetes Mapping, um von den Dateien tos-vid+sub.mkv, tos-de.srt, tos-sound.mkv, die Videospur, die Surround-Tonspur und die deutsche Untertitelspur in genau dieser Reihenfolge in die Datei complete.mkv zu übernehmen. Kombnieren Sie nun die Kommandos und finden Sie ein geeignetes Mapping, um von den Datei tos-vid+sub.mkv, tos-de.srt, tos-sound.mkv die Videospur, die Surround-Tonspur und die deutsche Untertitelspur in genau dieser Reihenfolge in die Datei complete.mkv zu übernehmen.
\end{block} \end{block}
\begin{block}{Hinweis:} \begin{block}{Hinweis:}
Wenn Sie das Kommando, das das Mapping in einem Schritt macht, nicht finden, verwenden Sie die Zwischenergebnisse aus dem ersten Teil. Wenn Sie das Kommando, das das Mapping in einem Schritt macht, nicht finden, verwenden Sie die Zwischenergebnisse aus dem ersten Teil.
...@@ -368,38 +367,110 @@ http://krul.finf.uni-hannover.de/$\sim$gerion/ffmpeg/ ...@@ -368,38 +367,110 @@ http://krul.finf.uni-hannover.de/$\sim$gerion/ffmpeg/
\end{frame} \end{frame}
\section{Filter} \section{einfache Filter}
\subsection{Syntax}
\begin{frame}[fragile]{Filter}
Grundlegende Syntax:
\begin{lstlisting}
$ ffmpeg -i INPUT -filter:<spur> <filterkette>
OUTPUT
\end{lstlisting}
Beispiel:
\begin{lstlisting}
$ ffmpeg -i INPUT -filter:v yadif output.mkv
\end{lstlisting}
Direkte Ausgabe (gut zum Testen):
\begin{lstlisting}
$ ffmpeg -re -i INPUT -filter:v <filterkette>
-f sdl2 "output"
$ ffmpeg -re -i INPUT -filter:a <filterkette>
-f alsa "hw:<name>"
\end{lstlisting}
\vspace{5mm}
Was sind überhaupt Filter?
\end{frame}
%ffmpeg-filter manpage %ffmpeg-filter manpage
%videos anschauen, ffplay benutzen, filter vorführen %videos anschauen, ffplay benutzen, filter vorführen
% Filter sobel, boxblur, hqdn3d
% yadif, hqdn3d, vflip, hflip, rotate \subsection{Aufgaben}
\begin{frame}{Aufgabe Filter} \begin{frame}{1. Aufgabe}
Aufgabe: Schauen Sie sich die mitgelieferten Videos an und versuchen Sie sie zu verbessern. Die Datei „tv.ts“ ähnelt einer typische Fernsehaufnahme. Entfernen Sie das Logo und die Ränder und deinterlacen Sie.
\begin{description}[leftmargin=!,labelwidth=1mm] \vspace{5mm}
\item[tv.ts] Typische Fernsehaufnahme. Entfernen Sie das Logo und die Ränder und deinterlacen Sie.
\item[VID\_20150320.mp4] Rotieren Sie das Video und heben Sie den Ton auf eine akzeptable Lautstärke an. Hinweis: Benutzen Sie die Filter \lstinline$yadif$, \lstinline$cropdetect$, \lstinline$crop$ und \lstinline$delogo$ bzw. \lstinline$removelogo$ (\lstinline$removelogo$ liefert bessere Resultate, ist aber sehr viel komplizierter von der Verwendung).
\item[tagesschau.avi] Versuchen Sie das Rauschen zu verringern und die Ränder abzuschneiden.
\end{description}
Versuchen Sie nach den Filtern die Videos so klein wie möglich zu machen, sodass die Bildqualität aber trotzdem noch akzeptabel bleibt.
\end{frame} \end{frame}
\begin{frame}{Aufgaben Ton} \begin{frame}{2. Aufgabe}
\begin{block}{Aufgabe} Die Datei „VID\_20150320.mp4“ entspricht einer typischen Smartphoneaufnahme. Drehen Sie das Video richtig und heben Sie die Laufstärke des Tons an. Alternativ können Sie auch den Orginalton wegschmeißen und den Ton shamanism.ogg hinterlegen. Für einen besonders guten Effekt benutzen Sie \lstinline$afade$ um den Ton geeignet auszufaden.
Sehen und hören Sie sich die *.ogg-Dateien an. Suchen sie ein geeignetes 20 Sekunden Stück. Schneiden Sie es aus und faden Sie es ein und aus. Legen Sie es dann anstelle der orginalen Tonspur in complete.mkv. \vspace{5mm}
\end{block}
\begin{block}{Hinweis:} Hinweis: Um die Lautstärke anzuheben, sind die Filter \lstinline$volumedetect$ und \lstinline$volume$ hilfreich.
Sehen Sie sich die Optionen \lstinline$-ss$ und \lstinline$-t$ zum Ausschneiden an. Der Filter \lstinline$afade$ kann zum Faden verwendet werden. \end{frame}
\end{block}
\begin{frame}{3. Aufgabe}
Schauen Sie sich die verfügbaren Filter in FFmpeg an und wenden Sie besonders effektvolle Filter auf eine der Videodateien an.
\end{frame}
\section{komplexe Filter}
\subsection{Einführung}
\begin{frame}[fragile]{Komplexe Filter}
Grundlegende Syntax:
\begin{lstlisting}
$ ffmpeg -i INPUT -filter_complex <filtergraph>
OUTPUT
\end{lstlisting}
Aufbau eines Filtergraphen:
\begin{lstlisting}
[<in1>][<in2] <filterkette> [<out1>][<out2]...;...
\end{lstlisting}
\vspace{5mm}
Wann muss man \lstinline$-filter_complex$ benutzen?
\end{frame}
% Vorführen von amerge=inputs=6, channelsplit und overlay
\subsection{Aufgaben}
\begin{frame}{1. Aufgabe}
In der Dokumentation finden Sie:
\begin{quote}
Play an original video and a filtered version (here with the deshake filter) side by side using the ffplay tool.
\end{quote}
Der Filtergraph ist direkt mit \lstinline$ffmpeg$ und \lstinline$-filter_complex$ benutzbar. Benutzen Sie den Filtergraphen und ein Filterkommando der vorherigen Aufgaben und stellen Sie es im Original und gefiltert nebeneinander dar. Zeichnen Sie den zugehörigen Filtergraphen.
\end{frame}
% ffmpeg -i tagesschau.avi -i tos-vid+sub.mkv -filter_complex "[0:v] pad=1280:540:out_w/2-in_w/2:out_h/2-in_h/2 [o1]; [1:v] pad=1280:540:out_w/2-in_w/2:out_h/2-in_h/2 [o2]; [o1][o2] concat=n=2:v=1,realtime [v]" -map "[v]" -f sdl2 "SDL output"
\begin{frame}{2. Aufgabe}
Suchen Sie in der Dokumentation nach dem \lstinline$concat$-Filter und machen sich der Funktionsweise vertraut. Hängen Sie dann die Videoströme der Dateien tagesschau.avi und tos-vid+sub.mkv aneinander. Als Bonus können Sie (z.B. mit dem Filter \lstinline$hqdn3d$) versuchen, das Rauschen des Tagesschau-Videos etwas zu reduzieren.
Hinweis: Als ersten Schritt müssen Sie die Videos auf die gleiche Größe bringen. Beide Videos passen auf 1280x540 Pixel.
Hinweis: Benutzen Sie den \lstinline$pad$-Filter, um das Video mit schwarzen Balken zu versehen.
\end{frame}
\begin{frame}{3. Aufgabe}
Schauen Sie sich die Dokumentation des \lstinline$pan$-Filters an und hinterlegen Sie den Ton der Tagesschau mit einem Lied Ihrer Wahl.
\end{frame} \end{frame}
\section{Credits} \section{Credits}
\begin{frame}{Credits} \begin{frame}[fragile]{Credits}
Verwendete Grafiken und Multimediadateien:
\begin{itemize} \begin{itemize}
\item encodingwissen.de \item encodingwissen.de
\item Tears of Steel (vom Blender-Projekt) \item Tears of Steel (vom Blender-Projekt)
\item Tagesschau von 1982 (Quelle: Youtube) \item Tagesschau von 1982 (Quelle: Youtube)
\item Album: „We love sharing“ des Musikpiraten e.V. \item Album: „We love sharing“ des Musikpiraten e.V.
\end{itemize} \end{itemize}
Alle anderen Infos:
\begin{lstlisting}
$ man ffmpeg-all
\end{lstlisting}
\end{frame} \end{frame}
\end{document} \end{document}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment