linuxkurs/16.html

384 lines
13 KiB
HTML
Raw Permalink Normal View History

2019-03-03 11:33:18 +01:00
<!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>
2019-03-04 13:24:35 +01:00
<p><a href="https://imagemagick.org/index.php" target="_blank">ImageMagick</a>
<pre><code> sudo apt install imagemagick</code></pre>
2019-03-03 11:33:18 +01:00
<ul>
<li>convert / mogrify
</ul>
2019-03-04 13:24:35 +01:00
<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>
2019-03-03 11:33:18 +01:00
# 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
2019-03-04 13:24:35 +01:00
</code></pre>
2019-03-03 11:33:18 +01:00
</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>
2019-03-04 13:24:35 +01:00
Hinweis:
<pre><code>convert input.jpg -resize '1200x800' output.jpg</code></pre>
2019-03-03 11:33:18 +01:00
</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>
2019-03-04 13:24:35 +01:00
<li class="fragment">OpenShot
<div><img src="img/openshot-screen.jpg"></div></li>
2019-03-03 11:33:18 +01:00
<li class="fragment">Pitivi</li>
<li class="fragment">KDEnlive</li>
</ul>
2019-03-04 13:24:35 +01:00
</section>
<section>
2019-03-03 11:33:18 +01:00
<h4 class="fragment">Anspruchsvoller Videoschnitt</h4>
<ul>
2019-03-04 13:24:35 +01:00
<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>
2019-03-03 11:33:18 +01:00
<li class="fragment">Lightworks</li>
</ul>
</section>
2019-03-04 13:24:35 +01:00
<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>
2019-03-03 11:33:18 +01:00
<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 \
2019-03-04 13:24:35 +01:00
-b:a 128k -c:v libx264 -preset medium outfile.mp4
# mp3 aus wav
ffmpeg -i infile.wav -b:a 192k outfile.mp3
2019-03-03 11:33:18 +01:00
</code></pre>
</section>
2019-03-04 13:24:35 +01:00
<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>
2019-03-03 11:33:18 +01:00
<section>
<ul>
<li>Handbrake</li>
<li>libdvdcss</li>
</ul>
</section>
<section>
2019-03-04 13:24:35 +01:00
<span style="color: orange">Aufgabe:</span>
2019-03-03 11:33:18 +01:00
<ul>
2019-03-04 13:24:35 +01:00
<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>
2019-03-03 11:33:18 +01:00
</ul>
2019-03-04 13:24:35 +01:00
Hinweis:
<pre><code class="bash" contenteditable># 10sec langes video:
ffmpeg -t 10 -i ..... </code></pre>
2019-03-03 11:33:18 +01:00
</section>
2019-03-04 13:24:35 +01:00
<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>
2019-03-03 11:33:18 +01:00
<section>
2019-03-04 13:24:35 +01:00
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>
2019-03-03 11:33:18 +01:00
</section>
2019-03-04 13:24:35 +01:00
<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>
2019-03-03 11:33:18 +01:00
<section>
<h4>Abspielprgramme</h4>
<ul>
<li class="fragment">VLC</li>
<li class="fragment">Mplayer</li>
<li class="fragment">Rhythmbox</li>
2019-03-04 13:24:35 +01:00
<li class="fragment">mocp</li>
2019-03-03 11:33:18 +01:00
</ul>
2019-03-04 13:24:35 +01:00
</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>
2019-03-03 11:33:18 +01:00
</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>