Benutzer-Werkzeuge

Webseiten-Werkzeuge


ffmpeg

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ffmpeg [2021-05-03 16:01] – [videogröße transcodieren (kleiner machen)] fzapffmpeg [2023-12-11 13:49] (aktuell) – Untertitel fzap
Zeile 14: Zeile 14:
   * -c:a audio codec, bei copy wird er übernommen   * -c:a audio codec, bei copy wird er übernommen
  
-==== mit AV1 (2 pass)====+==== HEVC, h265 2pass-Kodierung  ==== 
 + 
 +<code bash>ffmpeg -y -i input.mp4 -c:v libx265 -b:v 2600k -x265-params pass=1 -an -f null /dev/null && \ 
 +ffmpeg -i input.mp4 -c:v libx265 -b:v 2600k -x265-params pass=2 -c:a copy output.mp4 
 +</code> 
 + 
 +==== libaom AV1 2 pass-Kodierung==== 
 + 
 +Leider ist die AV1-Kodierung auf einem Standard-Notebook oder Office-PCs unglaublich langsam und daher unrealistisch (Stand 01/2023).  Ohne effektive GraKa kommt man danicht weiter. 
 <code bash> <code bash>
 ffmpeg -i input.mp4 -c:v libaom-av1 -b:v 2M -pass 1 -an -f null /dev/null && \ ffmpeg -i input.mp4 -c:v libaom-av1 -b:v 2M -pass 1 -an -f null /dev/null && \
Zeile 31: Zeile 40:
   * -pass 1 = erster Durchgang   * -pass 1 = erster Durchgang
   * -pass 2 = zweiter Durchgang   * -pass 2 = zweiter Durchgang
-  * -an = Audio auslassen (im ersten Durchgang)+  * -an = Audio auslassen (im ersten Durchgang) "audio none"
   * -f = format    * -f = format 
   * null /dev/null [Linux] = Null Muxer (ohne Datei-Ausgabe),  null NUL[Windows]   * null /dev/null [Linux] = Null Muxer (ohne Datei-Ausgabe),  null NUL[Windows]
-  * -c:a = audio codec opus+  * -c:a libopus = audio codec opus
  
 ===== video/audio-delay korrigieren ===== ===== video/audio-delay korrigieren =====
 Fall 1: audio beginnt vor video (150 ms = 0.15 s) Fall 1: audio beginnt vor video (150 ms = 0.15 s)
 <code bash> <code bash>
-ffmpeg -i video.mp4 -itsoffset 0.150 -i video.mp4 -vcodec copy -acodec copy -map 0:0 -map 1:1 video_insync.mp4+ffmpeg -i video.mp4 -itsoffset 0.150 -i video.mp4 -c:v copy -c:a copy -map 0:0 -map 1:1 video_insync.mp4
 </code> </code>
 Fall 2: video beginnt vor audio (150 ms = 0.15 s) Fall 2: video beginnt vor audio (150 ms = 0.15 s)
 <code bash> <code bash>
-ffmpeg -i video.mp4 -itsoffset 0.150 -i video.mp4 -vcodec copy -acodec copy -map 0:1 -map 1:0 video_insync.mp4+ffmpeg -i video.mp4 -itsoffset 0.150 -i video.mp4 -c:v copy -c:a copy -map 0:1 -map 1:0 video_insync.mp4
 </code> </code>
  
Zeile 55: Zeile 64:
  
 ===== video schneiden ===== ===== video schneiden =====
-<code bash>ffmpeg -ss [start] -i in.mp4 -[duration] -c copy out.mp4</code>+<code bash>ffmpeg -i in.mp4 -ss [start] -t [dauer] -c copy out.mp4</code> 
 +oder  
 +<code bash>ffmpeg -i in.mp4 -ss [start] -to [bis-zum-zeitpunkt] -c copy out.mp4</code> 
 + 
 +===== audio file einem video hinzufügen ===== 
 + 
 +<code> 
 +ffmpeg -i IN-video-mit-EN-tonspur.mp4 \ 
 +-i audio-DE.m4a \ 
 +-c copy \ 
 +-map 0:v:0 \ 
 +-map 0:a:0 \ 
 +-map 1:a:0 \ 
 +-metadata:s:a:0 language=eng \ 
 +-metadata:s:a:1 language=deu \ 
 +OUT-video-EN-DE.mp4 
 +</code> 
 + 
 +Das ''mapping'': Datei ''0'' ist das Video, Datei ''1'' die deutsche Audiospur und schreibt die Metadaten der Sprache mit hinein, damit man bei switchen im Video die entsprechende Tonspur angezeigt bekommt 
  
  
Zeile 61: Zeile 89:
   * [[https://trac.ffmpeg.org/wiki/Encode/H.264|h264-encoding guide]]   * [[https://trac.ffmpeg.org/wiki/Encode/H.264|h264-encoding guide]]
   * [[https://trac.ffmpeg.org/wiki/Encode/AV1|libaom AV1 Encoding Guide]]   * [[https://trac.ffmpeg.org/wiki/Encode/AV1|libaom AV1 Encoding Guide]]
 +  * [[https://ffmpeg.app|ffmpeg wasm-version for using online]]
  
 ==== videoformate 16:9 ==== ==== videoformate 16:9 ====
Zeile 79: Zeile 108:
                                    320 x 180                                    320 x 180
                                    192 x 108                                    192 x 108
 +</code>
 +
 +===== Transkodieren mit allen Streams =====
 +
 +entscheidend ist ''-map 0'', das alle streams einbindet
 +
 +<code bash>
 +ffmpeg -i input.mkv -c copy -map 0 output.mp4
 +</code>
 +
 +oder mit h264 transcode-Einstellungen
 +
 +<code bash>
 +ffmpeg \
 +-analyzeduration 100M -probesize 100M \
 +-i input.mkv \
 +-map 0 \
 +-codec:v libx264 -crf 21 \
 +-codec:a aac -b:a 384k \
 +-codec:s copy \
 +output.mp4
 +</code>
 +
 +===== Untertitel einbinden =====
 +
 +<code>
 +
 +
 +ffmpeg -i infile.mp4 -i infile.srt -c copy -c:s mov_text outfile.mp4
 +
 </code> </code>
ffmpeg.1620050516.txt.gz · Zuletzt geändert: 2021-05-03 16:01 von fzap