ffmpeg - Simulando el ruido de la televisión
noise tv (3)
He buscado un poco en Google pero nunca pude encontrar una respuesta. ¿Cuál debería ser mi primer enfoque para simular un ruido de video y audio de la TV en la pantalla? Quiero decir, cuando se retira mi antena de TV pero la TV aún está encendida (como en algunas películas de terror japonesas). Puedo usar ffmpeg o cualquier otra técnica, pero ¿cuál es la forma más simple posible de la señal?
Cree ruidos de audio y video, artefactos y errores con ffmpeg
ruido
Usando filtros
El filtro geq
(video "ecuación genérica") (con nullsrc
como su "lienzo en blanco") puede crear ruido de video, y el filtro aevalsrc
puede crear audio de ruido blanco:
ffmpeg -f lavfi -i nullsrc=s=1280x720 -filter_complex /
"geq=random(1)*255:128:128;aevalsrc=-2+random(0)" /
-t 5 output.mkv
Tenga en cuenta que esto creará ruido de vídeo en blanco y negro.
Usando /dev/urandom
Aunque recomiendo usar el filtro geq
, también puede usar /dev/urandom
para generar ruido de audio y video (los usuarios de Windows tendrán que usar el filtro geq
como se muestra arriba). Esta es una pequeña captura de pantalla, pero, por supuesto, el video no será una imagen estática:
ffmpeg -f rawvideo -video_size 1280x720 -pixel_format yuv420p -framerate 25 /
-i /dev/urandom -ar 48000 -ac 2 -f s16le -i /dev/urandom -codec:a copy /
-t 5 output.mkv
Esto creará ruido de vídeo en color. Si solo quieres blanco y negro, puedes agregar el filtro de hue
.
ffmpeg -f rawvideo -video_size 1280x720 -pixel_format yuv420p -framerate 25 /
-i /dev/urandom -ar 48000 -ac 2 -f s16le -i /dev/urandom -codec:a copy /
-t 5 -vf hue=s=0 output.mkv
Agregar ruido visual aleatorio y errores a un video existente
Usando el filtro de flujo de bits de noise
:
Versiones originales y modificadas.
ffmpeg -i input.mp4 -codec:v huffyuv -bsf:v noise -codec:a copy noise.mkv
Según la documentación :
Un filtro de flujo de bits opera en los datos de flujo codificados y realiza modificaciones de nivel de flujo de bits sin realizar la decodificación.
Este filtro de flujo de bits puede aceptar un valor para aumentar o disminuir la cantidad de ruido. Es inverso, por lo que un número más alto es menos ruido y 1 es el número más bajo y, por lo tanto, el más ruidoso. Tendrá que experimentar para ver qué funciona mejor para usted.
Este primer flujo de ejemplo copió el audio y solo modificó el video, pero puede aplicar el filtro tanto al audio como al video eliminando el especificador de flujo:
ffmpeg -i input.mp4 -codec:v huffyuv -c:a pcm_s16le -bsf noise=1000000 noise.mkv
O proporcione valores separados para video y audio:
ffmpeg -i input.mp4 -codec:v huffyuv -c:a pcm_s16le -bsf:v noise=1000000 -bsf:a noise=100 noise.mkv
Esto parece funcionar bien con rawvideo
o huffyuv
para video, y pcm_s16le
para audio, pero recomiendo experimentar. Vea Corrupción frente a la pérdida ( notes ) para ver un video que muestra cómo los diferentes codificadores reaccionan ante la corrupción del ruido.
La salida noise.mkv
está dañada, pero puede volver a codificarla para que funcione en su reproductor:
ffmpeg -i noise.mkv -codec:v libx264 -pix_fmt yuv420p output.mkv
Consulte las guías de codificación H.264 y AAC en la wiki de FFmpeg para obtener más información sobre la codificación.
Efecto macrobloque
Hay varios métodos para hacer esto, pero en este ejemplo se utilizará el filtro de flujo de bits de ruido. Realice la salida a vídeo MPEG-2 en TS ya que será más susceptible al efecto deseado:
ffmpeg -i input.mp4 -bsf:v noise -c:v mpeg2video -q:v 2 -c:a copy macroblock.ts
Aumente el valor de -q:v
a ~ 20 si desea una apariencia más "codificada". Agregue un valor de ruido como se muestra en la sección anterior si desea más ruido.
La salida de macroblock.ts
está dañada, pero puede volver a codificarla para que funcione en su reproductor:
ffmpeg -i macroblock.ts -codec:v libx264 -pix_fmt yuv420p output.mp4
Consulte la sección anterior para obtener más información sobre el filtro de flujo de bits de ruido.
Los resultados pueden variar, por lo que es posible que no obtenga lo que está buscando. Ver el método de editor hexadecimal a continuación.
Usando un editor hexadecimal
Otro método es usar un editor hexadecimal que puede ser más fácil, más controlable y más consistente. Ver:
- Haz un vídeo de Glitch Art: Cómo datamosh, en inglés simple
- Cómo datamosh videos con corrupción de datos
Forzando un formato de píxel
Puede mentirle a ffmpeg y hacer que piense que el submuestreo de espacio de color y croma es diferente y que en realidad está generando efectos extraños y similares a errores.
Versiones originales y modificadas.
Probar su entrada.
ffmpeg -i original.mp4
Tenga en cuenta la velocidad de fotogramas y el tamaño del cuadro de vídeo.
Consulte
ffmpeg -pix_fmts
y elija uno de los formatos disponibles, comoyuv420p16le
.Cree rawvideo y canalícelo a otra instancia
ffmpeg
:ffmpeg -loglevel error -i original.mp4 -f rawvideo - | ffmpeg -y -f rawvideo -framerate 25 -video_size 1280x720 -pixel_format yuv420p16le -i - -pix_fmt yuv420p video.mp4
Los valores
-framerate
y-video_size
se copiaron de la información del archivo de entrada original que se muestra en la salida de la consola del paso 1. Por supuesto, también puede manipularlos para varios efectos.Mux audio si lo desea
ffmpeg -i video.mp4 -i original.mp4 -map 0 -map 1:a -c copy output.mp4
Sí, puedes usar ffmpeg
:
ffmpeg -s 640x480 -t 8 /
-f rawvideo -pix_fmt gray16be -i /dev/urandom /
-f s32le -i /dev/urandom /
output.mp4
es ruido blanco
Crea imágenes en escala de grises con una intensidad aleatoria y audio con muestras completamente aleatorias