===== Videos Encodieren ===== Manche Videos lassen sich nicht abspielen wegen Codec Warnung, daher muss man manche Videos umwandeln wenn man keine Codecs installieren mag. Dies gelang gut mit ''HandBrake''. Dort hatte ich ein .mp4 Video geladen welches sich nicht unter VLC abspielen ließ(hat Codecs vermisst) Mit Handbrake konnte ich es in .webm Format umwandeln und nun läuft es überall. Es ist dabei aber auch größer geworden von 20 MB auf 40 MB gewachsen. Im weiteren Schritt ließ es sich nun auch mit ''ffmpeg'' bearbeiten. Es ging mir darum die Zeitdauer des Videos zu minimieren. ===== Videos reparieren ===== The idea is to strip off the first 44 bytes of the header, for instance with a hex editor or using ''dd'' from ''CoreUtils'' and then to rebuild an ADTS stream from the stripped file using ''faad''. dd ibs=1 skip=44 if='your broken file.m4a' of=raw.aac faad -a adts.aac raw.aac ==== mplayer mencoder ==== Man kann versuchen die defekte Video-Datei mit ''mencoder'' umzuwandeln und so evtl. zu reparieren: mencoder -forceidx -oac pcm -ovc copy corruptvideo.mp4 -o fixedvideo.avi Springt zu 56. Sekunde mencoder -ss 56 Verschiedene Optionen an ''mplayer'' übergeben um das defekte Video dennoch irgendwie abzuspielen. You can use the scale filer as an output option to tell ffmpeg to scale your images. This allows you to keep the input images at their original size. Examples: -vf scale=1280:828 -vf scale=1280:-1 These two scale examples would both resize your 1700x1100 input to 1280x828. The -1 tells ffmpeg to scale the height automatically while keeping the aspect ratio. With your input size and the requested 1280 output width the height would end up being 828. mplayer -nosound -vf scale=1024:576 20150502_006.mp4 mplayer -nosound -vo x11 -screenw 1920 -screenh 1088 20150502_006.mp4 Forced video codec: ffh264vdpau mplayer -vo vdpau -vc ffh264vdpau 'So Live.avi' ==== ffmpeg ==== Das Video zu einer niedrigeren Auflösung encodieren. Oder mit ffmpeg zu einem anderen Format umwandeln: ffmpeg -i "So Live.avi" -qscale 4 So_Live.mp4 ffmpeg -i "So Live.avi" -acodec copy -vcodec copy So_Live.avi Hiermit wird das Video richtig klein, indem die Framsize verkleiner wird. Von 40 MB auf 5 MB verkleinert. ffmpeg -i The\ Run\ of\ the\ Golden\ Bull.webm -vf "scale=iw/2:ih/2" half_the_frame_size.mkv oder ffmpeg -i input.mkv -vf "scale=iw/3:ih/3" a_third_the_frame_size.mkv Nur die ersten 30 Sekunden eines Videos in eine neue Datei speichern ffmpeg -i originalfilm.mkv -t 00:00:30 TheRunoftheGoldenBull.mkv Da der obige Kommando sehr lange dauerte, ohne sichtbare Qualitätsunterschiede, habe ich den folgenden Kommando genommen der wesentlich schneller ist: ffmpeg -i originalfilm.mkv -t 00:00:30 -c copy TheRunoftheGoldenBull_30s.mkv Aus der Mitte eines Videos einen bestimmten Bereich wählen. Hier ab der 11. Sekunde und ab da 31 Sekunden weiter. ffmpeg -ss 00:00:11 -i originalfilm.mkv -t 31 -c copy supershort01.mkv Video beschleunigen ffmpeg -i 20210112_15171777.mp4 -filter:v "setpts=0.5*PTS" output_fast.mp4 Video verlangsamen ffmpeg -i 20210112_15171777.mp4 -filter:v "setpts=2.0*PTS" output_slow.mp4 Zwei einzelne Video Dateien zusammenfügen. Hierzu müssen die beiden oder mehrere Dateien untereinander in einer Text Datei eingetragen werden: cat files.txt file '20210112_video01.mp4' file '20210112_video02.mp4' Anschließend beginnt das zusammensetzen der Dateien mit ''ffmpeg'' ffmpeg -f concat -safe 0 -i files.txt -c copy output.mp4 Audio, Musik, Ton aus einer Musik-Datei zu einem Video hinzufügen ffmpeg -i ronnimachtsport01.mp4 -i music.m4a -map 0:v -map 1:a -c:v copy -shortest output_mit_musik.mp4 ==== Untrunc ==== * https://github.com/ponchio/untrunc oder eine verbesserte Version: * https://github.com/anthwlock/untrunc Es wir neben der defekten Videodatei noch eine funktionierende Datei benötigt welche vom gleichen Gerät erstellt worden ist wie die defekte. Zusätzlich werden noch benötigte Libraries mit ''apt'' oder ''zypper'' installiert: sudo apt install libavformat-dev libavcodec-dev libavutil-dev Unter Suse benötigte ich noch das Paket //zlib-devel// zypper in zlib-devel Dann ''untrunc'' nach der README kompilieren und installieren. Die Verwendung von ''untrunc'' geschieht durch den Aufruf des Programms mit benötigten Optionen ''-s'' - step through unknown sequences und optional ''-v'' damit ausführliche Informationen ausgeben werden. Anschließend wird eine funktionierende Videodatei und die defekten Videodatei übergeben. ./untrunc -v -s ../../Videos/20150514_001.mp4 ../20150502_006_defekt.mp4 ===== Video und Bild Aufnahme ===== Zuvor noch speziell für den Raspberry Pi, hier muss ''raspi-config'' gestartet und unter //Interface Options// der Kamera Support aktiviert werden. Mit Hilfe gängiger Programme wie Mplay, mpv und Vlc. Aber auch mit dem mächtigen Kommandozeilen Programm ''ffmpeg'' ==== v4l2 ==== Zusätzlich sind die Programme die zu v4l2 gehören eine gute Möglichkeit festzustellen was die WebCam so alles Kann. die Kamera Details anzeigen: v4l2-ctl -V Oder sich infos zu den Kamera Treibern geben lassen: v4l2-ctl -D Auch lässt sich die Kamera mit v4l2 konfigurieren: die aktuellen Helligkeitseinstellungen der Kamera auslesen: v4l2-ctl -C brightness Einen neuen Wert setzen: v4l2-ctl -c brightness=40 Der neue Wert wird sofort aktiv. Was man alles regeln kann, lässt sich mit ''v4l2-ctl -L'' auflisten. ==== Video aufnehmen ==== Hatte eine Weile gebraucht die passende Option zu finden, um auch Audio im Video von meiner WebCam zu bekommen. Hier habe ich mir die Aufname fähigen Geräte meines Computers zunächst mit ''arecord -l'' anzeigen lassen: arecord -l **** Liste der Hardware-Geräte (CAPTURE) **** Karte 1: webcam [webcam], Gerät 0: USB Audio [USB Audio] Sub-Geräte: 1/1 Sub-Gerät #0: subdevice #0 Hier zeigt mir arecord Karte 1 und Gerät 0 an. Diese Info baue ich in den ''ffmpeg'' Kommando mit ein: ffmpeg -y -f video4linux2 -s 320x240 -i /dev/video0 -itsoffset 2 -f alsa -i "plughw:CARD=1,DEV=0" -ac 2 -strict experimental Filename.mp4 ==== Video mit Ton ==== Um über die Kommandozeile ein Video mit Ton aufzunehmen, können Sie verschiedene Tools verwenden, darunter ''ffmpeg'', das sehr leistungsfähig und flexibel ist. Hier sind die Schritte, wie Sie es einsetzen können wenn sie z.B. über die Webcam HD 3MP WEBCAM ein Video aufnehmen möchten: Ermitteln Sie die Gerätenummern für Video und Audio: Sie müssen wissen, welche Gerätenummern Ihr Video- und Audiogerät haben. Diese Information können Sie mit folgenden Befehlen herausfinden: v4l2-ctl --list-devices Integrated_Webcam_5M_IR: DELL M (usb-0000:00:15.0-1.2.3.3): /dev/video4 /dev/video5 /dev/video6 /dev/video7 Integrated_Webcam_5M_IR: DELL M (usb-0000:00:15.0-1.4.3.3): /dev/video0 /dev/video1 /dev/video2 /dev/video3 webcam: HD 3MP WEBCAM (usb-0000:00:15.0-4): /dev/video8 /dev/video9 (Installieren Sie **v4l-utils**, wenn ''v4l2-ctl'' nicht verfügbar ist.) arecord -l **** Liste der Hardware-Geräte (CAPTURE) **** Karte 0: LINK [Jabra EVOLVE LINK], Gerät 0: USB Audio [USB Audio] Sub-Geräte: 1/1 Sub-Gerät #0: subdevice #0 Karte 1: C2423H [C2423H], Gerät 0: USB Audio [USB Audio] Sub-Geräte: 1/1 Sub-Gerät #0: subdevice #0 Karte 2: C2423H_1 [C2423H], Gerät 0: USB Audio [USB Audio] Sub-Geräte: 1/1 Sub-Gerät #0: subdevice #0 Karte 3: PCH [HDA Intel PCH], Gerät 0: ALC3253 Analog [ALC3253 Analog] Sub-Geräte: 1/1 Sub-Gerät #0: subdevice #0 Karte 3: PCH [HDA Intel PCH], Gerät 2: ALC3253 Alt Analog [ALC3253 Alt Analog] Sub-Geräte: 1/1 Sub-Gerät #0: subdevice #0 Karte 4: webcam [webcam], Gerät 0: USB Audio [USB Audio] Sub-Geräte: 1/1 Sub-Gerät #0: subdevice #0 (Dieser Befehl listet alle Audiogeräte auf.) Nehmen Sie das Video auf: Nachdem Sie die Gerätenummern identifiziert haben, verwenden Sie ''ffmpeg'' um die Aufnahme zu starten. Hier ist ein Beispielbefehl, der sowohl Video als auch Audio aufnimmt: ffmpeg -f v4l2 -i /dev/video8 -f alsa -i "plughw:CARD=4,DEV=0" -c:v libx264 -pix_fmt yuv420p -c:a aac -strict experimental output.mp4 Ersetzen Sie /dev/video8 mit dem Pfad zu Ihrem Videogerät. Ersetzen Sie "plughw:CARD=4,DEV=0" mit der entsprechenden Hardware-Adresse Ihres Audiogeräts. Dieser Befehl nimmt ein Video auf und speichert es im MP4-Format mit H.264-Video- und AAC-Audio-Codec. Sie können die Codecs und Formate nach Ihren Wünschen anpassen. Beachten Sie, dass Sie eventuell zusätzliche Optionen einstellen möchten, um die Qualität und Größe der Aufnahme zu optimieren. Die Aufnahme kann mit Strg + C beendet werden. === Video Dateien aufteilen === Mit diesem ''ffmpeg'' Kommando kann man das Video auf mehrere kleine Dateien von 1800s länge aufteilen. ffmpeg -f v4l2 -i /dev/video8 -f alsa -i "plughw:CARD=4,DEV=0" -c:v libx264 -pix_fmt yuv420p -c:a aac -strict experimental -segment_time 1800 -f segment 3output_%03d.mp4 ==== grafische Aufnahme Programme ==== Unter Debian, openSuse und weiteren zu finden guvcview | GTK+ UVC Viewer and Capturer | Paket ==== Snapshot von WebCam ==== === MPlayer === Nimmt einen kontinuierlichen Video Stream auf durch Drücken der Taste s wird ein Snapshot im aktuellen Pfad gespeichert. mplayer tv:// -tv driver=v4l2:width=640:height=480:device=/dev/video8 -fps 15 -vf screenshot Beenden kann man alles mit der Eingabe/Enter Taste. ==== MPV ==== Video aufnehmen Unter Raspberry mit OSMC bietet sich das Programm ''mpv'' an, da ''mencoder'' nicht existiert. Außerdem sollte man beim Raspberry 1 ''avi'' als Dateiformat wählen, da ''mpv'' anhand der Endung automatisch den dazugehörigen Codec erkennt und ''avi'' am Performantesten läuft aber zwar miese Qualität bietet. Als Endung mp4, würde ein qualitative hohe Auflösung liefern aber sehr stark ruckeln. Hat so nicht mehr funktioniert es musste das = noch unten eingefügt werden nach aktuellen test unter Suse15: mpv av://video4linux2:/dev/video0 --o NameVideodatei.avi mpv av://video4linux2:/dev/video8 --o=NameVideodatei.avi === Spezieller Raspberry Schalter in mpv === --hwdec= Specify the hardware video decoding API that should be used if possible. Whether hardware decoding is actually done depends on the video codec. If hardware decoding is not possible, mpv will fall back on software decoding. can be one of the following: no always use software decoding (default) auto see below vdpau requires --vo=vdpau or --vo=opengl (Linux only) vaapi requires --vo=opengl or --vo=vaapi (Linux only) vaapi-copy copies video back into system RAM (Linux with Intel GPUs only) videotoolbox requires --vo=opengl (OS X 10.8 and up only) dxva2-copy copies video back to system RAM (Windows only) rpi requires --vo=rpi (Raspberry Pi only - default if available) auto tries to automatically enable hardware decoding using the first available method. This still depends what VO you are using. For example, if you are not using --vo=vdpau or --vo=opengl, vdpau decoding will never be enabled. Also note that if the first found method doesn't actually work, it will always fall back to software decoding, instead of trying the next method (might matter on some Linux systems). ==== VLC ==== VLC can also be used to view and record your webcam. In VLC's file menu, open the 'Capture Device...' dialog and enter the video and audio device files. Or from the command line, do: vlc v4l:// :v4l-vdev="/dev/video0" :v4l-adev="/dev/audio2" This will make VLC mirror your webcam. To take stills, simply choose 'Snapshot' in the 'Video' menu. To record the stream, you add a --sout argument, e.g. vlc v4l:// :v4l-vdev="/dev/video0" :v4l-adev="/dev/audio2" --sout "#transcode{vcodec=mp1v,vb=1024,scale=1,acodec=mpga,ab=192,channels=2}:duplicate{dst=std{access=file,mux=mpeg1,dst=/tmp/test.mpg}}" Kein Ton, Optionen habe ich leicht geändert am 25.12.2018 cvlc v4l:// :v4l-vdev="/dev/video0" :v4l-adev="/dev/video0" --sout "#transcode{vcodec=h264,vb=1024,scale=1,acodec=mpga,ab=192,channels=2}:duplicate{dst=std{access=file,mux=mpeg1,dst=/tmp/test.mpg}}" Für Raspberry mit OSMC optimiert cvlc v4l:// :v4l-vdev="/dev/video0" :v4l-adev="/dev/audio2" --sout "#transcode{vcodec=mp4v,vb=1024,scale=1,acodec=mpga,ab=192,channels=2mux=mpeg1,dst=/tmp/test2.mpg}}"