Commit 4e396f79 authored by Gerion Entrup's avatar Gerion Entrup
Browse files

retab

parent adaa6a15
......@@ -55,7 +55,7 @@
\subtitle{Effekte mit Filtern}
\author{Gerion Entrup\\gerion.entrup@flump.de}
\date[05.11.2016]{05. November 2016\\
~\\
~\\
\includegraphics[width=1.2cm]{pics/by-sa}\\
\tiny{lizensiert unter \href{https://creativecommons.org/licenses/by-sa/4.0/}{CC-BY-SA~4.0}}}
......@@ -64,42 +64,42 @@
\definecolor{mystring}{RGB}{73,12,99}
\definecolor{mykeyword}{RGB}{16,23,122}
\lstset{
% backgroundcolor=\color{white},
% basicstyle=\small,
% breakatwhitespace=false,
% breaklines=true,
% captionpos=b,
% columns=flexible,
% commentstyle=\color{mycomment},
% %deletekeywords={...},
% escapechar={°},
% %extendedchars=true,
% frame=lines,
% keepspaces=true,
% keywordstyle=\color{mykeyword}\bfseries,
language=bash,
basicstyle=\small\ttfamily,
%numbers=left,
numberstyle=\tiny,
numbersep=1pt,
frame=tb,
columns=fullflexible,
backgroundcolor=\color{green!20},
linewidth=\linewidth,
%xleftmargin=0.1\linewidth
% %morecomment={//},
% numbers=left,
% numbersep=3pt,
% numberfirstline=true,
% numberstyle=\tiny\color{gray},
% rulecolor=\color{black},
% showspaces=false,
% showstringspaces=false,
% showtabs=false,
% stepnumber=1,
% stringstyle=\color{mystring}\ttfamily,
% tabsize=2,
% title=\lstname
% backgroundcolor=\color{white},
% basicstyle=\small,
% breakatwhitespace=false,
% breaklines=true,
% captionpos=b,
% columns=flexible,
% commentstyle=\color{mycomment},
% %deletekeywords={...},
% escapechar={°},
% %extendedchars=true,
% frame=lines,
% keepspaces=true,
% keywordstyle=\color{mykeyword}\bfseries,
language=bash,
basicstyle=\small\ttfamily,
%numbers=left,
numberstyle=\tiny,
numbersep=1pt,
frame=tb,
columns=fullflexible,
backgroundcolor=\color{green!20},
linewidth=\linewidth,
%xleftmargin=0.1\linewidth
% %morecomment={//},
% numbers=left,
% numbersep=3pt,
% numberfirstline=true,
% numberstyle=\tiny\color{gray},
% rulecolor=\color{black},
% showspaces=false,
% showstringspaces=false,
% showtabs=false,
% stepnumber=1,
% stringstyle=\color{mystring}\ttfamily,
% tabsize=2,
% title=\lstname
}
\begin{document}
......@@ -134,118 +134,118 @@ http://krul.finf.uni-hannover.de/$\sim$gerion/ffmpeg/
\end{frame}
\begin{frame}[fragile]{Installation}
Alle Befehle als Root (z.\,B. sudo davorschreiben)!
Alle Befehle als Root (z.\,B. sudo davorschreiben)!
Ab Debian Stretch (Testing) und ab Ubuntu 15.04:
\begin{lstlisting}
Ab Debian Stretch (Testing) und ab Ubuntu 15.04:
\begin{lstlisting}
$ apt-get install ffmpeg
\end{lstlisting}
Unter Gentoo:
\begin{lstlisting}
\end{lstlisting}
Unter Gentoo:
\begin{lstlisting}
$ emerge -a media-video/ffmpeg
\end{lstlisting}
Unter Fedora (mit rpmfusion):
\begin{lstlisting}
\end{lstlisting}
Unter Fedora (mit rpmfusion):
\begin{lstlisting}
$ yum install ffmpeg
\end{lstlisting}
Unter Arch:
\begin{lstlisting}
\end{lstlisting}
Unter Arch:
\begin{lstlisting}
$ pacman -S ffmpeg
\end{lstlisting}
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]{Installation: Debian Special}
Unter Debian Jessie (Stable):
Unter Debian Jessie (Stable):
Nachziehen aus den Backports (ggf. in den Quellen nachtragen)
\begin{lstlisting}
Nachziehen aus den Backports (ggf. in den Quellen nachtragen)
\begin{lstlisting}
$ apt-get install -t jessie-backports ffmpeg
\end{lstlisting}
\end{lstlisting}
\end{frame}
\section{Multimediagrundlagen}
\subsection{Container}
\begin{frame}{Container}
\begin{columns}
\begin{column}{0.5\textwidth}
Container speichern:
\begin{itemize}
\item Videos
\item Audio
\item Untertitel
\item Metadaten
\end{itemize}
Begriffe:
\begin{itemize}
\item multiplexen („muxen“)
\item demultiplexen („demuxen“)
\end{itemize}
\includegraphics[width=\textwidth]{pics/container-non-interleaved.pdf}\\
\tiny{CC-BY-SA 3.0 von encodingwissen.de}
\end{column}
\begin{column}{0.5\textwidth}
\vspace{0.5cm}
\includegraphics[width=1.05\textwidth]{pics/container-schuhkarton.pdf}\\
\vspace{1.0cm}
\includegraphics[width=\textwidth]{pics/container-interleaved.pdf}
\end{column}
\end{columns}
\begin{columns}
\begin{column}{0.5\textwidth}
Container speichern:
\begin{itemize}
\item Videos
\item Audio
\item Untertitel
\item Metadaten
\end{itemize}
Begriffe:
\begin{itemize}
\item multiplexen („muxen“)
\item demultiplexen („demuxen“)
\end{itemize}
\includegraphics[width=\textwidth]{pics/container-non-interleaved.pdf}\\
\tiny{CC-BY-SA 3.0 von encodingwissen.de}
\end{column}
\begin{column}{0.5\textwidth}
\vspace{0.5cm}
\includegraphics[width=1.05\textwidth]{pics/container-schuhkarton.pdf}\\
\vspace{1.0cm}
\includegraphics[width=\textwidth]{pics/container-interleaved.pdf}
\end{column}
\end{columns}
\end{frame}
\subsection{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}
\pause
Später: Wie Codecs prinzipiell arbeiten.
\vspace{1cm}
\pause
Die typische Frage:\\
„In welchem Format ist das?“
Die typische Frage:\\
„In welchem Format ist das?“
\end{frame}
\section{FFmpeg}
\begin{frame}{Aufbau I}
FFmpeg ist ersteinmal ein Framework:
\begin{itemize}
\item libavdevice
\item libavcodec
\item libavformat
\item libavfilter
\item \dots
\end{itemize}
FFmpeg ist ersteinmal ein Framework:
\begin{itemize}
\item libavdevice
\item libavcodec
\item libavformat
\item libavfilter
\item \dots
\end{itemize}
\end{frame}
\begin{frame}{Aufbau II}
FFmpeg hat aber auch Enduser-Programme:
\begin{itemize}
\item ffmpeg
\item ffplay
\item ffprobe
\item \dots
\end{itemize}
FFmpeg hat aber auch Enduser-Programme:
\begin{itemize}
\item ffmpeg
\item ffplay
\item ffprobe
\item \dots
\end{itemize}
\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}
\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}
\tikzstyle{block}=[draw, fill=gray!20, text width=4.7em,
text centered, minimum height=1.3em, drop shadow]
text centered, minimum height=1.3em, drop shadow]
\tikzstyle{put}=[draw, fill=green!20, text width=7em,
text centered, minimum height=3em, rounded corners, drop shadow]
text centered, minimum height=3em, rounded corners, drop shadow]
\tikzstyle{ann} = [above, text width=7em, text centered]
\tikzstyle{stream} = [draw, text width=5.5em, text centered,
minimum height=1.5em, drop shadow]
minimum height=1.5em, drop shadow]
\tikzstyle{video} = [stream, fill=red!20]
\tikzstyle{audio} = [stream, fill=blue!20]
\tikzstyle{sub} = [stream, fill=yellow!20]
......@@ -256,33 +256,33 @@ http://krul.finf.uni-hannover.de/$\sim$gerion/ffmpeg/
\def\edgedist{2.5}
\begin{tikzpicture}
\node (output) [put] {Output};
\path (output.west)+(-2.5, 3.0) node (video00) [video] {Video 0.0};
\path (output.west)+(-2.5, 2.2) node (audio00) [audio] {Audio 0.0};
\path (output.west)+(-2.5, 1.4) node (audio01) [audio] {Audio 0.1};
\path (output.west)+(-2.5, 0.1) node (sub10) [sub] {Subtitle 1.0};
\path (output.west)+(-2.5, -2.0) node (videon0) [video] {Video n.0};
\path (output.west)+(-2.5, -2.8) node (audion0) [audio] {Audio n.0};
\path (audio00.west)+(-2.5, 0.0) node (input0) [put] {Input 0};
\path (sub10.west)+(-2.5, 0.6) node (input1) [put] {Input 1};
\path (sub10.west)+(-2.5,-1.3) node (dots) [ann] {$\vdots$};
\path (videon0.west)+(-2.5,-0.4) node (inputn) [put] {Input n};
% \path [draw, ->] (video00.east) -- node [above] {} (output.160);
\path [draw, ->] (audio00.east) -- node [above] {} (output.175);
\path [draw, ->] (audio01.east) -- node [above] {} (output.185);
\path [draw, ->] (sub10.east) -- node [above] {} (output.195);
\path [draw, ->] (videon0.east) -- node [above] {} (output.165);
% \path [draw, ->] (audion0.east) -- node [above] {} (output.200);
\path [draw, ->] (input0.east) -- node [above] {} (video00.west);
\path [draw, ->] (input0.east) -- node [above] {} (audio00.west);
\path [draw, ->] (input0.east) -- node [above] {} (audio01.west);
\path [draw, ->] (input1.east) -- node [above] {} (sub10.west);
\path [draw, ->] (inputn.east) -- node [above] {} (videon0.west);
\path [draw, ->] (inputn.east) -- node [above] {} (audion0.west);
\node (output) [put] {Output};
\path (output.west)+(-2.5, 3.0) node (video00) [video] {Video 0.0};
\path (output.west)+(-2.5, 2.2) node (audio00) [audio] {Audio 0.0};
\path (output.west)+(-2.5, 1.4) node (audio01) [audio] {Audio 0.1};
\path (output.west)+(-2.5, 0.1) node (sub10) [sub] {Subtitle 1.0};
\path (output.west)+(-2.5, -2.0) node (videon0) [video] {Video n.0};
\path (output.west)+(-2.5, -2.8) node (audion0) [audio] {Audio n.0};
\path (audio00.west)+(-2.5, 0.0) node (input0) [put] {Input 0};
\path (sub10.west)+(-2.5, 0.6) node (input1) [put] {Input 1};
\path (sub10.west)+(-2.5,-1.3) node (dots) [ann] {$\vdots$};
\path (videon0.west)+(-2.5,-0.4) node (inputn) [put] {Input n};
% \path [draw, ->] (video00.east) -- node [above] {} (output.160);
\path [draw, ->] (audio00.east) -- node [above] {} (output.175);
\path [draw, ->] (audio01.east) -- node [above] {} (output.185);
\path [draw, ->] (sub10.east) -- node [above] {} (output.195);
\path [draw, ->] (videon0.east) -- node [above] {} (output.165);
% \path [draw, ->] (audion0.east) -- node [above] {} (output.200);
\path [draw, ->] (input0.east) -- node [above] {} (video00.west);
\path [draw, ->] (input0.east) -- node [above] {} (audio00.west);
\path [draw, ->] (input0.east) -- node [above] {} (audio01.west);
\path [draw, ->] (input1.east) -- node [above] {} (sub10.west);
\path [draw, ->] (inputn.east) -- node [above] {} (videon0.west);
\path [draw, ->] (inputn.east) -- node [above] {} (audion0.west);
\end{tikzpicture}
\end{frame}
......@@ -290,44 +290,44 @@ http://krul.finf.uni-hannover.de/$\sim$gerion/ffmpeg/
\section{Syntax}
\subsection{Grundaufbau}
\begin{frame}[fragile]{Grundaufbau}
Generell:
\begin{lstlisting}
Generell:
\begin{lstlisting}
$ ffmpeg -inputparameter -i INPUT \
-outputparameter OUTPUT
\end{lstlisting}
Einfachstes Beispiel (von ffmpeg.org):
\begin{lstlisting}
\end{lstlisting}
Einfachstes Beispiel (von ffmpeg.org):
\begin{lstlisting}
$ ffmpeg -i input.mp4 output.avi
\end{lstlisting}
\end{lstlisting}
\begin{tikzpicture}
\node (output) [put] {output.avi};
\node (output) [put] {output.avi};
\path (output.west)+(-2.5, 0.4) node (video) [video] {Video 0.0};
\path (output.west)+(-2.5, -0.4) node (audio) [audio] {Audio 0.0};
\path (output.west)+(-2.5, 0.4) node (video) [video] {Video 0.0};
\path (output.west)+(-2.5, -0.4) node (audio) [audio] {Audio 0.0};
\path (video.west)+(-2.5, -0.4) node (input) [put] {input.mp4};
\path (video.west)+(-2.5, -0.4) node (input) [put] {input.mp4};
\path [draw, ->] (video.east) -- node [above] {} (output.west);
\path [draw, ->] (audio.east) -- node [above] {} (output.west);
\path [draw, ->] (video.east) -- node [above] {} (output.west);
\path [draw, ->] (audio.east) -- node [above] {} (output.west);
\path [draw, ->] (input.east) -- node [above] {} (video.west);
\path [draw, ->] (input.east) -- node [above] {} (audio.west);
\path [draw, ->] (input.east) -- node [above] {} (video.west);
\path [draw, ->] (input.east) -- node [above] {} (audio.west);
\path (output.south)+(0.8, -2.3) node (senke) [block] {Senke};
\path (output.south)+(0.8, -2.3) node (senke) [block] {Senke};
\path (senke.west)+(-1.3, 0.0) node (muxen) [block] {muxen};
\path (muxen.west)+(-1.3, 0.0) node (encoden) [block] {encoden};
\path (encoden.north)+(0.0, 0.5) node (filtern) [block] {filtern};
\path (filtern.north)+(0.0, 0.5) node (decoden) [block] {decoden};
\path (decoden.west)+(-1.3, 0.0) node (demuxen) [block] {demuxen};
\path (demuxen.west)+(-1.3, 0.0) node (quelle) [block] {Quelle};
\path (senke.west)+(-1.3, 0.0) node (muxen) [block] {muxen};
\path (muxen.west)+(-1.3, 0.0) node (encoden) [block] {encoden};
\path (encoden.north)+(0.0, 0.5) node (filtern) [block] {filtern};
\path (filtern.north)+(0.0, 0.5) node (decoden) [block] {decoden};
\path (decoden.west)+(-1.3, 0.0) node (demuxen) [block] {demuxen};
\path (demuxen.west)+(-1.3, 0.0) node (quelle) [block] {Quelle};
\path [draw, ->] (muxen.east) -- node [above] {} (senke.west);
\path [draw, ->] (encoden.east) -- node [above] {} (muxen.west);
\path [draw, ->] (filtern.south) -- node [above] {} (encoden.north);
\path [draw, ->] (decoden.south) -- node [above] {} (filtern.north);
\path [draw, ->] (demuxen.east) -- node [above] {} (decoden.west);
\path [draw, ->] (quelle.east) -- node [above] {} (demuxen.west);
\path [draw, ->] (muxen.east) -- node [above] {} (senke.west);
\path [draw, ->] (encoden.east) -- node [above] {} (muxen.west);
\path [draw, ->] (filtern.south) -- node [above] {} (encoden.north);
\path [draw, ->] (decoden.south) -- node [above] {} (filtern.north);
\path [draw, ->] (demuxen.east) -- node [above] {} (decoden.west);
\path [draw, ->] (quelle.east) -- node [above] {} (demuxen.west);
\end{tikzpicture}
\end{frame}
......@@ -337,34 +337,34 @@ http://krul.finf.uni-hannover.de/$\sim$gerion/ffmpeg/
% map vorstellen: -map x:y
\begin{frame}[fragile]{Mapping}
Beispiele:
%interaktiv durchsprechen, Teilnehmer sollen sagen, was das bedeutet
\begin{itemize}
\item \lstinline$-map 0:a$
\item \lstinline$-map 0$
\item \lstinline$-map 0:1$
\item \lstinline$-map 0 -map -0:a:1$
\item \lstinline$-map 0:v -map 1 -map -1:v$
\end{itemize}
Beispiele:
%interaktiv durchsprechen, Teilnehmer sollen sagen, was das bedeutet
\begin{itemize}
\item \lstinline$-map 0:a$
\item \lstinline$-map 0$
\item \lstinline$-map 0:1$
\item \lstinline$-map 0 -map -0:a:1$
\item \lstinline$-map 0:v -map 1 -map -1:v$
\end{itemize}
\end{frame}
\begin{frame}[fragile]{Aufgabe}
\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 außerdem ein Mapping, um von der Datei tos-sound.mkv die Surround-tonspur in die Datei surrond.ac3 zu übernehmen.
\end{block}
\begin{block}{Hinweis:}
Der Parameter \lstinline$-c copy$ sorgt dafür, dass alle Spuren ohne Rekodierung übernommen werden.
\end{block}
\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 außerdem ein Mapping, um von der Datei tos-sound.mkv die Surround-tonspur in die Datei surrond.ac3 zu übernehmen.
\end{block}
\begin{block}{Hinweis:}
Der Parameter \lstinline$-c copy$ sorgt dafür, dass alle Spuren ohne Rekodierung übernommen werden.
\end{block}
\end{frame}
\begin{frame}[fragile]{Aufgabe}
\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.
\end{block}
\begin{block}{Hinweis:}
Wenn Sie das Kommando, das das Mapping in einem Schritt macht, nicht finden, verwenden Sie die Zwischenergebnisse aus dem ersten Teil.
\end{block}
\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.
\end{block}
\begin{block}{Hinweis:}
Wenn Sie das Kommando, das das Mapping in einem Schritt macht, nicht finden, verwenden Sie die Zwischenergebnisse aus dem ersten Teil.
\end{block}
\end{frame}
......@@ -375,31 +375,31 @@ http://krul.finf.uni-hannover.de/$\sim$gerion/ffmpeg/
% yadif, hqdn3d, vflip, hflip, rotate
\begin{frame}{Aufgabe Filter}
Aufgabe: Schauen Sie sich die mitgelieferten Videos an und versuchen Sie sie zu verbessern.
\begin{description}[leftmargin=!,labelwidth=1mm]
\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.
\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.
Aufgabe: Schauen Sie sich die mitgelieferten Videos an und versuchen Sie sie zu verbessern.
\begin{description}[leftmargin=!,labelwidth=1mm]
\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.
\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}
\begin{frame}{Aufgaben Ton}
\begin{block}{Aufgabe}
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.
\end{block}
\begin{block}{Hinweis:}
Sehen Sie sich die Optionen \lstinline$-ss$ und \lstinline$-t$ zum Ausschneiden an. Der Filter \lstinline$afade$ kann zum Faden verwendet werden.
\end{block}
\begin{block}{Aufgabe}
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.
\end{block}
\begin{block}{Hinweis:}
Sehen Sie sich die Optionen \lstinline$-ss$ und \lstinline$-t$ zum Ausschneiden an. Der Filter \lstinline$afade$ kann zum Faden verwendet werden.
\end{block}
\end{frame}
\section{Credits}
\begin{frame}{Credits}
\begin{itemize}
\item encodingwissen.de
\item Tears of Steel (vom Blender-Projekt)
\item Tagesschau von 1982 (Quelle: Youtube)
\item Album: „We love sharing“ des Musikpiraten e.V.
\end{itemize}
\begin{itemize}
\item encodingwissen.de
\item Tears of Steel (vom Blender-Projekt)
\item Tagesschau von 1982 (Quelle: Youtube)
\item Album: „We love sharing“ des Musikpiraten e.V.
\end{itemize}
\end{frame}
\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