ffmpeg noise tv

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:

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.

  1. Probar su entrada.

    ffmpeg -i original.mp4

    Tenga en cuenta la velocidad de fotogramas y el tamaño del cuadro de vídeo.

  2. Consulte ffmpeg -pix_fmts y elija uno de los formatos disponibles, como yuv420p16le .

  3. 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.

  4. 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