### BigBlueButton. Doku hier: * Learning/Lecture Environment: enter via StudIP and its credentials. Guarantees true identity, uses realnames. * create: studIP->lecture-> "Meetings" (if not exists: "More" -> scroll/search Meetings -> click activate) (rooms seem to be bound to the current semester) * there can be multiple "meetings" for a lecture (e.g. for different SQL lab groups). Although, there is nothing "in" the room. It is not possible to store documents there. * StudIP: meetings of a lecture are alphabetically, not chronologically, ordered =:((( (one should name them xxx-2020-mm-dd in future semesters) !!! activate "Meeting may be recorded" in StudIP, otherwise, this cannot be done. !!! This cannot be changed later when people are in the room! Get ALL OUT, change, GET ALL IN AGAIN. !!! This switch is deactivated afterwards automatically. !!! if a room is re-used later, it must be reactivated again and again and again. (as often ... a really silly design by StupID) * if there are multiple recordings in a single room, they are shown inversely chronologically ordered (since Oct 2020: at least, the date is also explicitly shown). * it is possible to share meetings between different lectures ### seems that this has been removed in Oct.2020 =:((( * export sources: see below. mp4s can be looked at via StudIP. * Greenlight/Meet Rooms (=Non-Studip-based) rooms: Entering via Greenlight/BBB's root page * see all rooms that one of the moderators SHARED with you. * can create new rooms You can also enter other rooms by invitation: Entering by following a link to a certain room, you can only enter if the room is "open", i.e., one of the above-mentioned persons is already there. * Organize access (e.g. for exams) * default: everybody can enter the room if an owner is already there * can be managed when room is created * or later: HomeRoom -> Room-field->three-dots * Manage Access: share with other registered people * Room Settings: * all users enter as moderators * Require moderator approval before joining <-- exams (if "all enter as mods" is active, "req mod approval" is useless/ignored, everybody will step in) => if people enter (via mailed link) they end up in a waiting set - all individuals can be allowd to enter, - or individuals from the waiting set <-- exams * When "There was an issue with your media devices. Did you give permission for access to your microphone? ... If that is not the case, try changing your microphone permissions in your browser's settings.": In the URL like, there is a lock icon. Click on it maybe there is "microphone: blocked". (21.12.2020, in a StudIP-based room where "all users enter as moderators") * firefox/chrome: if a tab/site is muted (i.e., you don't hear sound from it) and you leave the room/site/tab, later opening the same URL (more general: meet.gwdg.de) again, it will come up muted again! right-click on the tab, "unmute tab/site". (note: It seems that coming up "muted" sometimes also happens without being set before?) SESSIONS: there are owners, moderators and "normal" participants * Greenlight rooms (lots of problems described below): * owner can share the room (with the group members). Shared people can open the room (and the opener becomes a moderator (only when "all users enter as moderators?)); they cannot share with further persons, and they cannot delete/e-mail/make public recordings (!). PROBLEM with courses that have several teaching persons !!!!!!!!!!!!! * only the person (owner+shared) who opens the room seems to be "moderator" of a session at the beginning. Click left on the people names for menu "promote to moderator". * if moderator leaves, other people stay there (but there is no moderator). * if they also leave, room is empty, but open. (after a short time, it is automatically closed. Another person can enter if he/she is fast - but then there is no moderator). * if a moderator-enabled, but non-owner person enters a room that is already/still open where there is no mod, he/she will NOT become mod. (means, still no mod there). * if owner enters, he/she (always) becomes mod (other mods that are there remain mods). * StudIP-based rooms: All StudIP "authors" (=teaching persons) are automatically moderators * moderators * moderators are by default visible for all in webcam (except they turn it off) * moderators can control the recording. * non-moderators: * can get presentation rights from moderators * can read and write the "shared notes" (e.g. protocol notes) (can be saved using the leftrightarrow on top of the shared notes window) * can read and write the chat. * configuration of rights of participants/non-moderators * when creating the room in StudIP * [until SS22] NOTE: for more than ~60 participants: DEACTIVATE AUDIO for plain participants and people should enter in "Listen only" mode (much less load on the server) (multiple cameras: up to 20, otherwise, the _decoding_ on the receivers side is the main problem, less the encoding+generation of multiple streams on the sender side) => then 200+ should work (according to RocketChat/general 2.11.2020) * [Since WS22/23:] * only "alle Teilnehmenden initial stumm schalten": alle können wählen, ob sie Mikrofon oder Kopfhörer wollen, wer Mikro wählt wird aber gemutet => erzeugt trotzdem $n Audio-Streams, nicht das beabsichtigte * Nur Moderierende können Audio teilen * inside the BBB room: - three-dots/settings: audio/popup alert for chat/entering - cogwheel left near "users(x)" -> lock viewers -> menu for configuring users' rights * dis/allow audio/video of normal participants * block BBB chat (prevent it from being recorded, use RocketChat instead) * block participants from seeing the participants list. But, why? I think, it can be good that participants see whether some people they know also attend the course * presenters (moderators can "make presenter (person)) (and "take presenter"). There is always exactly one active presenter. * click on person in participants list -> make presenter * moderators: -> take presenter * whiteboard (the "Welcome to BigBlueButton" is a 5-page whiteboard) * the "presenter" of the whiteboard has a submenu on the right. * upper button "Tool": choose pen or text or ... Text: vorher mit der Maus einen Rahmen ziehen * Lowest button: turn multi-user whiteboard on/off - then all can write/annotate. <-- exams * upload pdf (browse from local computer), then pdf acts as whiteboard where others can write. if too large: Number of pages exceeded. Break file into multiple files. Current limitation: 200 pages or 30MB (source: gwdg chat, 17.4.2020) * "upload" button also allows to choose between different uploaded presentations * uploaded presentations are only available during the same meeting. In the next meeting in the same room, everything ist lost =:( * Annotations to presentations cannot be exported or saved (they exist only in the recording). Everything is lost. * share screen * what can be shared (and some bugs) depends on the used browser * when deciding to "share screen", a menu opens to select one, but if the presenter then realized that the target is not yet open, there is no "cancel". "block" blocks sharing completely(!) in this room/session! From then on, any attempt to share the screen results in "Code 1136. Permission to capture the screen needs to be granted" Then, on the left of the URL field, there is a striked-through monitor symbol, click on it and deactivate blocking. * Firefox: [2020] * the browser - not a single tab (-> when activating sharing, bbb runs immediately in video recursion + when recording, participants list is recorded) * a certain other application window that already runs (e.g. a pdf) * entire screen - the mouse is NOT visible for others - (it is visible in recordings - but 1-2 lines above its real position) * pulldown menu in evince->view is not visible (also not in the recording). * Chrome: * a browser *tab* (-> must be open, or new tab before sharing!) * only the tab contents (without the menu/bookmarks bars of the browser) * a certain other "Application window" (submenu!) that already runs * e.g. an open shell, acroread/evince, eclipse, or another browser (firefox) * "Big Blue Button" is the whole (google chrome) browser * entire screen + the mouse is visible for others during transmission + screenshare recorded: the mouse is exactly positioned. - recordings: The red point that serves as pointer in the BBB presentation is also visible in other tabs =:( ??? is the red point also visible "live" when transmitting??? ??? is it visible "live" when sharing the full screen??? * pulldown menus are neither transmitted nor recorded when only the browser window is shared - they are visible "live" when sharing the FULL screen. * Opera ?? * Edge (Windows) ?? * Safari (Apple) ?? - gwdg doc: does not support screen sharing. -- seems to be a real problem (session from 20.2. Don't use it). * possibilities for participants to resize the screen (especially when using shared screen) * click the "person" silhouette top left in the black window: close participants list and chat (also useful for presenter when on the way to share full screen or browser in recording mode -> do not publish participants list) * the three-dots on the right->make full screen: bbb tab (incl users list etc) becomes full screen * right-mouse on the shared screen: shared screen -> full screen <<<<<<<<<<<<<<<<<<<<<<<<<<<<< * PDF viewers (independent from BBB, but collected here): * acrobat: allows to mark and copy by mouse * evince - no possibility to mark by mouse when showing IN EVINCE PRESENTATION MODE! - mousing verbatim program code sometimes weird (java import statements seen as a column-wise table) [22.7.20] * okular - no possibility to mark by mouse when showing - marking by mouse must be activated manually ("Select" text/area/table") - mousing verbatim program code sometimes weird (java import statements seen as a column-wise table) [22.7.20] * questions by participants during the lecture/Zwischenfragen: * click on the person (left) -> set status -> raise * changes the smybol and put person upwards in the list. Will usually not be seen by the lecturer, cannot be seen during fullscreen/screen share modes. No acoustic notification. FORGET IT. * write "xxx" in the chat -> puts a (red) number in the upper-left "public chat" field. May be seen by the lecturer, cannot be seen during fullscreen/screen share modes. * Presenter: three-dots on the right -> settings -> "set Audio Alerts for Chat" "Popup Alerts for Chat" on (can be seen also in full screen mode, and when changing to other windows in screen sharing) * is recorded -> no anonymity * recording (button upper middle) * can be paused and restarted Not explicitly stored. When ending the session, they are created automatically, can take some time (14.4.: more than 2 hours for less than 1 minute recorded) ... (the tutorial talks about recordings at 1:15++, but completely omits the storing issues ...) - Problem: it is not possible to create multiple recordings in a session (e.g., by different presenters, or an separate "overview of today" one and later the whole meeting/presentation). * when used from StudIP: recordings appear and are atomatically published in the StudIP meeting page (in reverse order, the first "camera" symbol is the newest one). * when used directly from GreenLight: * (public!) recordings of a room are shown on the users "bbb home page" when clicking on the room * three-dots on the right "email recording" just creates a text which can be copied in any mail tool. (Continuing with it opens thunderbird, which must first be a configured -- strange: when logged in via gwdg it could already know the mail address+setting). * privacy when shared full screen/full browser: * click the "person" silhouette top left in the black window: close participants list and chat (also useful for presenter when on the way to share full screen or browser in recording mode -> do not publish participants list) OR * run bbb in googlechrome and things to be shown elsewhere (firefox), share "complete (firefox) browser" * gwdg doc: Safari seems not to support to see the recordings. * watch recordings: with the three-strokes-symbol top left, there is a list of the slides (if a presentation was uploaded) to jump to a specific slide to watch. * breakout rooms: [ NOT USEFUL FOR US ... maybe in first SQL lab session in the "CIP pool" ] * can be created by moderators (for a definable time, don't forget), people can be assigned. When creating brea Gruppenräume erstellen: "Teilnehmern erlauben, sich selber einen Gruppenraum auszusuchen" -> Zugeordnete Teilnehmer können * the rooms are local to the session. standard: create rooms (for a given time), and assign/partition participants to a room. (note: it is not possible to create new breakout rooms when some breakout rooms already exist -> not possible to create on-demand during a bigger meeting to talk with somebody else personally). * create rooms: tick "participants can choose breakout room" -> then also non-moderator persons can change rooms at any time. * leave breakout room by "logout", fall back into main room. - not possible to kick person out from the breakout room to the main room. * enter room later: enter breakout rooms via "breakout rooms" and choose * to call participants into a room later: USERS->toothedwheel->Breakout room invitation * (Feb 2021) when moderator first invites someone into a breakout room -> "join" popup. if the person leaves and one calls him/her back, the popup does NOT occur again, the person must enter himself via "breakout rooms" actively (das scheint im Mai 2021 korrigiert worden zu sein, popup kommt) (but can also enter whenever it wants) [ PROBLEM in exam setting ] (das gilt weiterhin. Wenn man einmal eine Invitation hatte, "sieht" man den Raum weiterhin und kann rein) * problem: do not turn on audio in several rooms * webcams are turned off when changing rooms => breakout rooms bound to the session => for lab course groups use static rooms for each group. * Participants by phone: Moderator can mute them, but cannot unmute them! Phone particpipants can mute/unmute themselves with "0" (on the phone!) ### DBIS rooms and "Personal Office" * SQL-P-Gruppen können sich eigene Raeume erzeugen, oder wir erzeugen sie unter StudIP. * Ein "DBISOffice" in dem wir uns treffen können, und auch mit Studierenden (Abschlussarbeiten betreuen etc) treffen können. Der Raum ist nicht-öffentlich, und man muss Besucher explizit zum Termin einladen. * WMSharedOffice: shared on-demand with team members, requires approval for non-shared (Exam: share with 2nd examiner + send mail to candidates) * "WMs Office" Create room with , publish link address: does not work as intended: * Access via a public link can be misused - after clicking the link, one can use any (nick)name. * WMsSharedMeetings Share with persons when necessary. Invite students for exams etc. "Require Moderator Approval Before Joining" TODO TESTEN: * "share" room with others: these still must "wait". (? maybe changed) * shared people automatically become moderators? upgrade shared people to "moderator" (?) * Room use via a fake StudIP course: Access cannot be restricted. People may enter during an exam. * it is possible to be in multiple rooms at the same time. Mute the microphone in all except one of them to avoid back-coupling. NOTES FOR DBIS/PRESENTERS: * when installing a new room: * share with the others: home room: three-dots * Presenter: to be notified about questions in the chat: three-dots on the right -> settings -> "set Audio Alerts for Chat" "Popup Alerts for Chat" on (can be seen also in full screen mode, and when changing to other windows in screen sharing) (note: no alert when the window is open! - when on second screen and one dos not care ...) * for "meet"-based rooms: when the recordings have been produced ... hours later: visibility -> public (StudIP-based rooms: automatically done by StudIP is activarted?) * for "meet"-based rooms: when leaving a room when multiple teaching persons are present: * care that a moderator remains there! ### TOUCHSCREEN WITH EXTERNAL MONITOR https://askubuntu.com/questions/51445/how-do-i-calibrate-a-touchscreen-on-a-dual-monitor-system xinput map-to-output > xinput -> lists all devices that are present, e.g. -> WACOM touchpen 17 touchscreen 16 pen 22 eraser >xrandr -> listet die Outputs auf, bei mir eDP-1 und DP-2 [primary] Wer ist wer, ggf ausprobieren (DP-2 ist der externe) >xinput map-to-output 16 eDP-1 ... finger-touch works >xinput map-to-output 15 eDP-1 ... touch-pen works >> .bashrc: alias touchstift='xinput map-to-output 16 eDP-1; xinput map-to-output 17 eDP-1; xinput map-to-output 26 eDP-1' Touchstift-Kurzanleitung: https://downloads.dell.com/manuals/all-products/esuprt_electronics/esuprt_stylus/dell-active-pen-pn579x_setup-guide_en-us.pdf Touchstift-Anleitung: https://dl.dell.com/content/manual34344725-dell-premium-active-pen-pn579x-bedienungsanleitung.pdf?language=de-de ########### RocketChat * Chat-Channel als Fallback, wenn bbb zusammenbricht, um schnell noch Infos auszutauschen: Dort sollen (zumindest am Anfang) am besten alle Teilnehmer eingeloggt sein. Ist "public" betretbar und alle Anwesenden können schreiben ("collaborative"). * Chat-Channel nur für uns: dbisoffice "unser Büro" Ist "private" betretbar (nur invited), alle Anwesenden können schreiben ("collaborative"). * Darin kann man auch Sonderzeichen, Markup, Referenzen etc. verwenden: * Zeilenumbruch: Shift+Return (wird bei Antworten nur in der Thread-Ansicht dargestellt) * Das im Chat angegebene "Return"-Symbol switcht zu/von "verbatim"-artiger Zitatumgebung. * verb|...| -> `...` * begin/end verbatim: ``` * [I'm an inline-style link](https://www.google.com) * Nachrichten, die mit / beginnen (wenn man z.B. eine URL schreiben möchte), werden als RocketChat commands interpretiert. * Wenn man im Text URLs mit reinnimmt, genügt es ohne die <...>. Mit gehts auch, aber mit <...bla#anker> kommt es dann nicht zurecht. [Nov 2022] Kann im Browser laufen: * Man kann entweder * wie in klassischen Chats streng sequentiell untereinander herumlabern, oder * rechts an jeder Top-Level Message [1] ist eine Blase "reply in Thread", womit man eine Antwort schreiben kann. Mit Klicken auf eine Antwort erhält man ein neues Thread-Fenster, in dem ein "Reply in Thread" (wie sonst nur auf Top-Level-Messages) angegeben ist, die Antwort erscheint aber dann -weiter unten- doch auf derselben (also der 2.) Ebene. Wird also eher kein Baum, sondern nur 2 Ebenen. Etwas chaotisch, ggf explizit auf eine Antwort Bezug nehmen. Kann als Desktop-Application laufen: * https://rocket.chat/install Aufruf: rocketchat-desktop & URL: https://chat.gwdg.de * ist aber auch nicht besser. Auch nur 2 Ebenen. ### Betreten: Wenn man "neu" reinkommt, ist das "Conversation"-Fenster (manchmal) leer. Oben rechts, das "=" im Kreis "Threads" öffnet im rechten Teilfenster alte Threads (auf das [x Replies] klicken, sonst sieht man nur die Userdata). Dort kann man auch noch Antworten reinschreiben. Wird aber dann schwer für die anderen, das zu finden ... ### Channel konfigurieren, Invite URL weitergeben etc: * Dazu muss man Owner sein. Personen als Owner eintragen (kann man auch nur machen, wenn man Owner ist): * Wenn von der Person ein Beitrag da ist: Dort auf die Person klicken, öffnet rechts ein Fenster, wo man die Eigenschaften der Person editieren kann. * Sonst: rechts oben -> Member List -> "all users" -> Person editieren. (damit kann man auch Personen removen) * Eigenschaften des Channel editieren: In Channel gehen, oben rechts das "i" im Kreis, (info/room info) Auf EDIT klicken, erst dann kann man runterscrollen. Dort Betretbarkeit/Schreibbarkeit einstellen. * Jemanden einladen: * per (ggf weitergebbaren) Link In Channel gehen, rechts oben auf Members -> Invite Link ist eine URL, die man jemandem schicken kann. kann man konfigurieren: expire (1 day), ggf hochsetzen max number of uses: ggf gegen Weitergeben schützen ### der/diejenigen können den Link ggf innerhalb der Zeit weitergeben -> nicht für echt geschlossene Channels * Einzelne Personen hinzufügen: rechts oben auf Members -> add users In dem Fensterchen kann man Personen suchen (wenn sie schon in RC bekannt sind) * Bei demjenigen wird, wenn er sich wieder mal einloggt, der channel dann einfach mit angezeigt. * Er bekommt eine -ggf wohl ziemlich laute- Benachrichtigung wenn er gerade eingeloggt ist. Evtl nicht spät nachts vor der Klausur machen. * Messages löschen: In Channel gehen, oben ganz rechts die drei Punkte, "Prune Messages" * Directed, @here and @all Messages * shown (to all online/all?) in the chat * @name als directed message * directed and @all: if the receiver is not online in the chat, he/she receives an e-mail * @here ?? * @all: all channel members who are not online receive a mail. * such mails are answered into the channel ((BUG!!!) and show up there 9-11 times =:((, and by mail (9-11 times) if the receive is not online. => we usually do not use them except simple "push" communication. normally, use mail instead. Usually, do not NEVER answer to them. * Message Alarm: configurable for each channel: * three-dots -> Notifications Preferences -> scroll to Desktop->Audio (default, all messages, mentions, nothing) * in DBIS (public, background to bbb): all-messages in DBISOffice (private): all-messages * DBPraktikumsgruppen einrichten, die jeweiligen Studierenden aufnehmen. Betreuer: wir sind dort nur auf Zuruf "anwesend" (=mentioning @name). Notifications entsprechend selber konfigurieren: Three-dots->Benachrichtigungen-> Aktivieren: an mute here and all: an Zähler anzeigen: aus Desktop->Alerts->pull-down "Mentions" E-Mail->Alerts->pull-down "Mentions" * Screenshot einbinden: fn-Druck/Print -> copy to Clipboard ... in mouse-right+paste -> in Chat * \[ .... \] enabled LaTeX in mathematischen abgesetzten Formeln. Teilweise seltsames Verhalten \[ forall d \in {\̲c̲a̲l̲ D}: bla \] breaks ########### At-Home-Klausur * FlexNow -> Veranstaltung auswaehlen -> Teilnehmer laden -> IDENT einrichten (man muss im VPN sein). * Dann IDENT anlegen, fragt einen nach diversen Dingen (Zeit, Overhead time), Freischaltdatum/Zeit (des IDENT, hat nicht direkt mit der Freischaltzeit der Ilias-Klausur zu tun). WICHTIG: für ILIAS bei "Typ" von "Datei-Download" auf "Alternative Variante" umstellen. * [ Funktionalität derzeit (seit WS22/23) nicht mehr vorhanden ] Dort kann man ausserdem eine separate StudIP-Veranstaltung anlegen lassen, zu der alle in FlexNow angemeldeten Teilnehmer angemeldet sind. Diese heisst dann z.B. "LV-Nr. 990034; MAY - Datum: 02.03.2022, 11:00 - 13:00, Online-Klausur mit IDENT" WICHTIG: Bei MSc aufpassen, dass auch die Teilnehmer, die über "Vertiefung Datenbanken" angemeldet sind, dazu kommen Dort einen BBB-Raum anlegen. MAXIMALE Laufzeit muss lang genug sein, dass man schon vor der Klausur reingehen kann und die Zeit sicher ausreicht. - Falls viele Teilnehmer: alle Teilnehmer auf ListenOnly (geht im innerhalb BBB mit Zahnrad->Lock Viewers -> "Share microphone" auf rot setzen) - ggf später umkonfigurieren, falls einzelne sich ein Mikro holen sollen Mikro muten auch für Betreuer. - separate Meet-Räume mit URL nutzen, falls man jemanden direkt sprechen will (Breakout-Rooms eignen sich dazu nicht) HINWEIS: wenn man aus dem DBISOffice in den Hauptraum geht, muss man (i) das eigene Mikrofon im DBISOffice muten und (ii) mit Rechtsklick auf dessen Tab "mute tab/mute site" machen. * Klausurraum * Nur Moderatoren können Audio teilen * Private Chats deaktivieren * eigene BBB-Räume zu individuellen Fragen als Breakout-Ersatz: Nur wenn "Require moderator approval before joining" AN und "All users join as moderators" AUS!!!! ist, ist mit Warten und Anklopfen, sonst kommt jeder rein. * wenn man in mehreren Räumen (DBISOffice, Klausurraum, indiv. Besprechungsraum) ist, muss man in den anderen Mikro UND Lautsprecher (Rechtsklick auf den Tab) muten um Rückkopplungen zu vermeiden. chrome (März 2022) erlaubt nur "Mute site", womit es dann das ganze Meet mutet, was SCHLECHT! ist. firefox erlaubt "Mute tab" -> Firefox benutzen * Klausurraum nicht muten, sonst bekommt man die Notifications nicht. * geschlossenen RocketChat-Kanal einrichten: - GWDG automatisch anlegen? - Alias für Personen (Datenschutz?) - Teilnehmer aus FlexNow exportieren ... libreoffice, Spalte anklicken, copy->paste in emacs HINWEIS: wenn man einen RC-Channel von private auf public ändert, ändert sich die URL von /groups/ auf /channel/ Invite-Funktion für Masseneinladungen: Aus FlexNow->libreoffice, ordnen nach Mail-Adresse, weil RC die memberlist dann auch danach ordnet. Libreoffice Column markieren -> copy -> textfile RC: Im Kanal /invite id1 id2 id3 .. posten (muss eine Zeile sein). manuell im emacs erzeugen M-x replace-regexp @.* nix ### oder @.*$ nix M-x replace-regex ^ " " und manuell die linebreaks raus. Mausen aus einem grafischen emacs (nicht emacs -nw, sonst hat man die linebreak-/s drin) Setzt voraus, dass die @RC-Kürzel genau die Stud.IP/FlexNow-Nutzernamen sind - bei Info1 hat das wohl immer geklappt. PROBLEM: Die Personen müssen vermutlich bereits in RC bekannt sein, man bekommt bei /invite keine Fehlermeldung wenn eine Person nicht da ist, die memberslist wird auch nicht vollständig angezeigt, man muss ggf jeden Namen explizit im Suchfeld anfangen zu tippen. Nicht gut. Person wieder rausnehmen (abgemeldet): Members List, dann nicht die drei-Punkte bei der Person, sondern auf die Person draufklicken, DORT die drei-Punkte, und "Remove from room". grmbl ... umständlich ### StudIP semesterweise einrichten: * Veranstaltungen werden aus exa automatisch angelegt * Oberseminar [versteckt] stellen: -> Verwaltung links unter "Aktionen" "Sichtbarkeit ändern" * Andere Veranstaltungen: Verwaltung -> Zugangsberechtigungen -> Anmelderegeln ggf wenn gesperrt Zuordnung aufheben (dann können sich alle anmelden) ggf neue einrichten, Anmeldezeitraum setzen. Mit dem Reiter "Informationen" kann man eigene Reiter einrichten, hinter denen dann eine kleine Webseite ist "Further Information see Web Pages" -> Link auf dbis-teaching Meetings aktivieren: Verwaltung-> dann viel Zeug zur Auswahl runterscrollen ... [Meetings] Werkzeug ist inaktiv -> Kästchen anklicken "Ablaufplan", "Wiki", "Forum" deaktivieren ### Xournal++ * zum Malen/Skizzieren: Xournal++ (including commands to install it) 14.4.2021: neu von hier installiert (das git-debian-.deb geht nicht, libzip4 wird vermisst, gibts nicht) > xournalpp öffnet leeres Dokument > xournalpp bla.xopp öffnet existierendes Dokument wie man es verlassen hat (einschl. der dort gehabten Toolbar-Konfiguration und Textgröße+Font) * Create a new document: journal->paper background ->plain view -> best fit view -> toolbars right-hand note taking nur bei toolbars->portrait kann man Font+Groesse auswaehlen! 16pt für halben Bildschirm ist OK. * select rectangle etc: selected nur die xournal-Annotationen, nicht das drunterliegende pdf. Dann copy&paste mit den buttons oder C-x/C-c C-v * xournalpp bla.pdf -> öffnet pdf das man annotieren kann. Aus irgendeinem Grund zweiseitig. (13.7.2020) (Vergrößerung hat man nur bei View->Toolbars->Portrait) * supports MathTeX: always in black, cannot be resized (10pt) <<<<<<<<<<<<<<<<<<<<<<<< +- * supports some graphics items, but no diamonds (for ER diagrams) <<<<<<<<<<<<<<<<<<<< -- * speichern: "Save as" speichert nur das .opp, nicht wieder das geöffnete PDF! Bei Annotationen (korrekturlesen etc): Export as PDF!!! * evince: [ view-> presentation: mouse=next page, no marking ] view: set nothing size -> automatic ^/diamond upper right: mouse=mark, f11 fullscreen/ESC: mouse=mark * acroread standard: mouse = mark fullscreen: mouse not mark wenn man einmal im fullscreen war, ist nie wieder mouse=mark ### Videos aufnehmen: Open Broadcaster System (OBS) activate Mic/Aux -> toothed-wheel -> Filters -> Noise Suppression to avoid laptop fan noise * Noise Suppression eigentlich nur für das "Hintergrundrauschen", nicht für Lüfter * Expander. PC-Lüfter, Tastatur, Atemgeräusche ... -> Default-Einstellungen * Noise Gate: untere Grenze wann das Mikro aufmacht * Compressor: laut-leise-Unterschied in der Stimme reduzieren, angeblich angenehmer File -> settings -> Hotkeys. start/stop, pause/unpause see below!!! File -> settings -> output: output format: PAUSE does only work if "recording quality" (older versions: "encoder") is changed: use not "same as streaming" but a better one. see video format: obs creates mkv by default; for recordings we use mp4 * BBB + OBS * OBS is "by default" used as "Screen Sharing" -> select Window * can be added as virtual camera: Linux Plugin: https://github.com/CatxFish/obs-v4l2sink (install as described there) Linux Kernel module * Allgemein: https://github.com/umlaeute/v4l2loopback, (war etwas problematisch (?)), oder * Ubuntu: apt-get install v4l2loopback-dkms (Hinweis für Windows aus dem Chat: https://github.com/Fenrirthviti/obs-virtual-cam) Einrichten: muss beim Booten geladen werden * UEFI-Safe-Boot ausschalten (F12 beim Booten, Admin fragen ...) * laden: root# modprobe v4l2loopback, (mit rmmod v4l2loopback kann man es löschen, lsmod listet alles) bei Fehlermeldungen googeln, evtl mit option starten: modprobe v4l2loopback exclusive_caps=1 in in /etc/modules eingetragen, dann wird es automatisch geladen (braucht man dann das uefi-safe-boot-ausschalten noch?) In OBS starten: Tools -> V4L2 Video Output -> * dev/video0, dev/video1, dev/video2 ausprobieren (video0 ist normalerweise die kamera, dann ist es video1, wenn aber das v4l2loopback-Modul vorgeladen wird, ist es video0 und die Kamera wird video1 * Video format: auswählen, was geht (und in BBB dann auch funktioniert) Bei mir YUY2. (manche sind "not allowed", YUV420 allowed, aber crasht es nach kurzer Zeit) * BBB starten, share camera, sollte es erlauben, "camera" oder "dummy device"=OBS auszuwählen. * problematisch: * Wechsel der "Scenarios" (share/camera) in OBS; * shortkeys nicht ausreichend einrichtbar (man darf ja keine Taste damit belegen, die man in LaTeX/embedded LaTeX in xournalpp oder draw.io benötigt). * Output ist plain Video/Audio -> nur lossy editierbar. => Ansatz nicht weiter verfolgt. ### draw.io * Elemente aus den Auswahlen links ins Feld reinwerfen, landen in der Mitte und können dann (auch später) neu positioniert werden. Nehmen dabei angetackerte Verbindungen mit. * Element beschriften: Wenn man eines reinwirft, und reinklickt, kann man den Textinhalt editieren. Hinweis: centered/linksbündig für diesen Text wird rechts aus dem Menu Style/Text->Text übernommen. * Verbindungen zwischen existierenden Elementen neu ziehen: * einen der blauen Pfeile, die von einem Element ausgehen nehmen, das andere Ende an ein Element antackern, * oder eine Verbindung von links wählen, auf die Zeichenfläche werfen, und beide Enden antackern. * Wenn eine Verbindung "aktiv" ist, kann man rechts mit dem Menu Pfeilspitzen, Dicke, gerade/kurvig etc einstellen (mit dem Menu rechts kann man immer viel mit dem Element, was gerade aktiv ist, machen) * wenn "Zielelement blauer Rahmen"->o, dann Kante mobil "floating" auf dem Rand. Grüner Rahmen ->x an einer Position festgetackert -> machen, eines der Elemente bewegen, sehen was passiert. * 2x auf eine Verbindung klicken -> an dieser Stelle ein Label an die Linie tackern (wenn die Linie mal verschoben wird, wandert es mit) * geschwungene Verbindungen: * mit einer geraden (straight) Verbindung anfangen, dann anstatt "sharp" "curved" auswählen, und die waypoints ziehen. (es gibt unter Line->Style anstatt "straight" auch ein "curved" und "Entity Relation", die aber beide mehr zu ausschweifenden Kurven, bzw ER sogar sehr zu senkrecht-waagerecht- Führung (wie im Mondial-Abhängigkeitsdiagramm) neigen) * Freihandzeichnen (geht auch!) in der Toolbox-Reihe auf das +, "freehand", start-drawing/stop drawing. Dahinter ist offensichtlich auch noch ein eleganter Glättungsalgorithmus. * Farbe zum Freehand-Line: Man muss irgendwo einen "Schrott" schwarz malen. Den dann mit Mausziehen Rechteck drumrum markieren. Dann bekommt man rechts ein "Style"-Menu wo man "Line"->Farbe auswählen kann. Mit apply wird der Schrott dann in der Farbe umgefärbt. Und ab dann hat man auch einen Stift in dieser Farbe, mit dem man was anderes malen kann. Wenn man wieder eine andere Farbe haben will, stop drawing, das gemalte durch einen Klick irgendwohin "entmarkieren". Dann wieder oben mit dem "Schrott" markieren zur neuen Farbe wechseln. Wenn man Pech hat werden aber plötzlich irgendwann mal einige der gemalten Dinge schwarz. * vorhandenen Text verschieben (Element im Feld oder angetackertes Label auf einer Verbindung): hinmausen, der gelbe Punkt ist der Positionsanzeiger des Textes, verschieben. * vorhandenen Text editieren: * Anklicken, doppelklick. backspace: löscht ihn, cursor: läuft drin rum. Tippen. * Größere Textbereiche: Textknoten reinwerfen, breitziehen, das Menu rechts von ggf "Style" auf "Text" wechseln, dann kann man linksbündig, itemize etc auswählen. * wenn man einen Textknoten im Ganzen "aktiv" hat (also nicht im Textediting-Cursor ist), und Fontgröße/Farbe wechselt, merkt es sich die Einstellungen, und der nächste Textknoten übernimmt sie. * math typesetting $$mathLaTeX$$ bla \( inlinemath \) foo (RocketChat versteht \(\pi\) übrigens auch) Extras -> enable/disable math typesetting switches between "source code" and LaTeX * sourcetext eines text contents kopieren: shift-cursortasten markiert es * Waypoints erzeugen: irgendwo auf die Verbindung (gerade oder Kurve geht beides) klicken, rausziehen. erzeugt einen neuen. (oder die "angebotenen" transparent blauen, ziehen, die jeweils auf halber Strecke liegen) * Kurve: gerade Linie holen, rechts->Style; sharp(=gerade)/rounded(runde Ecke)/curved einstellen. * Kurve: "Kurve" holen, kommt mit 2 endpoints und 2 waypoints Dazwischen sind weitere "blaue", die kann man als zusätzliche waypoints ziehen waypoint löschen: Rechtsklick auf waypoint -> remove waypoint. * gruppieren: mit Maus Rechteckrahmen drumrum ziehen, ctrl-g "group" (alles was komplett drin ist, gehört zur Gruppe, alles was rausgeht nur "halb", d.h. bleibt ggf mit einem Ende an ein Teilelement drangetackert - sehr praktisch) * dann immer: erster Klick in die Gegend=Gruppe, mit noch einem kann man ein Einzelelement aktivieren und in der Gruppe verschieben etc. * oder gruppieren wie bei Windows: mit gedrücktem shift alle klicken/markieren, dann ctrl-g * wenn man das Scratchpad wegklickt, kann man es unter "View" wieder holen. * Mit oben rechts->Tabellensymbol kann man sich eine Tabelle holen und deren n:m-Größe auswählen (einkalkulieren, ob man Tabellenname+Spaltennamen-Zeieln braucht). Wenn man dabei Shift gedrückt hält, hat man eine breite Header-Zeile dazu. * mit "arrange" im Feld rechts kann man Zeilen Spalten rein/rausnehmen * mit shift-klick kann man mehrere markieren und mit "style" rechts farbig hinterlegen * Tabellenzellen sind normale Textfelder, können in \(...\) LaTeX enthalten. Sie sind aber erstmal keine draw.io-Knoten, an die man Verbindungen antackern kann * Verbindungen in Tabellenzellen (z.B. PK/FK-Referenzen in Spaltennamen-Zeile): - Tabellenzelle LEER lassen, - einen freistehenden Textknoten bauen, ggf. mit embedded LaTeX \underline und \overline (siehe Scratchpad PKFK-Makros, nur noch den Text editieren) - den Knoten in die Tabellenzelle ziehen, mit C-g-Group dort festtackern. - zuletzt! Referenzen mit line->curve und Waypoints ziehen. Die festgetackerten Textknoten wandern mit, wenn man mal die ganze Tabelle bewegen will, die waypoints passen sich aber nicht grossflächig an (da is LaTeX/pstricks mit \ncarc besser) * Rechtsklick auf aktives Grafik-Element -> toBack, toFront * scratchpad -> Bleistift -> import -> ein .xml auswählen. Man kann (warum?) in einer Session nur am Anfang ein oder mehrere Scratchpads importieren; wenn man einmal "Save" gemacht hat, kann man keine weiteren importieren. Neue Session, dann gehts wieder. * Semijoins und andere Symbole in Unicode muss man irgendwo rausmausen und in den Text kopieren. [SIEHE unicodes.txt-File im selben Ordner] * Scratchpad: vorgefertigte Relationale-Algebra-Baumknoten, wo man nur noch in den "[...]" die Spaltennamen einsetzen muss. * Export von draw.io SVG-Dateien (insbesondere auch .svg -> Ilias -> Ilias-to-pdf) Die Textinhalte/Knotenlabels bei draw.io werden in der Regel nicht korrekt exportiert, da sie für Webseiten ausgelegt sind: "Why text in exported SVG images may not display correctly" - The exported SVG is only designed to be displayed in web pages [...] - The diagrams.net and draw.io editor uses foreign objects foreignObject) in the SVG data to allow complex HTML labels on shapes. Export to SVG with different text settings: Convert Labels to SVG transmits the diagram to our servers, generates a PDF, then pipes that through Inkscape, and returns the SVG output. Konvertierung mit Apache batik (im Ilias-to-pdf) nach jpg: batik ist buggy, kann mit svg:switch und dem Test auf nicht umgehen. ### ZOOM * Teilnehmer benötigen nur einen Link zum Room, keinen eigenen Account Als Anbieter von Sessions: erst bei gwdg freischalten https://info.gwdg.de/dokuwiki/doku.php?id=de:services:mobile_working:videoconferencing_tools:zoom:start#freischaltung_des_zoom-kontos * https://uni-goettingen.zoom.us im Browser aufrufen, dann [sign in]. * später mit "host" Meetings anlegen und hosten * privater Raum für Instant-Meetings. * recordings: * Cloud recordings not allowed by university due to privacy * "Local recordings only for meetings that were recorded while using a supported version of the client. Only available for Windows and Mac." Stimmt nicht: * unter Linux installieren: https://support.zoom.us/hc/de/articles/204206269-Zoom-unter-Linux-installieren-oder-aktualisieren#h_adcc0b66-b2f4-468b-bc7a-12c182f354b7 ... ist sogar problemlos. * mit >zoom & starten. Wenn man nichts hört, kann es sein, dass per Default der falsche Lautsprecher ausgewählt, und/oder die Lautstärke auf Null ist. Das kann man vor/beim Einloggen machen, oder später: * Einstellungen während der Session ändern: * mit dem Klick auf das grüne "Wappen" mit dem Häkchen * gehen die Raum-Einstellungen auf, auf das Zahnrad klicken, dann kann man Audio, Video und viel Kleinkram einstellen. * Recordings: werden nach Beenden des Meetings erstellt, liegen dann in /home/may/Documents/Zoom/ anschauen: vlc bla.mp4 * Whiteboard (geht über sharing): oben rechts mit "..."->"disable participants annotations" ### Mist, muss man wohl jedesmal machen? ### es gibt wohl noch einige Settings, die per Default erstmal gaga sind. * Präsentation hochladen, wie in BBB geht nicht, nur indem man ein pdf aufmacht, Screen sharet, und es in dem (eigenen) Viewer dort dann annotiert. Entsprechend hat das Recording nachher keinen Begriff von "seitenweise", kann aber als mp4 editiert werden. ############## * Videos schneiden: Grundidee: nur Schneiden (ja) oder auch in den Bildern rumbasteln (nein)? mp4: Container, darin können verschiedene codec's verwendet werden. Üblich ist H.264 Darunter gibtsnochmal eine Ebene, irgendwas mit Farbcodierung etc. Üblich(?) ist yuv420p Video: Es werden frames aufgenommen, die codiert werden. Relative Codierung: Key-Frames "total", ansonsten relative Frames. es gibt I-Frames="keyframes", P-Frames, B-Frames As we’ve learned, a B-frame can refer to two or more frames – typically, one in the future and one in the past regarding its position. We also learned that an I-frame does not refer to any other frame and a P-frame refers to a picture in the past. The question naturally arises – can any picture use a B-picture as its reference frame? I hope this article on I-frames, P-frames, and B-frames helped increase your knowledge about video compression. To improve your understanding, download a static FFmpeg build, and play around with the GOP, no-b-frame settings in FFmpeg to see how the size of the video and its quality vary. => wenn man nur an Key-Frames (ca. alle 10 sec) schneidet, muss man nicht neu codieren, sondern kann alles kopieren. Spart Zeit, und Qualität (weil alles so übernommen wird wie es ist, das coding ist lossy. Und da screen-sharing schon mal codiert wurde, sieht es nach einem weiteren Mal decoden+encoden aus wie verschüttete Milch, weil es versucht, das eingeschleppte Rauschen wieder zu codieren etc. DaVinci Resolve: Man kann sehr viel einstellen. Zuerst hatte Lars lossless eingestellt, dadurch wurden die Videos extrem groß. Wenn man es geringer einstellt, sieht es auch aus wie verschüttete Milch. kdenlive (Linux): [Gesamtfunktionalität nicht getestet], reicht zum Video/Audio reinzoomen und sekundengenau ablesen. > kdenlive & am besten aus dem Directory wo man es haben will Rechtsklick in das Feld unter "Project Bin" -> add clip or folder -> im Computer suchen, Doppelklick -> ist im ProjectBin Dann unten nach A1/V1, A2/V2 (Audio/Video ziehen, verteilt sich automatisch) In dem unteren Feld editiert man das Video. * Shift+Mausrad rein/rauszoomen, Mausrad vor/zurückspulen (etwas falschrum) * Wenn man auf den Zeitstrahl klickt, springt es da hin. * An dem Zeitstrahl ist (anfangs) links oben ein Dreieck, das wie ein Rechenschieber nach rechts läuft wenn man es (unter dem Video-Display) startet. Damit kann man an eine Stelle springen. >>> Angabe HH:mm:ss:ff <<< nicht Hundertstel Sekunde, sondern Frame-Nr 0..24 Camtasia (nur Windows): Qualität stimmt. Größe? kann wohl nicht auf Key-Frames aufpassen => recoded alles => lossy LosslessCut hat ein SEHR GUT von CHIP bekommen: https://www.chip.de/artikel/MP4-Videos-verlustfrei-schneiden-Qualitaet-erhalten_183257122.html https://www.computerbild.de/download/LosslessCut-16719799.html Mit der Open-Source-Software „LosslessCut“ schneiden und konvertieren Sie Videos und Musikdateien schnell und unkompliziert. Das kostenlose Videoschnittprogramm eignet sich beispielweise ideal, um Videostreams von Ihrer GoPro oder Smartphone-Videos zu säubern und so Speicherplatz zu einzusparen. Mit wenigen Klicks haben Sie nicht mehr benötigte Passagen gelöscht und verlustfrei ohne neue Komprimierung abgespeichert. Ausprobiert: prinzipiell einfach zu bedienen. ist quasi Schere+Kleber, das kann es gut. Sonst kann es nichts. zuerst bei einem nicht-i-Frame geschnitten. Dann hat es recoded -> File sehr groß => Aufpassen. Avidemux https://www.giga.de/tipp/mp4-schneiden-mit-diesem-tool-gehts-am-besten/ Wie ihr kostenlos MP4-Videos schneidet, zeigen wir euch hier auf GIGA. Wir empfehlen dafür das kostenlose Tool „Avidemux“. Es speichert das geschnittene Video sogar ohne Qualitätsverlust ab. Das Videoformat „MP4“ ist ein Container für verschiedene Arten von Videodateien. Mit dem kostenlosen Tool „Avidemux“ könnt ihr schnell bestimmte Abschnitte entfernen und das Ganze Video ohne erneute Komprimierung wieder abspeichern – also ohne Qualitätsverlust. Steuerung defaultmäßig so, dass es nur an Key-Frames cuttet => idiotensicher Unintuitiver zu bedienen als LosslessCut (Sebastian) Schöne (Fremd)anleitung: http://www.kswillisau.ch/mensamenu/digibag/Multimedia/Videoschnitt/Videoschnitt_Avidemux.pdf ShotCut: nicht so angenehm zu benutzen, teilweise schlechtes Design. (Lars) Vsdc Free Video Editor: kann nicht in MP4 exportieren, ist abgestürzt, nicht gut zu bedienen (Lars). SimpleVideoCutter SimpleVideoCutter: https://www.chip.de/news/Die-besten-Tools-Videoschnitt-kostenlos-2021_101877394.html ganz unten. XMedia-recode https://www.xmedia-recode.de/ #### BBB-Player, BBB-Sourcen downloaden, editieren ### Sourcen aus GWDG-BBB runterladen * Lokalen BBB-Player downloaden (der wird verwendet, um die Sourcen zu laden - braucht man zum eigentlichen Abspielen nicht): git clone https://github.com/andrazznidar/bbb-player.git cd bbb-player python3 -m venv env && source ./env/bin/activate pip install -r requirements.txt ### wichtig: man muss ihn nachher in diesem Directory starten, und ### es erzeugt dann die downloadedMeetings ebenfalls IN DIESES DIRECTORY python3 /home/may/bbb-player/bbb-player.py -d https://meet.gwdg.de/playback/presentation/2.3/abcdef123456 ### Link-Directory setzen (diese kann dann einzelne Meeting-Subdirectories enthalten) # auf login-Rechner: Link ins AFS setzen (zu den runterladenen Meetings) ln -s /afs/informatik.uni-goettingen.de/group/dbis/private/Videos/bbb-capture-ori/bbb-player/downloadedMeetings-dd/ downloadedMeetings ### die Directory liegt bei uns unter afs/groups/dbis, aber man kanns auch über (bzw angepasste URL) https://meet.gwdg.de/playback/presentation/2.0/playback.html?meetingId=d95b874a41ba8c61471f19248daad4ec6eb6a669-1604403925311 runterladen. (brauchen wir aber meistens nicht, nur ... irgendwann veraltete ... Notiz) # lokal: ln -s Videotests/ downloadedMeetings ### Gedownloadete Sourcen abspielen (Mail GK 2.11.2021) * im afs vom Arbeitsplatzrechner aus * zuhause (getestet 2.11.21) * im Browser mit file:... mit dem Browser direkt aus dem AFS (ohne Webserver, direkt im Filesystem) funktioniert es nicht. In den "bbb-download-src/downloadedMeetings-*" Verzeichnissen ist jeweils der Player mit drin (diverse .js in static/ styles/). 1) Mit Python3 einfach einen (BUGGY) Webserver starten (als normaler User): BUGGY: * genügt um es zu schauen, aber nicht um damit zu arbeiten/Edit-Annotationen schreiben: * Die Zeitleiste und die Thumbnails-Slideauswahl funktionieren in Chrome gar nicht. Der Grund ist, dass der Server wegen eines Fehlers die Verbindung abbricht. Sieht man in der Konsole. (Bug in der Python-Library) * In Firefox dasselbe auch nur schlecht. Der python-Webserver ist buggy. 1a) lokal: cd /my/html/files/ python -m http.server 8080 (oder 5000 etc, wenn man es (s.u.) ssh-forwarden will) Dann im Browser: http://localhost:8080/ -> Dann einfach die passende Directory "aufrufen" und es läuft => Dem Browser beibringen, dass er http://localhost NICHT cachen soll, sonst packt er das ganze Video in den Cache, und zeigt immer wieder dasselbe an. (firefox: Hamburger->Settings->Privacy&Security->Cookies and Site Data -> Manage Exceptions) Über diesen Python-Webserver funktioniert das Abspielen (zumindest bei mir) nur korrekt mit Firefox. 1b) wenn man die Sourcen, die auf login liegen, remote abspielen will: dort den python-Webserver auf Port 5000 setzen: python -m http.server 5000 ### läuft, bis man wieder C-c macht, dann ist er tot. # forwarding von login auf Laptop: Port 5000 durch ssh reichen ssh -C -L5000:localhost:5000 login.informatik.uni-goettingen.de # auf Laptop: mit Browser auf http://localhost:5000/ 2) Apache dazu installieren: (tomcat reicht nicht, der servt nur Java-Web-Services, apache kann alles) (howto 10.12.2021) apt install apache2 in /etc/apache2/sites-available/000-default.conf reinschreiben: Options Indexes FollowSymLinks (mit default-html-Seite auf Directory im /home umleiten geht es nicht, Apache darf nicht rausgreifen) /var/www/html -Directory: index.html entfernen, Link setzen: ln -s /home/may/eclipse-workspace/bbb-cutting/ BBB Apache (www-data/www-data) Zugriff auf das Directory erlauben: ## Homeverzeichnis und drunter gruppenausführbar machen, nur das BBB-Directory muss gruppenlesbar sein chmod 710 alle dirs auf dem Weg chmod 750 bbb-cutting (um das Verzeichnis dann anzuzeigen braucht apache d+r) root: systemctl restart apache2 (systemctl stop apache2) Apache startet automatisch wenn der Rechner hochgefahren wird. log: /var/log/apache2/error.log Browser URL "http://localhost" (standard HTTP-Port :80; :8080 ist standard tomcat) #### Struktur der BBB-Sourcen: Inhalt des z.B. DD-15-jun-2020-Directories: (vgl ) Zeit-Metadaten wann Deskshare eingeblendet wird * deskshare.xml SVG/XML-Metadaten wann welche Slides eingeblendet werden, und wo welche Annotationen sind: * shapes.svg (slide-Elemente, g-Elemente (gehören zum vorhergehenden slide-Element, bei Slides, wo man später nochmal hingeht, haben sie die in/out-timestamps von vorher, muss man aufpassen, wenn man etwas rausschneidet) Cursorpositionen mit Timestamps * cursor.svg Text Chat mit Timestamps (brauchen wir nicht) * slides_new.xml: Sonstwas, auch mit Timestamps * panzooms.xml * metadata.xml duration, z.B. 5392364 ist 89.xx Minuten in Millisekunden start_time und end_time ergeben keinen Sinn(?) diff bei DB-2020-11-11-erm1 ist 9838510, /1000 /60 ergibt 163 ... könnte die Laufzeit des Raumes sein, wenn man früher reingeht?? size? raw_size? ### Seiten-pngs: * presentation/a078106f8fbfcf8ec5b51f1c69e25573d21c9225-1592208618499 alle vom user hochgeladenen (pdf) Seiten als pngs (evtl auch nicht-verwendete) * presentation/d2d9a672040fbde2a47a10bf6c37b6a4b5ae187f-1592208573187 die 7 built-in Präsentationsslides von BBB (evtl nur, wenn man die auch mal eingeblendet hatte? - sind nicht immer dabei) ### Webcam-Video * video/webcams.webm Video brauchen wir eher nicht, aber das AUDIO ist dort dabei (bei mir ist das video farblich vergargelt, bei Lars+Sebastian OK) ### Deskshare-Video * deskshare/deskshare.webm (über volle Dauer, ggf halt weiss ...) WebM ist ein Containerformat für Audio- und Videodaten, eingesetzt für die von Google eingeführten Videocodecs VP8 und VP9, welche Alternativen zum bekannten Codec H.264 darstellen. Es wurde für Webseiten im HTML5-Standard entwickelt, wo es als Alternative zum MP4-Format Verwendung findet. Formattyp: Video-Dateiformat Container für: VP8, VP9, AV1 (Video); Vorbis, Opus (Audio) ### BBBs webm hat VP9. Auf steht "For example, the default framerate for screen sharing video sources is 5 fps. That is what browsers send and what BBB records in webm files. But, the processing scripts resample this video to 24 fps and encode it as such. Obviously, the video "fluency" doesn't increase when going from 5 fps to 24 fps, but the CPU usage for encoding does." Die deskshare.webms bei uns haben 24fps und exakt alle 10sec einen keyframe. (18.12.2021 mit DB-2020-11-11). Dekonstruktion: * XML-"Drehbuch"-Datei nach von uns definiertem Format erzeugen * webcam video weg, Audio behalten um zu überprüfen, um welchen Audiostream es sich handelt, verwenden Sie ffprobe input-video.avi ffprobe webcams.webm Stream #0:0: Video: vp9 (Profile 0), yuv420p(tv, progressive), 640x480, SAR 1:1 DAR 4:3, 24 fps, 24 tbr, 1k tbn, 1k tbc (default) Stream #0:1: Audio: opus, 48000 Hz, stereo, fltp (default) Wenn Sie nur Audio aus einem Videostream extrahieren, ist die Länge des Audios möglicherweise kürzer als die Länge des Videos. Um sicherzustellen, dass dies nicht geschieht, extrahieren Sie sowohl Audio als auch Video mit demselben Aufruf von ffmpeg, z. B. ffmpeg -i vid.avi -map 0:a audio.wav -map 0:v onlyvideo.avi ffmpeg -i webcams.webm -map 0:a audio.webm -map 0:v onlyvideo.webm ### aussenrum ein Container. opus geht nicht in .wav, aber es geht z.b. auch in .mp3 ### bei uns: nur audio rausholen, nur kopieren. Mit "copy" ganz schnell: ffmpeg -i webcams.webm -map 0:a -c:a copy audio.webm ### erzeugt gleich wieder ein webm Wenn Sie einen Teil des Audios aus einem Video extrahieren möchten, geben Sie mit der Option -ss den Startzeitstempel und mit der Option -t die Codierungsdauer an, z. B. zwischen 3 Minuten und 5 Sekunden für 45 Sekunden: ffmpeg -i sample.avi -ss 00:03:05 -t 00:00:45.0 -q:a 0 -map a sample.mp3 Die Zeitstempel müssen im Format HH: MM: SS.xxx oder in Sekunden vorliegen. So extrahieren Sie den Audiostream ohne Neucodierung: ffmpeg -i input-video.avi -vn -acodec copy output-audio.aac -vn ist kein Video. -acodec copy sagt, benutze den gleichen Audio-Stream, der bereits da ist. What's the difference between “-acodec” and “-c” in FFMPEG? Both of these commands seem to work fine. Is there any difference between using '-c' and '-acodec'? I think -c stands for 'codec' and -acodec stands for 'audio codec'?? Lars: acodec/vcodec ist alt, bevor es die Stream-Auswahl 0:a, 0:v (bei einem input) und 1:a, 1:v etc gab. The FFmpeg documentation clearly states that they do the same thing. Just be careful if you ever work with videos - you would have to use -c:a copy to only copy the audio codec, like -acodec You can add -c copy to many of these examples to enable stream copy mode. This is useful if you want to mux only and avoid encoding. ffmpeg -i webcams.webm -map 0:a -c copy audio.webm -map 0:v -c copy onlyvideo.webm Summe der beiden so groß wie das originale webm. ffmpeg -ss 00:00:32.3 -i audio.webm -c copy -t 00:00:15 here-with.webm wieder zu In-Format des Audio muss gleich Out-Format sein, also webm: ffmpeg -i webcams.webm -vn -acodec copy bla.webm äquivalent damit ffmpeg -i webcams.webm -vn 0:a copy bla.webm Wenn Sie nur Audio aus einem Videostream extrahieren, ist die Länge des Audios möglicherweise kürzer als die Länge des Videos. Um sicherzustellen, dass dies nicht geschieht, extrahieren Sie sowohl Audio als auch Video mit demselben Aufruf von ffmpeg, z. B. "ffmpeg -i vid.avi -map 0: a audio.wav -map 0: v onlyvideo.avi * Daten über die Codierung etc mit ffprobe auslesen: alle Daten des ersten video-streams als key-value-pairs: ffprobe -v error -select_streams v:0 -show_entries stream input.mp4 Man kann einzelne selektieren, und die keys nicht mit ausgeben lassen: Frame rate vom 1. video stream: ffprobe -v error -select_streams v:0 -show_entries stream=avg_frame_rate -of default=noprint_wrappers=1:nokey=1 input.mp4 Resolution: ffprobe -v error -select_streams v:0 -show_entries stream=height,width -of csv=s=x:p=0 input.mp4 Pixel Format: ffprobe -v error -select_streams v:0 -show_entries stream=pix_fmt -of default=noprint_wrappers=1:nokey=1 input.mp4 Alle obigen -> dann mit java.io.scanner nacheinander lesen ffprobe -v error -select_streams v:0 -show_entries stream=avg_frame_rate,height,width,pix_fmt -of default=noprint_wrappers=1:nokey=1 input.mp4 * Das Mediainfo-Tool kann auch Metadaten auslesen: mediainfo bla.webm * (konstantes Video) erzeugen: * "leer" blank: ffmpeg -t 7200 -s 640x480 -f rawvideo -pix_fmt rgb24 -r 24 -i /dev/zero empty.mpeg Switches dort auch erklärt (size, -r 24 frame rate fps default=24, format) [ bei mpeg/rgb24: schwarz, bei webm/rgb24 schwarz, bei webm/yuv420p: grün ] * "weiss" blank, dann ist es so wie bei BBB: ffmpeg -f lavfi -i color=white:640x480 Problem mit -t sec: nur ganze sekunden => besser -t 00:00:00.xx verwenden. (Lars 14.12.) ffmpeg -loop 1 -i image.png -c:v libx264 -t 0.83 -pix_fmt yuv420p -vf scale=width:height out.mp4 ( -loop 1 ist default, optional, mit -loop 2 würde es es zweimal hintereinander machen) -s 240x480 oder scale=240:480 is wohl egal; scale -1:-1 nimmt evtl die Originalgröße des Bildes ) Bild extrahieren (Lars, RC, 14.12.): ffmpeg -ss 00:11:59.4917 -i input.mp4 -frames:v 1 output.png ### -frames:v 1 -> Bild, sonst video wenn man -ss vor -i angibt, dann macht er die automatische suche nach dem nächsten keyframe. wenn man -ss nach -i macht, dann nimmt er den exakten zeitpunkt. (dauert lange ... 25% der Zeit??) ### mit 2x ss: springt über die keyframes zum ersten, und dann das zweite (relativ dazu) zur Auswahl ffmpeg -ss 01:15:00.00 -i deskshare.webm -ss 00:01:00.18 -frames:v 1 output.png (deskshare vom 11.11.2020 - bei 01:15:32 setzt ein screen-sharing ein, damit rumgetestet) * konstantes Audio Stille: ffmpeg -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=48000 -t 10 silence.webm ### nur wenn man -f lavfi setzt, kennt er -i anullsrc ### setzt explizit auf stereo und 48000, beides ist default. ffmpeg -f lavfi -i anullsrc -t 10 silence.webm ### tut dasselbe, wie man mit ffprobe herausfinden kann: ffprobe -v error -select_streams a:0 -show_entries stream=codec_name,sample_fmt,sample_rate silence.webm D.h. fürs video: vp9, yuv420p,640x480.24fps und fürs audio: opus,48000Hz,stereo,fltp . * Audio konvertieren: ffmpeg -i -c:a libopus -b:a bitrate * Reines Audio neu aufnehmen: ganz einfach mit obs: rechts unten "Start recording" ...sprechen... "Stop recording" erzeugt Datei /home/may/2022-01-07\ 18-21-37.mp4 => umbenennen => satz.mp4 Ist ein mp4, das Video+Audio enthalten könnte, (ffmpeg will es so nicht mit den BBB-Audio-extracts concatten, weil irgendwas mit (video?)-Timestamps nicht passt, die audio extracts haben ja keines) also audio rausholen, nach webm kopieren: ffmpeg -i satz.mp4 -map 0:a satz.webm ffmpeg -i neunzehnsechundneunzig.mp4 -map 0:a 1996.webm Das File kann man dann ganz normal in die audiocreate-Liste mit reinschreiben. * erzeugte webms (opus encoding) aneinaderhängen (silence.webm, oder mit obs erzeugt): => firefox stoopt, Fehler: [Child 18678, MediaDecoderStateMachine #1] WARNING: Decoder=7f44e3561f00 Decode error: NS_ERROR_DOM_MEDIA_FATAL_ERR (0x806e0005) - virtual RefPtr mozilla::OpusDataDecoder::Decode(mozilla::MediaRawData *): Discard padding on interstitial packet: file /build/firefox-oDiU8w/firefox-96.0+build2/dom/media/MediaDecoderStateMachine.cpp:3568 => rumgesucht ... mit ffmpeg chomp filter kann man "Remove zero padding at the end of a packet." auf silence.wemb ausprobiert, ändert nichts. => google "Discard padding ffmpeg" => "The specs don't allow gaps in opus files" ... Padding darf nur am Ende eines Streams auftreten, aber nicht durch Zusammenhängen mittendrin "opus bitstream created by a buggy muxer (like ffmpeg's)" scheint das Problem zu betreffen, aber kein Fortschritt. * deskshare: lossless in die Einzelteile cutten losslessCut kann webm verarbeiten ffmpeg: FFmpeg has a "lossless" mode for x264, see FFmpeg and x264 Encoding Guide § Lossless H.264 in essence it's -crf 0 The range of the CRF scale is 0–51, where 0 is lossless, 23 is the default, and 51 is worst quality possible. mjpg (Motion-Jpeg, Einzelbilder) ffmpeg -i deskshare.webm -> rausfinden in was der webm-container im einzelnen codiert ist ffmpeg -i deskshare.webm -vcodec mjpeg -qscale 1 -an deskshare.avi ### geht ffmpeg -i deskshare.webm -vcodec mjpeg -qscale 1 -an deskshare2.webm ### geht nicht: Only VP8 or VP9 or AV1 video and Vorbis or Opus audio and WebVTT subtitles are supported for WebM. ffmpeg -i deskshare.avi -vcodec vp9 -qscale 1 -an deskshare2.webm geht, aber sehr langsam (0.4x Geschwindigkeit) Two workarounds are possible. 1) Display the full GOP (Group of Pictures) ffmpeg -ss X -i input.mp4 -c copy -t X -avoid_negative_ts make_zero output.mp4 ss: Anfang hh:mm:ss , t: dauer (nicht Endzeitpunkt) ffmpeg -ss 00:06:02 -i deskshare.webm -c copy -t 00:00:15 -avoid_negative_ts make_zero zwei-keyframes.webm => am Ende 16sec lang. Keyframes bei 0 und 10sec => beginnt am vorherigen keyframe, dann n Sekunden, und dann bis zum beabsichtigten Endzeitpunkt (wenn man bei 6:08 beginnt und 15 sec macht, ist das Ergebnis 22 sec lang: 6:00 bis 6:08+15=6.23) Keyframe-Abstand bei Lars: 10 sec, unverändert ffmpeg -ss 00:00:45 -i deskshare.webm -c copy -t 00:00:15 -avoid_negative_ts make_zero eins-keyframes.webm 19 sec lang, geht 5 Sekunden zurück bis zum vorigen keyframe, dann 5+die 15 bis wohin es sein sollte. keyframes bei 0 und bei 10sec, am Ende keiner => das (input)-Format hat schon keine Vorwärtsreferenzen auf den nächsten Zeitpunkt.. The trim will start a bit before your specified ss value but concat should be fine. No re-encoding required. => copy immer mit -avoid_negative_ts make_zero Mit dem -c copy VERBIETET man ihm das re-encode, sonst würde er es tun: ffmpeg -ss 00:00:45 -i deskshare.webm -t 00:00:15 -avoid_negative_ts make_zero eins-keyframes.webm ist nur 15 sec lang ffmpeg -ss 00:00:45 -i deskshare.webm -t 00:00:15 eins-keyframes.webm ist auch nur 15 sec lang recoded auch, nutzt also die negative timestamps irgendwie nicht (obwohl er dann lossless cutten könnte, default ist also recoding)?? 2) Re-encode the extracted segments ffmpeg -ss 00:00:00 -i deskshare.webm -c:a copy -t 00:01:35 eins.webm ### Lars: ändert den Keyframe-Abstand von 10 auf 5.33 sec (sowohl bei 1:40 als auch 1:35 und auch bei 1:32) ### naja -c:a copy sagt "copy das (leere) Audio", und kopiere/reencode aber das video ... ### -c:v copy oder -c copy kopiert und nicht reencoded video bzw beide: ffmpeg -ss 00:00:00 -i deskshare.webm -c:v copy -t 00:01:40 eins.webm ffmpeg -ss 00:00:00 -i deskshare.webm -c copy -t 00:01:40 eins.webm => copy, not reencode für a+v ffmpeg -ss 00:02:00 -i deskshare.webm -t 00:00:08 achtsekunden.webm keyframes-Abstände: 0, 5.33, am Ende (8:00) ffmpeg -i "concat:eins.webm|zwei-keyframes.webm" -c copy concat.webm ### geht nicht -- File extends beyond end of segment. concat -> Matroska error - Scheint eher ein Syntaxfehler zu sein??? zwei webms aneinanderhängen geht ffmpeg -f concat -i mylist.txt -c copy bla.webm (mylist.txt: file 'eins.webm' file 'zwei-keyframes.webm' ) keyframes-Abstände: bis 1:40 Abstand 5.33, danach 10sec => ok. (mylist.txt: file 'eins-keyframes.webm' file 'achtsekunden.webm' file 'zwei-keyframes.webm' ) 44 lang keyframes-Abstände: 0, 10, 16, 21.333, 24, 34, am Ende (47.9999) keiner. 16 sec das erste, 8 sec weiss, 20 sec das zweite * concat mit re-encoding in eines: ffmpeg -i input1.webm -i input2.webm -i input3.webm \ -filter_complex '[0:0][1:0][2:0]concat=n=3:v=0:a=1[out]' \ -map '[out]' output.webm * Timestamps aller frames zeigen: ffprobe -select_streams v -show_frames zwei-keyframes.webm ffprobe -select_streams v -skip_frame nokey -show_frames -show_entries frame=pkt_pts_time,pict_type zwei-keyframes.webm ### nokey wird bei mir ignoriert =:(( ### dann halt output als XML, dann kann ich damit machen was ich will: ffprobe -select_streams v -show_frames -of xml zwei-keyframes.webm * Länge eines Videos: ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 deskshare.webm ### gibt die Sekunden aus dem metadaten-Eintrag aus. Bearbeiten: XML-Dateien Audio+Video(camera)-webm => nur audiospur nehmen, Kamera kann weg Screenshare-Video cutten Shell commands/ffmpgeg/ffprobe aus Java aufrufen: https://www.baeldung.com/run-shell-command-in-java Rekonstruktion: auf Basis einer von uns definierten XML-"Drehbuch"-Datei * Audio * deskshare.webm neu mit weissem Zwischenbild erzeugen. * mit deskshare.xml und shapes.xml->slides.in/out kann man die slides um ein deskshare ohne Schnitt nur durch einblenden/ausblenden "verlängern" und das deskshare verkürzen. => .webm-Schnitte müssen nicht exakt sein, können irgendwo im "weissen" liegen. * wenn deskshare und Slide sich in dem Timestamps überschneiden, wird deskshare gezeigt. * reine Audios aufnehmen: www.audacity.de #### ILIAS ## Klausur als Lernklausur ins StudIP exportieren: Tutorial im ILIAS "Teil III: Tests erstellen und verwalten" Einen Test für eine Stud.IP-Veranstaltung verfügbar machen. Dort liegt dann eine pdf-Anleitung. * "Zeitlich eingeschränkte Verfügbarkeit" einstellen * passwort setzen * Dauer der individuellen Bearbeitung setzen * Verlinken (als Dozent sehe ich es schon verlinkt, Studierende sehen es aber (noch) nicht: Lernmodule hinzufügen / entfernen Angebundenes System -> ILIAS Online-Prüfung auswählen [Auswählen] klicken Suchbegriff "Klausur DB", "Datenbanken" oder sowas Aufklappen Mit Schreibrechten für alle Lehrenden dieser Veranstaltung Dann links auf "Zuordnungen aktualisieren" <<<<<<<<<<<<<<<<<<<<<< Im Test dann noch Einstellungen -> online ## "echte" Klausur erstellen: * LaTeX->Ilias: Video Making-of in SSD/XML 2020 (18.8.2020) "Klausur-LaTeX-to-Ilias" Aufruf: htlatex ssdklausur.tex -> erzeugt ssdklausur.html Dort den Teil ohne ML rauskopieren. (die pstricks-Grafiken sind aber alle in atomare Bestandteile zerfranst, diese besser aus pdf -> Screenshot generieren). * Konfiguration im eps-intern setzen (nach Vorbild, wie die Klausur 2.3.2022 konfiguriert ist): Es gibt auf zwei Ilias-Ebenen "Einstellungen": für das Lehrmodul, und nochmal im Test: (ins StudIP werden wohl nur die inneren, des "Tests" übernommen) * Einstellungen "aussen" "Stud.IP-Kurs LV-Nr. 990034; MAY" (Ausgewählt) Inhalt/Info/EINSTELLUNGEN -> Kurseinstellungen: "Einstellungen des Kurses", "Verfügbarkeit": nur "Titel" (der von der StudIP-Sonderveranstaltung) und das ONLINE-Häkchen sind gesetzt, alle anderen "DD-MM-YYYY"-Nullwert * TESTS "Klausur Datenbanken" -> reingehen Fragen/Info/EINSTELLUNGEN -> * Verfügbarkeit ONLINE => ERST ZULETZT SETZEN!!!! (hängt aber wohl sowieso noch von dem nächsten Punkt ab) Zeitlich begrenzte Verfügbarkeit: X -> Zeit angeben (Ende ist die echte Stopzeit für die Klausur, kann man während der Klausur noch hochsetzen). => später hochsetzen zur Klausureinsicht Immer sichtbar: X anklicken (dann sieht man, ob er überhaupt da ist ...) * Durchführung: Zugang Testpasswort setzen. * Import vom eps-intern nach StudIP: Zuerst muss das Ilias-Team es anlegen Dann im StudIP -> $course -> Learning Modules -> Lernmodule hinzufügen/entfernen Dann werden erstmal alle angezeigt, die schon da sind. -> Quelle auswählen "ILIAS Online-Prüfung" -> Suchen "SSD" oder "Datenbanken" ... -> Unter den Möglichkeiten das richtige raussuchen -> Schreibrechte auswählen "keine Schreibrechte" ist (i) "Besitzer" "Hinzufügen" klicken. Lädt die Seite neu, aber zeigt es noch nicht an!!! => "Zuordnungen aktualisieren" dann wird es auch angezeigt. Hoffentlich. * Vorgegebene PDF-Fragmente in StudIP/Dateien ablegen: (DB-Klausur; die Frames für .xml und .xsl der SSD/XML-Klausur stehen im Aufgabentext) z.B. mit https://pdf4me.com (Screenshot als png machen, png hochladen, pdf bekommen) kann man nur eines erzeugen, dann muss man einen Account erstellen. Mit firefox -> Open new Private Window müsste es gehen. * Ilias Export -> zip mit allen Textloesungen An die geuploadeten Files kommt man (irgendwann zufällig rausgefunden) doch auch dran: Statistik -> Ergebnis zu Einzelfragen -> Hochgeladene Dateien (!) Downloaden, baut aber dann eine schwer auszubeutende Directory-Struktur auf * Notenschema nach der Klausur vor der Ergebnisbekanntgabe erstellen/ändern Tutorial im ILIAS "Teil III: Tests erstellen und verwalten" * Ergebnisbekanntgabe Ilias, Klausureinsicht (Mail 26.5.2021, DB) Notenschema eines bewerteten Tests ändern: 'Einstellungen' -> 'Auswertung' -> 'Bekanntgabe des Testergebnisses' -> 'Teilnehmer sehen Testergebnisse' ein Datum in der Zukunft einstellen. -> runterscrollen, "Speichern" Dann unter 'Einstellungen' -> 'Notenschema' Notenstufen generieren: * bei dem vorgegebenen "nicht bestanden" Note: Offizielle Bezeichnung so lassen. Kurzbezeichnung "5,0" mit Komma! ergänzen, sonst nimmt FlexNow es später aus dem csv nicht. * Alle Kurzbezeichnungen MIT KOMMA (also z.B. '1,7') eintragen, damit FlexNow die Note interpretieren kann. Bei der "Offiziellen Bezeichnung" auch '1,7' etc. eintragen, das ist das, was die Studierenden bei der Klausureinsicht sehen (sonst steht da nur "Sie haben die Note „“ erzielt.". Klausureinsicht: 'Einstellungen' -> 'Auswertung' -> 'Bekanntgabe des Testergebnisses' -> 'Teilnehmer sehen Testergebnisse' das Datum wieder zurück, so dass es schon erreicht ist, und dann öffnet sich weiteres: * Mail 1.9.2021, SSD "'Tabelle mit detaillierten Testergebnissen' pro Durchlauf zum gewählten Zeitpunkt anzeigen" auch auswählen. weiter unten dann "Resultierende Note anzeigen" ankreuzen Unter "Details Testergebnisse" aktivieren: "Bewertete Teilnehmerantworten", "Rückmeldungen", "Druckbare Liste der Antworten" SPEICHERN!!! Neues Test-PW setzen (zur Klausureinsicht braucht man kein Passwort, wenn jemand fragt, der "Show Results" Button in der Mobilversion ist etwas versteckt). Wenn man das pwd kennt, kann man den Test weitermachen und die Antworten noch verändern (Punkte der Aufgabe werden dann automatisch "0" gesetzt, daran würde man sowas merken). * "online" setzen (aber das ist wohl noch auf true, wenn man es nicht ausgeschaltet hat) * "Verfügbarkeit": Zeitlich begrenzte Verfügbarkeit -> ENDE hochsetzen SPEICHERN!!! * Noten nach FlexNow: Liste mit den Klausurergebnissen unter 'Statistik' -> 'Klausurergebnisse / Notenliste exportieren' im voreingestellten Format 'FlexNow - benotet' als csv-Datei generieren und händisch in FlexNow hochladen: Dort Veranstaltung auswählen, "Teilnehmerliste laden"!, dann erst erscheint im mittleren Bereich ein waagerechtes Auswahlelement "csv-Import", wo man das in Ilias generierte csv hochlädt. Dann mit dem Button "Noten freischalten" (der ist in dem OBEREN Feld, unter "Teilnehmer laden", nicht unten bei den Teilnehmern!) noch freischalten.