模拟电视噪音(Simulating TV noise)

2019-08-19 07:32发布

我用Google搜索一下,但从来没有能够找到答案。 什么应该是我第一次模拟屏幕上,从电视视频和音频噪声的方法呢? 我的意思是,当我的电视天线被删除,但电视仍是上(就像他们在日本恐怖电影表现有时)。 我可以使用的ffmpeg或任何其他的技术,但究竟是信号的最简单的可能形式?

Answer 1:

创建视频和音频噪声,文物,和错误ffmpeg

噪声

使用过滤器

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

请注意,这将创建黑白视频噪音。

使用/dev/urandom

虽然我建议使用geq过滤器,你也可以使用/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

添加随机视觉噪声和错误,以现有的视频

使用noise 流过滤器 :

原始和修改后的版本。

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

根据该文件 :

比特流滤波器操作上的编码流数据,并且在不进行解码的位流进行水平修改。

这个比特流过滤器能够接受的值,以增加或减少的噪声量。 它的逆,所以更高的数目是较少的噪声,和1是最低数量,并因此最噪声。 您将需要通过实验来看看什么最适合你。

第一个例子流复制音频,只有glitched视频,但你可以通过删除流符过滤器适用于音频和视频:

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

这似乎是一道很好地工作rawvideohuffyuv视频,并pcm_s16le音频,但我建议尝试。 见无损VS腐败 ( 注释用于显示不同的编码器如何应对噪声干扰视频)。

输出noise.mkv损坏,但你可以重新编码它,所以它会在你的播放器的工作:

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

见H.264和AAC上FFmpeg的维基编码指南的详细编码信息。

聚积效应

有几种方法可以做到这一点,但在这个例子中,噪声过滤器流将使用。 输出到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

请参阅上面一节中关于噪声滤波器流的详细信息。

结果可能会有所不同,所以你可能不明白你在找什么。 见下面十六进制编辑器的方法。

使用十六进制编辑器

另一种方法是使用十六进制编辑器,你可能会发现更容易和更可控和更一致。 看到:

  • 进行视频毛刺艺术:如何Datamosh,用简单的英语
  • 如何datamosh数据损坏的视频

强制的像素格式

你可以骗的ffmpeg,并使其认为使用的色彩和色度抽样是不同的,它实际上是导致奇怪,误差般的效果。

原始和修改后的版本。

  1. 探测你的输入。

     ffmpeg -i original.mp4 

    注意帧速率和视频帧大小。

  2. 请参阅ffmpeg -pix_fmts并选择可用的格式,如一个yuv420p16le

  3. 创建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中的控制台输出当然也可以操作这些用于各种效果中所示的原始输入文件信息复制。

  4. 如果需要复用的音频

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


Answer 2:

是的,你可以使用ffmpeg

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


Answer 3:

只是为了比较,我测试了3种不同的方法来产生伪随机数。 正如你所看到的速度是非常不同的。 对于高badwidth我建议第一个解决方案。 你可以在这里找到源: https://github.com/Zibri/rand

顺便说一句,源可以进一步优化,以获得以往更好的速度。

$ ./rand|pv -S -s 2G >/dev/null
2,00GiB 0:00:01 [1,58GiB/s] [========================================================================>] 100%            

$ cat /dev/urandom|pv -S -s 2G >/dev/null
2,00GiB 0:00:11 [ 178MiB/s] [========================================================================>] 100%            

$ dd if=/dev/zero bs=1k count=2M 2>/dev/null | openssl enc -rc4-40 -pass pass:weak |pv -S -s 2G >/dev/null
2,00GiB 0:00:04 [ 413MiB/s] [========================================================================>] 100%            


Answer 4:

它的白噪声

创建在灰度图像与随机强度和音频与完全随机样品



文章来源: Simulating TV noise