Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| howto:ffmpeg [2020/12/06 17:22] – ffmpeg renamed to howto:ffmpeg andi | howto:ffmpeg [2023/06/11 00:58] (current) – [audio channel mapping / repair] andi | ||
|---|---|---|---|
| Line 36: | Line 36: | ||
| make install </ | make install </ | ||
| - | == audio channel mapping doku | + | == HD-Master mit Loudnorm |
| - | + | ||
| - | https:// | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | == silent fix | + | |
| < | < | ||
| - | ffmpeg -ar 48000 -acodec pcm_s16le | + | ffmpeg -y \ |
| - | </ | + | -i / |
| - | + | -ss 1858.48 -t 3550.88 | |
| - | Oder " | + | -i /video/ |
| + | -filter_complex ' | ||
| + | [0:a:0] loudnorm=i=-16: | ||
| + | [1:a:0] loudnorm=i=-16: | ||
| + | [2:a:0] loudnorm=i=-16: | ||
| - | < | + | [0:v:0] [norm-0-0] [1:v:0] [norm-1-0] [2:v:0] [norm-2-0] concat=n=3:v=1:a=1 [vd] [audio0_mix]; |
| - | ffmpeg | + | [vd] yadif=mode=0:parity=0, hqdn3d |
| + | ' -analyzeduration 20000000/ | ||
| + | -map '[v]' | ||
| + | -map '[audio0_mix]' | ||
| + | -aspect 16:9 -movflags faststart -f mp4 / | ||
| </ | </ | ||
| - | $audiocodec z.B. mp2 bei Intros | ||
| - | == metadata fix | ||
| - | === map metadata and fix spezific entry | + | === HD-Master mit Loudnorm, Pause rausschneiden |
| + | - Zeitstempel = *Sekunden.Frames* | ||
| + | - -t gibt Duration an, nicht Ende! | ||
| < | < | ||
| - | ffmpeg -i br0ken_licence/$file \ | + | ffmpeg |
| - | -map_metadata 0 \ | + | -i /video/ |
| - | -metadata: | + | -ss 1858.48 -t 3550.88 -i / |
| - | -c:a copy $file | + | -ss 1858.48 -t 3550.88 -i /video/fuse//XXX/YYY/ZZZ/uncut.ts |
| - | </ | + | -i /video/intros/ |
| + | -filter_complex ' | ||
| + | | ||
| + | [1:a:0] loudnorm=i=-16: | ||
| + | | ||
| + | [3:a:0] loudnorm=i=-16: | ||
| - | === copy metadata from another file | + | [0:v:0] [norm-0-0] [1:v:0] [norm-1-0] [2:v:0] [norm-2-0] [3:v:0] [norm-3-0] concat=n=4:v=1:a=1 [vd] [audio0_mix]; |
| - | + | [vd] yadif=mode=0: | |
| - | < | + | ' -analyzeduration 20000000/ |
| - | ffmpeg | + | -map ' |
| + | -map ' | ||
| + | -aspect 16:9 -movflags faststart -f mp4 / | ||
| </ | </ | ||
| - | == one input, multiple format outputs | ||
| - | |||
| - | 1. h264/aac flv rtmp output | ||
| - | 2. theora/ | ||
| - | |||
| - | < | ||
| - | ffmpeg -re -i 29c3-5266-de-en-proximax_telex_flashproxy_h264.mp4 -threads 0 -pix_fmt yuv420p -profile:v baseline -preset fast -tune zerolatency -c:v libx264 -strict -2 -c:a aac \ | ||
| - | -f flv rtmp:// | ||
| - | -map 0 -c:v libtheora -c:a libvorbis -f ogg - | oggfwd localhost 8000 … | ||
| - | </ | ||
| - | |||
| - | == Audiospur via Backup Audioaufnahme reparieren und in MP4 packen | ||
| - | |||
| - | Sprache deu-backup im Tracker anlegen. | ||
| - | Nochmal neu rausrendern lassen. | ||
| - | |||
| - | einzelne Audiopuren vor oder nach Auphnic so umwandeln das Audio-Schnitt Tool wie z.B. Reaper was damit anfangen kann: | ||
| - | |||
| - | ffmpeg -i 5100-hd-audio2-auphonic.m4a -vn -c:a copy -bsf:a aac_adtstoasc 5100-hd-audio2-auphonic-echt.m4a | ||
| - | ffmpeg -i 5100-hd-audio2-auphonic.m4a -vn -c:a copy -bsf:a aac_adtstoasc 5100-hd-audio2-auphonic-echt.m4a | ||
| - | |||
| - | |||
| - | Fertige Audiospur in Reaper rausrechnen, | ||
| - | |||
| - | Audiospur wieder in Vortrag MP4 einpacken: | ||
| - | |||
| - | < | ||
| - | ffmpeg -threads 0 -i / | ||
| - | </ | ||
| - | |||
| - | Alte Version | ||
| - | < | ||
| - | ffmpeg -threads 0 -i 5100-hd.mp4 | ||
| - | </ | ||
| - | |||
| - | |||
| - | Anmerkung: Geht auch mit MTS Datei (Transportstream mit H264 Video) der so aus der Consumer-Kamera auf die SD Karte fällt. | ||
| - | |||
| - | Siehe auch: https:// | ||
| - | == Audiospur(en) und Videospur vertauscht | ||
| - | < | ||
| - | ffmpeg -i 5115-hd-broken.mp4 -map 0:v -map 0:a -c copy -map_metadata 0 5115-hd.mp4 | ||
| - | </ | ||
| - | |||
| - | == Translated Transcoding | ||
| - | |||
| - | < | ||
| - | ffmpeg -y -i rtmp:// | ||
| - | </ | ||
| == encoding snippets | == encoding snippets | ||
| Line 133: | Line 93: | ||
| -metadata title="< | -metadata title="< | ||
| -metadata album="< | -metadata album="< | ||
| - | -metadata copyright=" | + | -metadata copyright=" |
| < | < | ||
| </ | </ | ||
| Line 146: | Line 106: | ||
| -c:a libfdk_aac -b:a 192k -aspect 16:9 -metadata title="< | -c:a libfdk_aac -b:a 192k -aspect 16:9 -metadata title="< | ||
| -metadata album="< | -metadata album="< | ||
| - | -metadata copyright=" | + | -metadata copyright=" |
| -f mp4 -movflags faststart < | -f mp4 -movflags faststart < | ||
| </ | </ | ||
| Line 198: | Line 158: | ||
| -c:a mp3 -b:a 32k -ar:a 22050 -f mp4 -movflags faststart \ | -c:a mp3 -b:a 32k -ar:a 22050 -f mp4 -movflags faststart \ | ||
| / | / | ||
| + | </ | ||
| + | |||
| + | |||
| + | == one input, multiple format outputs | ||
| + | |||
| + | 1. h264/aac flv rtmp output | ||
| + | 2. theora/ | ||
| + | |||
| + | < | ||
| + | ffmpeg -re -i 29c3-5266-de-en-proximax_telex_flashproxy_h264.mp4 -threads 0 -pix_fmt yuv420p -profile:v baseline -preset fast -tune zerolatency -c:v libx264 -strict -2 -c:a aac \ | ||
| + | -f flv rtmp:// | ||
| + | -map 0 -c:v libtheora -c:a libvorbis -f ogg - | oggfwd localhost 8000 … | ||
| + | </ | ||
| + | |||
| + | |||
| + | == Translated Transcoding | ||
| + | |||
| + | < | ||
| + | ffmpeg -y -i rtmp:// | ||
| + | </ | ||
| + | |||
| + | |||
| + | == Audiospur via Backup Audioaufnahme reparieren und in MP4 packen | ||
| + | |||
| + | Sprache deu-backup im Tracker anlegen. | ||
| + | Nochmal neu rausrendern lassen. | ||
| + | |||
| + | einzelne Audiopuren vor oder nach Auphnic so umwandeln das Audio-Schnitt Tool wie z.B. Reaper was damit anfangen kann: | ||
| + | |||
| + | ffmpeg -i 5100-hd-audio2-auphonic.m4a -vn -c:a copy -bsf:a aac_adtstoasc 5100-hd-audio2-auphonic-echt.m4a | ||
| + | ffmpeg -i 5100-hd-audio2-auphonic.m4a -vn -c:a copy -bsf:a aac_adtstoasc 5100-hd-audio2-auphonic-echt.m4a | ||
| + | |||
| + | |||
| + | Fertige Audiospur in Reaper rausrechnen, | ||
| + | |||
| + | Audiospur wieder in Vortrag MP4 einpacken: | ||
| + | |||
| + | < | ||
| + | ffmpeg -threads 0 -i / | ||
| + | </ | ||
| + | |||
| + | Alte Version | ||
| + | < | ||
| + | ffmpeg -threads 0 -i 5100-hd.mp4 | ||
| + | </ | ||
| + | |||
| + | |||
| + | Anmerkung: Geht auch mit MTS Datei (Transportstream mit H264 Video) der so aus der Consumer-Kamera auf die SD Karte fällt. | ||
| + | |||
| + | Siehe auch: https:// | ||
| + | |||
| + | |||
| + | == Audiospur(en) und Videospur vertauscht | ||
| + | < | ||
| + | ffmpeg -i 5115-hd-broken.mp4 -map 0:v -map 0:a -c copy -map_metadata 0 5115-hd.mp4 | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | == audio channel mapping / repair | ||
| + | |||
| + | https:// | ||
| + | |||
| + | |||
| + | === mono mixdown | ||
| + | |||
| + | ffmpeg -i 27-hd-orig.mp4 -codec:v copy -map_metadata 0 -ac 1 -ab 128k 27-hd.mp4 | ||
| + | |||
| + | |||
| + | === silent fix | ||
| + | < | ||
| + | ffmpeg -ar 48000 -acodec pcm_s16le -f s16le -ac 2 -i <( dd if=/ | ||
| + | </ | ||
| + | |||
| + | Oder " | ||
| + | |||
| + | < | ||
| + | ffmpeg -i not_silent/ | ||
| + | </ | ||
| + | $audiocodec z.B. mp2 bei Intros | ||
| + | |||
| + | |||
| + | == metadata fix | ||
| + | |||
| + | === map metadata and fix specific entry | ||
| + | |||
| + | < | ||
| + | ffmpeg -i br0ken_licence/ | ||
| + | -map_metadata 0 \ | ||
| + | -metadata: | ||
| + | -c:a copy $file | ||
| + | </ | ||
| + | |||
| + | === copy metadata from another file | ||
| + | |||
| + | < | ||
| + | ffmpeg -i $metadata_source -i $video_source -map 1 -c copy -map_metadata 0 $output_file | ||
| </ | </ | ||
| Line 214: | Line 272: | ||
| " -map ' | " -map ' | ||
| | | ||
| - | === HD-Master mit Loudnorm | ||
| - | < | ||
| - | ffmpeg -y \ | ||
| - | -i / | ||
| - | -ss 1858.48 -t 3550.88 -i / | ||
| - | -i / | ||
| - | -filter_complex ' | ||
| - | [0:a:0] loudnorm=i=-16: | ||
| - | [1:a:0] loudnorm=i=-16: | ||
| - | [2:a:0] loudnorm=i=-16: | ||
| - | [0:v:0] [norm-0-0] [1:v:0] [norm-1-0] [2:v:0] [norm-2-0] concat=n=3: | ||
| - | [vd] yadif=mode=0: | ||
| - | ' -analyzeduration 20000000/ | ||
| - | -map ' | ||
| - | -map ' | ||
| - | -aspect 16:9 -movflags faststart -f mp4 / | ||
| - | </ | ||
| - | |||
| - | === HD-Master mit Loudnorm, Pause rausschneiden | ||
| - | - Zeitstempel = *Sekunden.Frames* | ||
| - | - -t gibt Duration an, nicht Ende! | ||
| - | |||
| - | < | ||
| - | ffmpeg -y \ | ||
| - | -i / | ||
| - | -ss 1858.48 -t 3550.88 -i / | ||
| - | -ss 1858.48 -t 3550.88 -i / | ||
| - | -i / | ||
| - | -filter_complex ' | ||
| - | [0:a:0] loudnorm=i=-16: | ||
| - | [1:a:0] loudnorm=i=-16: | ||
| - | [2:a:0] loudnorm=i=-16: | ||
| - | [3:a:0] loudnorm=i=-16: | ||
| - | |||
| - | [0:v:0] [norm-0-0] [1:v:0] [norm-1-0] [2:v:0] [norm-2-0] [3:v:0] [norm-3-0] concat=n=4: | ||
| - | [vd] yadif=mode=0: | ||
| - | ' -analyzeduration 20000000/ | ||
| - | -map ' | ||
| - | -map ' | ||
| - | -aspect 16:9 -movflags faststart -f mp4 / | ||
| - | </ | ||
| === Icecast-Audio mit ffmpeg | === Icecast-Audio mit ffmpeg | ||