Симуляция шума телевизора

Я немного погуглил, но так и не смог найти ответ. Каким должен быть мой первый подход к моделированию видео и звукового шума от телевизора на экране? Я имею в виду, когда моя телевизионная антенна снята, но телевизор все еще включен (как иногда показывают в японских фильмах ужасов). Я могу использовать ffmpeg или любую другую технику, но какая самая простая форма сигнала?

Ответ 1

Как создать видео и аудио шум с помощью ffmpeg

Используя /dev/urandom

Вы можете использовать /dev/urandom для генерации видео и звукового шума (пользователям Windows придется использовать фильтр geq, как показано ниже). Это небольшой screeenshot, но, конечно, видео не будет статическим изображением:

colored noise

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

Это создаст шум цветового видео. Если вы просто хотите черно-белое, вы можете добавить фильтр hue.

mono noise

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

Использование источника nullsrc

В соответствии с документацией:

Источник nullsrc возвращает необработанные видеокадры. Это в основном полезно использовать в средствах анализа/отладки или в качестве источника для фильтров, которые игнорируют входные данные.

В основном это означает, что он полезен как "пустой холст" для других фильтров, таких как фон, который будет закрыт при размещении двух видеороликов бок о бок, но при использовании в одиночку он может создавать нечетные несколько случайных ( но иногда скучные):

nullsrc

ffmpeg -f lavfi -i nullsrc=s=1280x720 -t 60 output.mkv

Использование фильтров

В качестве альтернативы, фильтр geq (видео "общее уравнение" ) (с nullsrc как "пустой холст" ) может создавать видеошумы, подобные приведенным выше примерам, а aevalsrc фильтр может создавать звуки белого шума:

mono noise

ffmpeg -f lavfi -i nullsrc=s=1280x720 -filter_complex \
"geq=random(1)*255:128:128;aevalsrc=-2+random(0)" \
-t 5 output.mkv

Обратите внимание, что это создаст черно-белый видеосигнал.


Добавление случайного визуального шума и ошибок к существующему видео

Используя noise битовый поток:

original imagemessed up with noise bsf
Оригинальные и прикрученные изображения. Результат очень динамичный, поэтому одно изображение не полностью захватывает эффект.

ffmpeg -i input.mp4 -codec:v huffyuv -bsf:v noise -codec:a copy noise.mkv

В соответствии с документацией:

Фильтр битового потока работает с данными кодированного потока и выполняет не изменяя декодирование.

Этот фильтр битового потока может принимать значение для увеличения или уменьшения количества шума. Он обратный, поэтому большее число меньше шума, а 1 - самое низкое число и, следовательно, самый шум. Вам нужно будет поэкспериментировать, чтобы увидеть, что лучше всего подходит вам.

Этот первый пример stream копировал аудио и только исказил видео, но вы можете применить фильтр к аудио и видео, удалив поток спецификатор:

ffmpeg -i input.mp4 -codec:v huffyuv -c:a pcm_s16le -bsf noise=1000000 noise.mkv

Или укажите отдельные значения для видео и аудио:

ffmpeg -i input.mp4 -codec:v huffyuv -c:a pcm_s16le -bsf:v noise=1000000 -bsf:a noise=100 noise.mkv

Это похоже на работу с rawvideo или huffyuv для видео и pcm_s16le для аудио, но я рекомендую экспериментировать. См. lossless vs corp (примечания) для видео, показывающего, как разные датчики реагируют на шум.

Затем вы можете перекодировать это в более переносимый или общий формат:

ffmpeg -i noise.mkv -codec:v libx264 -pix_fmt yuv420p output.mkv

Смотрите H.264 и AAC руководства по кодированию в FFmpeg Wiki для получения дополнительной информации о кодировании.

Формирование формата пикселя

Вы можете лежать в ffmpeg и заставить его думать, что цветовое пространство и передислокация цветности различны, что на самом деле приводит к странным, подобным ошибкам эффектам.

original imagelying to ffmpeg
Оригинальные и прикрученные изображения. Результат может быть очень динамичным, поэтому одно изображение не полностью захватывает эффект.

  • Сделайте свой вход.

    ffmpeg -i original.mp4
    

    Обратите внимание на частоту кадров и размер видеокадра.

  • Обратитесь к ffmpeg -pix_fmts и выберите один из доступных форматов, например yuv420p16le.

  • Создайте rawvideo и подключите его к другому экземпляру 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
    

    Значения -framerate и -video_size были скопированы из исходной информации входного файла, показанной на выходе консоли на шаге 1. Конечно, вы также можете манипулировать ими для различных эффектов.

  • Mux audio при желании

    ffmpeg -i video.mp4 -i original.mp4 -map 0 -map 1:a -c copy output.mp4
    

Ответ 2

да, вы можете использовать ffmpeg:

ffmpeg -s 640x480 -t 8 \
-f rawvideo -pix_fmt gray16be -i /dev/urandom \
-f s32le -i /dev/urandom \
output.mp4

Ответ 3

белый шум

создает изображения в оттенках серого со случайной интенсивностью и звуком с полностью случайными выборками