informatica:linux:edicion_de_video:ffmpeg
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| informatica:linux:edicion_de_video:ffmpeg [2023/10/22 20:45] – jose | informatica:linux:edicion_de_video:ffmpeg [2026/06/29 08:15] (current) – [Sacar duración] jose | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | **Escalar vídeo:**\\ | + | ====== |
| + | Reducir tamaño vídeo para whatsapp | ||
| + | < | ||
| + | ffmpeg -i vermicompostera1.mp4 | ||
| + | -vf " | ||
| + | -vcodec libx264 -crf 28 -preset medium \ | ||
| + | -acodec aac -b:a 128k \ | ||
| + | vermicompostera.mp4 | ||
| + | </ | ||
| + | |||
| ffmpeg -i original.mp4 -vf scale=800: | ffmpeg -i original.mp4 -vf scale=800: | ||
| Si queremos fijar uno y que el otro lo calcule solo: | Si queremos fijar uno y que el otro lo calcule solo: | ||
| Line 8: | Line 18: | ||
| ffmpeg -i input.mp4 -vf " | ffmpeg -i input.mp4 -vf " | ||
| + | Extraer 250 frames de un vídeo | ||
| + | < | ||
| + | #!/bin/bash | ||
| + | video=$1 | ||
| + | n=`ffprobe -v error -select_streams v:0 -show_entries stream=nb_frames -of default=nokey=1: | ||
| + | factor=$(echo " | ||
| + | echo $factor | ||
| + | for ((i=1; i<=249; i++)); do | ||
| + | frame_decimal=$(echo "$i * $factor" | ||
| + | frame=$(echo " | ||
| + | fitxer=`printf " | ||
| + | ffmpeg -i $video -vf " | ||
| + | done | ||
| + | ffmpeg -i ${video} -vf " | ||
| + | |||
| + | </ | ||
| + | |||
| + | ====== Cortar vídeo ====== | ||
| + | Minuto y segundo de inicio y de fin. Corta del 0:15 al 0:25 total 10 segundos de vídeo | ||
| + | ffmpeg -i original.mp4 -ss 00:00:15 -to 00:25 cortado.mp4 | ||
| + | | ||
| + | ====== Normalizar audio ====== | ||
| + | Detectar volumen: | ||
| + | ffmpeg -i entrada.wav -af volumedetect -f null - | ||
| + | |||
| + | Salida: | ||
| + | max_volume: -12.3 dB | ||
| + | mean_volume: | ||
| + | |||
| + | Como el máximo está a -12.3 dB, puedes subir 11.3 dB para dejar 1 dB de margen: | ||
| + | ffmpeg -i entrada.wav -af " | ||
| + | |||
| + | CHAGPT: | ||
| + | < | ||
| + | Normalización automática (la más cómoda) | ||
| + | |||
| + | FFmpeg incorpora el filtro loudnorm. | ||
| + | |||
| + | ffmpeg -i entrada.wav -af loudnorm salida.wav | ||
| + | |||
| + | O indicando una sonoridad concreta: | ||
| + | |||
| + | ffmpeg -i entrada.wav -af loudnorm=I=-16: | ||
| + | I=-16 → volumen objetivo. | ||
| + | TP=-1.5 → pico máximo. | ||
| + | LRA=11 → rango dinámico. | ||
| + | 3. Normalizar dinámicamente (muy recomendable) | ||
| + | |||
| + | Existe el filtro dynaudnorm, que va ajustando el nivel a lo largo del audio. | ||
| + | |||
| + | ffmpeg -i entrada.wav -af dynaudnorm salida.wav | ||
| + | |||
| + | Este suele dar una sensación de mayor volumen sin necesidad de comprimir tanto. | ||
| + | |||
| + | Puedes hacerlo un poco más suave: | ||
| + | |||
| + | ffmpeg -i entrada.wav -af dynaudnorm=f=150: | ||
| + | 4. Hacer que la onda " | ||
| + | |||
| + | Una cadena bastante efectiva es: | ||
| + | |||
| + | ffmpeg -i entrada.wav -af " | ||
| + | |||
| + | O incluso añadir un limitador al final: | ||
| + | |||
| + | ffmpeg -i entrada.wav -af " | ||
| + | ¿Cuál te recomiendo? | ||
| + | Solo subir el volumen sin modificar la dinámica: volume (tras medir con volumedetect). | ||
| + | Que se escuche más fuerte y uniforme: dynaudnorm. | ||
| + | Calidad tipo radio/ | ||
| + | Que la forma de onda quede muy " | ||
| + | |||
| + | Si el audio es una grabación de voz, mi recomendación sería dynaudnorm, ya que suele ofrecer un resultado muy natural sin requerir una configuración compleja. | ||
| + | </ | ||
| + | |||
| + | ====== Sacar duración ====== | ||
| + | Para sacar la duración sumada de los wavs de un directorio | ||
| + | < | ||
| + | for f in *.wav; do | ||
| + | ffmpeg -i " | ||
| + | sed -E ' | ||
| + | done | paste -sd+ - | bc | ||
| + | </ | ||
| + | |||
| + | Grabando duraciones individuales en fichero: | ||
| + | < | ||
| + | echo " | ||
| + | |||
| + | for f in *.wav; do | ||
| + | dur=$(ffmpeg -i " | ||
| + | sed -E ' | ||
| + | |||
| + | read h m s <<< | ||
| + | |||
| + | segundos=$(awk "BEGIN {printf \" | ||
| + | |||
| + | echo " | ||
| + | done | ||
| + | </ | ||
informatica/linux/edicion_de_video/ffmpeg.1698007547.txt.gz · Last modified: by jose
