Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

file 60 lines (40 sloc) 2.84 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
Die Idee ist, für die dienstägliche offene Raumzeitlaborierung ein Google+ Hangout anzubieten und gleichzeitig aufzuzeichnen. Geschehen soll das ganze zunächst mit einfachen Mitteln, d.h. mit einer USB-Webcam unter Linux.

== Voraussetzungen ==

uvcvideo webcam ist /dev/video0.

Getestet habe ich mit linux 3.1 und v4l2loopback 0.5.0. Folgendermaßen installiert und lädt man das Modul:

 apt-get install v4l2loopback-dkms
 modprobe v4l2loopback

== Schritt 1 ==

Video von der Webcam in das loopback-device schaufeln:
 gst-launch v4l2src ! 'video/x-raw-yuv,width=800,height=448,framerate=20/1' ! \
    queue ! videorate ! 'video/x-raw-yuv,framerate=30/1' ! v4l2sink device=/dev/video1

== Schritt 2 ==

Hangout starten, sicherstellen dass man die richtigen Devices nimmt.

== Schritt 3 ==

Dann Video aus dem loopback lesen und (via PulseAudio) Audio von der Soundkarte aufnehmen:
 gst-launch v4l2src device=/dev/video1 ! video/x-raw-yuv,framerate=30/1 ! \
    queue ! videorate ! video/x-raw-yuv,framerate=20/1 ! \
    timeoverlay halign=right valign=top shaded-background=true ! \
    queue ! mux. \
    pulsesrc device="alsa_input.usb-Creative_Technology_Ltd._VF0610_Live__Cam_Socialize_HD_100507_a_00851-02-HD.analog-mono" ! \
    audio/x-raw-int,rate=22000,channels=1,width=16 ! queue ! \
    audioconvert ! queue ! mux. avimux name=mux ! \
    filesink location=rohvideo.avi

(Den device-parameter kriegt man aus "pactl list")

Das sind ca. 11 MiB pro Sekunde, macht also ca. 39 GiB für eine Stunde Aufnahme. In 'dstat -f' sehe ich, dass die USB-Festplatte ca. 16 MiB/s wegschreibt. Wenn ich mit dd schreibe, kriege ich ca. 27 MiB/s hin, das sollte also kein Problem darstellen.

== Schritt 4 ==

Introvideo von Felicitus in die passende Auflösung re-encodiert:

 ffmpeg -i RZL_Intro_FullHD.mp4 -vf scale=800:448 -b:v 500k -r 20 rzl_fullhd_800x480.avi

 ffmpeg -i rohvideo.avi -y -f mp4 -vcodec libx264 -crf 28 -threads 0 \
    -flags +loop -cmp +chroma -deblockalpha -1 -deblockbeta -1 -refs 3 \
    -bf 3 -coder 1 -me_method hex -me_range 18 -subq 7 -partitions \
    +parti4x4+parti8x8+partp8x8+partb8x8 -g 320 -keyint_min 25 -level 41 \
    -qmin 10 -qmax 51 -qcomp 0.7 -trellis 1 -sc_threshold 40 -i_qfactor \
    0.71 -flags2 +mixed_refs+dct8x8+wpred+bpyramid -acodec libfaac -ab \
    80k -ar 48000 -ac 2 -r 30 video.mp4

(ja, -r 30 ist absicht. ansonsten wird audio async später)

Enkodieren einer 27-minütigen Aufnahme (22 GiB) dauert auf meinem Thinkpad X200 (Intel(R) Core(TM)2 Duo CPU P8400 @ 2.26GHz) ca. 24 Minuten. Das Resultat ist 180 MiB groß.

Enkodieren einer 66-minütigen Aufnahme (55 GiB) dauert auf meinem Core i7 (Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz) ca. 27 Minuten. Das Resultat ist 1,1 GiB groß.

[[Category:Verein]]
[[Category:Öffentlichkeitsarbeit]]
[[Category:Jemand müsste mal]]
Something went wrong with that request. Please try again.