Я немного погуглил, но так и не смог найти ответ. Каким должен быть мой первый подход к моделированию видео и звукового шума от телевизора на экране? Я имею в виду, когда моя телевизионная антенна снята, но телевизор все еще включен (как иногда показывают в японских фильмах ужасов). Я могу использовать ffmpeg или любую другую технику, но какая самая простая форма сигнала?
Симуляция шума телевизора
Ответ 1
Как создать видео и аудио шум с помощью ffmpeg
Используя /dev/urandom
Вы можете использовать /dev/urandom
для генерации видео и звукового шума (пользователям Windows придется использовать фильтр geq
, как показано ниже). Это небольшой screeenshot, но, конечно, видео не будет статическим изображением:
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
.
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 возвращает необработанные видеокадры. Это в основном полезно использовать в средствах анализа/отладки или в качестве источника для фильтров, которые игнорируют входные данные.
В основном это означает, что он полезен как "пустой холст" для других фильтров, таких как фон, который будет закрыт при размещении двух видеороликов бок о бок, но при использовании в одиночку он может создавать нечетные несколько случайных ( но иногда скучные):
ffmpeg -f lavfi -i nullsrc=s=1280x720 -t 60 output.mkv
Использование фильтров
В качестве альтернативы, фильтр geq
(видео "общее уравнение" ) (с nullsrc
как "пустой холст" ) может создавать видеошумы, подобные приведенным выше примерам, а aevalsrc
фильтр может создавать звуки белого шума:
ffmpeg -f lavfi -i nullsrc=s=1280x720 -filter_complex \
"geq=random(1)*255:128:128;aevalsrc=-2+random(0)" \
-t 5 output.mkv
Обратите внимание, что это создаст черно-белый видеосигнал.
Добавление случайного визуального шума и ошибок к существующему видео
Используя noise
битовый поток:
Оригинальные и прикрученные изображения. Результат очень динамичный, поэтому одно изображение не полностью захватывает эффект.
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 и заставить его думать, что цветовое пространство и передислокация цветности различны, что на самом деле приводит к странным, подобным ошибкам эффектам.
Оригинальные и прикрученные изображения. Результат может быть очень динамичным, поэтому одно изображение не полностью захватывает эффект.
-
Сделайте свой вход.
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
белый шум
создает изображения в оттенках серого со случайной интенсивностью и звуком с полностью случайными выборками