我用谷歌搜索了一下,但从来没有找到答案。在屏幕上模拟来自电视的视频和音频噪音的第一种方法应该是什么?我的意思是,当我的电视天线被移除但电视仍然打开时(就像他们有时在日本恐怖电影中展示的那样)。我可以使用 ffmpeg 或任何其他技术,但最简单的信号形式是什么?
最佳答案
使用 ffmpeg
创建视频和音频噪音、伪影和错误
噪音
使用过滤器
geq
(视频“通用方程”)过滤器(以 nullsrc
作为其“空白 Canvas ”)可以产生视频噪声,而 aevalsrc
过滤器可以创建白噪声音频:
ffmpeg -f lavfi -i nullsrc=s=1280x720 -filter_complex \
"geq=random(1)*255:128:128;aevalsrc=-2+random(0)" \
-t 5 output.mkv
请注意,这会产生黑白视频噪声。
使用
/dev/urandom
虽然我推荐使用
geq
您也可以使用过滤器/dev/urandom
生成视频和音频噪音(Windows 用户必须使用 geq
过滤器,如上所示)。这是一个小屏幕截图,但当然视频不会是静态图像: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
向现有视频添加随机视觉噪音和错误
使用
noise
bitstream filter :原始版本和修改版本。
ffmpeg -i input.mp4 -codec:v huffyuv -bsf:v noise -codec:a copy noise.mkv
根据documentation :
A bitstream filter operates on the encoded stream data, and performs bitstream level modifications without performing decoding.
这个比特流过滤器可以接受一个值来增加或减少噪声量。它是相反的,因此数字越大噪音越小,而 1 是最小的数字,因此噪音最大。您需要进行试验,看看哪种方法最适合您。
第一个例子stream copied音频并且只对视频产生故障,但您可以通过删除流说明符将过滤器应用于音频和视频:
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 corruption (notes) 的视频展示了不同的编码器如何对噪声损坏使用react。输出
noise.mkv
已损坏,但您可以对其重新编码,以便在您的播放器中正常工作:ffmpeg -i noise.mkv -codec:v libx264 -pix_fmt yuv420p output.mkv
见H.264和 AAC FFmpeg Wiki 上的编码指南以获取更多编码信息。
宏 block 效果
有几种方法可以做到这一点,但在本例中将使用噪声比特流过滤器。在 TS 中输出到 MPEG-2 视频,因为这将更容易受到预期效果的影响:
ffmpeg -i input.mp4 -bsf:v noise -c:v mpeg2video -q:v 2 -c:a copy macroblock.ts
增加
-q:v
如果您想要更“编码”的外观,则值约为 20。如果您想要更多噪音,请添加如上节所示的噪音值。输出
macroblock.ts
已损坏,但您可以对其重新编码,以便在您的播放器中正常工作:ffmpeg -i macroblock.ts -codec:v libx264 -pix_fmt yuv420p output.mp4
有关噪声比特流过滤器的更多信息,请参阅上面的部分。
结果可能会有所不同,因此您可能无法获得所需的内容。 请参阅下面的十六进制编辑器方法。
使用十六进制编辑器
另一种方法是使用十六进制编辑器,您可能会发现它更容易、更可控且更一致。看:
强制像素格式
您可以对 ffmpeg 撒谎,让它认为色彩空间和色度子采样与实际上会导致奇怪的、类似错误的效果不同。
原始版本和修改版本。
ffmpeg -i original.mp4
注意帧速率和视频帧大小。
ffmpeg -pix_fmts
并选择其中一种可用格式,例如 yuv420p16le
. 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 的控制台输出中显示的原始输入文件信息中复制的。当然,您也可以操纵这些以获得各种效果。 ffmpeg -i video.mp4 -i original.mp4 -map 0 -map 1:a -c copy output.mp4
关于ffmpeg - 模拟电视噪音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15792105/