384 lines
13 KiB
HTML
384 lines
13 KiB
HTML
<!doctype html>
|
|
<html lang="de">
|
|
<meta charset="utf-8">
|
|
|
|
<title>Einführung in Linux</title>
|
|
|
|
<meta name="description" content="YALC - Yet Another Linux Course ">
|
|
<meta name="author" content="Daniel Schubert">
|
|
|
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
|
|
|
<link rel="stylesheet" href="css/reveal.css">
|
|
<link rel="stylesheet" href="css/theme/league.css" id="theme">
|
|
|
|
<link rel="icon" href="img/openlogo-nd-25.png" type="img/png">
|
|
|
|
<!-- Theme used for syntax highlighting of code -->
|
|
<link rel="stylesheet" href="lib/css/zenburn.css">
|
|
|
|
<!-- Printing and PDF exports -->
|
|
<script>
|
|
var link = document.createElement( 'link' );
|
|
link.rel = 'stylesheet';
|
|
link.type = 'text/css';
|
|
link.href = window.location.search.match( /print-pdf/gi ) ? 'css/print/pdf.css' : 'css/print/paper.css';
|
|
document.getElementsByTagName( 'head' )[0].appendChild( link );
|
|
</script>
|
|
<style type="text/css">
|
|
.reveal img{ max-height: 60vh}
|
|
</style>
|
|
|
|
</head>
|
|
|
|
<body>
|
|
<div class="reveal">
|
|
<!-- Any section element inside of this container is displayed as a slide -->
|
|
<div class="slides">
|
|
|
|
<section data-transition="slide" data-background="#4d7e65" data-background-transition="zoom">
|
|
<h1>LINUX</h1>
|
|
<h3>Das universelle Betriebssystem</h3>
|
|
<p>Eine Einführung - Teil 16
|
|
<p> <small>Deutsche Angestellten Akademie</small> </p>
|
|
<aside class="notes">
|
|
Frage: Fragen zur letzten Stunde?
|
|
</aside>
|
|
</section>
|
|
|
|
<section data-transition="slide" data-background="#b5533c" data-background-transition="convex" ><h3 >Linux und Multimedia</h3></section>
|
|
|
|
<section data-transition="slide" data-background="img/trianglify.svg" data-background-transition="convex"> <h3 style="color: lightgrey; text-shadow: 1px 1px black">Bildbearbeitung</h3></section>
|
|
|
|
<section>
|
|
<h5>the Gimp</h5>
|
|
<p>GNU Image Manipulation Programm</p>
|
|
<img src="img/2019-03-02-124423_1366x768_scrot.png">
|
|
</section>
|
|
|
|
<section>
|
|
<h5>Darktable</h5>
|
|
<img src="img/2019-03-02-124938_1366x768_scrot.png">
|
|
</section>
|
|
|
|
<section>
|
|
<h5>Inkscape</h5>
|
|
<p>Vektorbilder </p>
|
|
<img src="img/2019-03-02-125227_1366x768_scrot.png">
|
|
</section>
|
|
|
|
<section>
|
|
<p><a href="https://imagemagick.org/index.php" target="_blank">ImageMagick</a>
|
|
<pre><code> sudo apt install imagemagick</code></pre>
|
|
<ul>
|
|
<li>convert / mogrify
|
|
</ul>
|
|
|
|
<pre><code class="bash">convert bild.jpg out.gif </code></pre>
|
|
<ul>
|
|
<li>montage</li>
|
|
</ul>
|
|
<pre><code>montage *.jpg out.jpg</code></pre>
|
|
|
|
<ul>
|
|
<li>import</li>
|
|
</ul>
|
|
<pre><code>import screen.jpg</code></pre>
|
|
</section>
|
|
|
|
<section>
|
|
|
|
<pre><code class="bash" contenteditable>
|
|
# komprimiert ein jpg ohne sichtbare Qualitätsverluste
|
|
# ( zb für Webseiten Deployment )
|
|
convert -strip -interlace Plane -sampling-factor 4:2:0 \
|
|
-quality 85% quelle.jpg result.jpg
|
|
|
|
# das selbe, aber rekursiv und destruktiv
|
|
find . -name "*.jpg" -exec mogrify -strip -interlace Plane \
|
|
-sampling-factor 4:2:0 -quality 85% {} \;
|
|
|
|
# Bild beschneiden und zentrieren
|
|
convert input.jpg -crop '1900x1400+0+0'\
|
|
-gravity Center output.jpg
|
|
</code></pre>
|
|
</section>
|
|
|
|
<section>
|
|
<pre style="width: 80vw; font-size: .5em"><code class="bash">convert -size 320x90 canvas:none -stroke snow4 -size 1x90 -tile gradient:white-snow4 \
|
|
-draw 'roundrectangle 16, 5, 304, 85 20,40' +tile -fill snow \
|
|
-draw 'roundrectangle 264, 5, 304, 85 20,40' -tile gradient:chartreuse-green \
|
|
-draw 'roundrectangle 16, 5, 180, 85 20,40' -tile gradient:chartreuse1-chartreuse3 \
|
|
-draw 'roundrectangle 140, 5, 180, 85 20,40' +tile -fill none \
|
|
-draw 'roundrectangle 264, 5, 304, 85 20,40' -strokewidth 2 \
|
|
-draw 'roundrectangle 16, 5, 304, 85 20,40' \( +clone -background snow4 \
|
|
-shadow 80x3+3+3 \) +swap -background none -layers merge \( +size -pointsize 90 \
|
|
-strokewidth 1 -fill red label:'50 %' -trim +repage \( +clone -background firebrick3 \
|
|
-shadow 80x3+3+3 \) +swap -background none -layers merge \) -insert 0 -gravity center \
|
|
-append -background white -gravity center -extent 320x200 cylinder_shaded.png</code></pre>
|
|
</section>
|
|
|
|
<section>Ein Bild verschlüsseln
|
|
<pre><code class="bash">convert rose.jpg -encipher passphrase.txt rose.png</code></pre>
|
|
<pre><code class="bash"># ein anders Bild als Passwort
|
|
convert rose.jpg -encipher smiley.gif rose.png</code></pre>
|
|
|
|
<pre><code class="bash"># entschlüsseln
|
|
convert rose.png -decipher smiley.gif rose.jpg</code></pre>
|
|
|
|
<a href="https://imagemagick.org/Usage/transform/#encipher">ImageMagick Hilfe Seite</a>
|
|
</section>
|
|
|
|
<section>
|
|
<span style="color: orange">Aufgabe:</span>
|
|
<ul>
|
|
<li>Bereitet <a href="https://www.schubertdaniel.de/linuxkurs/bilder.zip">diese Bilder</a> vor für eine Bildergallerie. </li>
|
|
<li>Die Bilder sollen nicht grösser als 1200x800px sein.</li>
|
|
<li>Die Bilder sollen nicht beschnitten werden.</li>
|
|
<li>Die Metadaten sollen entfernt werden.</li>
|
|
<li>Veröffentlicht die Bilder in einer Gallerie auf eurer Wordpress Seite.</li>
|
|
</ul>
|
|
|
|
Hinweis:
|
|
<pre><code>convert input.jpg -resize '1200x800' output.jpg</code></pre>
|
|
</section>
|
|
|
|
<section>
|
|
screenshots mit scrot
|
|
<pre><code class="bash">~$ scrot -d 5 '%Y-%m-%d_$wx$h.png'</code></pre>
|
|
</section>
|
|
|
|
<section data-transition="slide" data-background="img/trianglify.svg" data-background-transition="convex"> <h3 style="color: lightgrey; text-shadow: 1px 1px black">Video Editing / Transkodierung</h3></section>
|
|
|
|
<section>
|
|
<h4>Einfacher Videoschnitt</h4>
|
|
<ul>
|
|
<li class="fragment">OpenShot
|
|
<div><img src="img/openshot-screen.jpg"></div></li>
|
|
<li class="fragment">Pitivi</li>
|
|
<li class="fragment">KDEnlive</li>
|
|
</ul>
|
|
</section>
|
|
<section>
|
|
<h4 class="fragment">Anspruchsvoller Videoschnitt</h4>
|
|
<ul>
|
|
<li class="fragment">Blender - eigentl. 3D-Rendering <ul><li><a href="https://www.youtube.com/watch?v=YE7VzlLtp-4">Big Buck Bunny bei YouTube</a></li>
|
|
<li><a href="https://www.blenderguru.com/articles/27-inspiring-blender-animations-that-will-make-your-jaw-drop">Blender Videos</a></li></ul>
|
|
<li class="fragment">Lightworks</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<section>
|
|
<h3>Ausflug</h3>
|
|
Video Container
|
|
</section>
|
|
|
|
<section>
|
|
Ein Video Container beinhält
|
|
<ul>
|
|
<li class="fragment ">Eine Videospur</li>
|
|
<li class="fragment ">eine oder mehrere Audiospuren</li>
|
|
<li class="fragment ">Untertitel</li>
|
|
|
|
</ul>
|
|
</section>
|
|
|
|
<section>
|
|
Die Videospur ist meist kodiert mit
|
|
<ul>
|
|
<li class="fragment ">mpeg-1</li>
|
|
<li class="fragment ">mpeg-4</li>
|
|
<li class="fragment ">mpeg4-part10: h264 / h265</li>
|
|
<li class="fragment ">vp8 / vp9 </li>
|
|
<li class="fragment ">theora</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<section>
|
|
Die Audiospur ist meist kodiert mit
|
|
<p>
|
|
<ul>
|
|
<li class="fragment ">mp3</li>
|
|
<li class="fragment ">aac</li>
|
|
<li class="fragment ">ogg vorbis</li>
|
|
<li class="fragment ">opus</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<section>
|
|
Zusammengesetzt ergeben sich Container
|
|
<ul>
|
|
<li class="fragment ">mp4 : h264 + mp3 ( <a href="https://de.wikipedia.org/wiki/MP4">Wikipedia</a> )</li>
|
|
<li class="fragment ">webm : vp9 + opus ( <a href="https://de.wikipedia.org/wiki/WebM">Wikipedia</a> )</li>
|
|
<li class="fragment ">ogv : theora + ogg ( <a href="https://de.wikipedia.org/wiki/Ogg">Wikipedia</a> )</li>
|
|
<li class="fragment ">mehr <a href="https://de.wikipedia.org/wiki/Containerformat">Wikipedia</a></li>
|
|
</ul>
|
|
</section>
|
|
<section>
|
|
<h4>ffmpeg</h4>
|
|
<h5>Das Schweizer Taschenmesser der Audio / Video Konvertierung</h5>
|
|
|
|
<pre><code class="bash"># einfache Transkodierung
|
|
ffmpeg -i videoi.avi video.mpg
|
|
|
|
# DVD Rip
|
|
ffmpeg -i snatch_1.vob -f avi -c:v mpeg4 -b:v 800k \
|
|
-g 300 -bf 2 -c:a libmp3lame -b:a 128k snatch.mpg
|
|
|
|
# h264 kodiertes mp4 zur Darstellung im Browser
|
|
ffmpeg -i infile.avi -vf scale=1200:800 -b:v 600k \
|
|
-b:a 128k -c:v libx264 -preset medium outfile.mp4
|
|
|
|
# mp3 aus wav
|
|
ffmpeg -i infile.wav -b:a 192k outfile.mp3
|
|
|
|
</code></pre>
|
|
</section>
|
|
|
|
<section>
|
|
<pre><code class="bash" contenteditable>
|
|
# produziert 3 Videos; benötigt für Webseiten
|
|
# damit alle Browser d. Video abspielen
|
|
|
|
# video: h264; audio: aac ( default )
|
|
ffmpeg -i infile -b:v 600k -b:a 128k -c:v libx264 out.mp4
|
|
|
|
# video: vp9; audio: opus ( default )
|
|
ffmpeg -i infile -b:v 600k -b:a 128k out.webm
|
|
|
|
# video: theora; audio: ogg vorbis
|
|
ffmpeg -i infile -codec:v libtheora -qscale:v 7 \
|
|
-codec:a libvorbis -qscale:a 5 out.ogv
|
|
</code></pre>
|
|
</section>
|
|
|
|
<section>
|
|
<ul>
|
|
<li>Handbrake</li>
|
|
<li>libdvdcss</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<section>
|
|
<span style="color: orange">Aufgabe:</span>
|
|
<ul>
|
|
<li>installiert ffmpeg</li>
|
|
<li>erstellt aus <a href="/beispiele/16/infile.m4v">DIESEM</a> Video einen 10sec langen mp4 Video-Snippet.</li>
|
|
<li>erstellt aus <a href="/beispiele/16/wav-file.zip">DIESEM</a> Wav ein MP3 mit 192kB Bitrate.</li>
|
|
<li>erstellt aus der Wav-Datei eine flac Datei.</li>
|
|
<li>vergleicht die Grössen.</li>
|
|
<li>Warum ist es nicht sinnvoll aus einem mp3 ein wav zu machen?</li>
|
|
</ul>
|
|
|
|
Hinweis:
|
|
<pre><code class="bash" contenteditable># 10sec langes video:
|
|
ffmpeg -t 10 -i ..... </code></pre>
|
|
</section>
|
|
|
|
<section data-transition="slide" data-background="img/Jaromir-Chalabala1.jpg" data-background-transition="convex"> <h3 style="color: lightgrey; text-shadow: 1px 1px black">Audio Production</h3></section>
|
|
<section>
|
|
Audio unter Linux ist .... interessant.
|
|
<p>Meist Kombination aus Pulseaudio / ALSA
|
|
<p>PulseAudio -> Middleware
|
|
<p>ALSA -> Treiber
|
|
<p>Für Echtzeit-Audio-Verarbeitung ( möglichst geringe Latenzen ) muss die Kombination Jack / ALsa konfiguriert werden
|
|
|
|
<aside class="notes">alsamixer</aside>
|
|
</section>
|
|
|
|
|
|
<section>Audacity
|
|
<div><img src="img/audacity.png"></div></section>
|
|
|
|
<section>
|
|
Ardour - Professionelles Recording
|
|
<div><img src="img/ardour.jpg"></div>
|
|
</section>
|
|
|
|
<section>
|
|
Guitarix - Virtueller Gitarrenamp
|
|
<div><img src="img/guitarix.jpg"></div>
|
|
</section>
|
|
|
|
<section>
|
|
<p><a href="http://kxstudio.linuxaudio.org/index.php">Plugins und andere Tools</a>
|
|
</section>
|
|
|
|
<section>
|
|
Jack
|
|
<div><img src="img/QjackctlConnectionsForm.png"></div>
|
|
</section>
|
|
|
|
<section>
|
|
<h4>Abspielprgramme</h4>
|
|
<ul>
|
|
<li class="fragment">VLC</li>
|
|
<li class="fragment">Mplayer</li>
|
|
<li class="fragment">Rhythmbox</li>
|
|
<li class="fragment">mocp</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<section>
|
|
<h4>Multimedia Distributionen</h4>
|
|
<ul>
|
|
<li><a href="http://www.bandshed.net/avlinux/">avlinux</a></li>
|
|
<li><a href="http://ubuntustudio.org">UbuntuStudio</a></li>
|
|
</ul>
|
|
</section>
|
|
|
|
<section>
|
|
<h4>Gaming</h4>
|
|
<ul>
|
|
<li class="fragment ">Steam</li>
|
|
<li class="fragment ">GOG</li>
|
|
<li class="fragment ">viele Open Source Spiele
|
|
<ul>
|
|
<li>Sauerbraten</li>
|
|
<li>Assault Cube</li>
|
|
<li>Zero-K</li>
|
|
<li>0 A.D.</li>
|
|
<li>Flightgear</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
|
|
|
|
</section>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="lib/js/head.min.js"></script>
|
|
<script src="js/reveal.js"></script>
|
|
|
|
<script>
|
|
|
|
// More info https://github.com/hakimel/reveal.js#configuration
|
|
Reveal.initialize({
|
|
controls: true,
|
|
progress: true,
|
|
history: true,
|
|
center: true,
|
|
|
|
transition: 'slide', // none/fade/slide/convex/concave/zoom
|
|
|
|
// More info https://github.com/hakimel/reveal.js#dependencies
|
|
dependencies: [
|
|
{ src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } },
|
|
{ src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
|
|
{ src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
|
|
{ src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
|
|
{ src: 'plugin/search/search.js', async: true },
|
|
{ src: 'plugin/zoom-js/zoom.js', async: true },
|
|
{ src: 'plugin/notes/notes.js', async: true }
|
|
]
|
|
});
|
|
|
|
</script>
|
|
|
|
</body>
|
|
</html>
|