【问题标题】:Green Stripe Artifacts When Encoding Video With FFMPEG & Python使用 FFMPEG 和 Python 编码视频时出现绿色条纹伪影
【发布时间】:2014-12-31 18:29:47
【问题描述】:

我正在尝试使用 FFMPEG(2.3.3 版)和 Python 进行编码(VP8 编解码器)和编写视频。但是,在我完成视频编码后,我得到了这些对角绿色条纹伪影,但我找不到原因。

我在内存中有一个 numpy ndarrays 形式的帧序列,我使用一种方法综合生成这些帧用于测试目的:

def _generate_test_images(self, samples=50):
    '''
    Creates an image array gradually changing from black to white
    '''
    pixelValues = np.linspace(0, 255, samples)

    imageList = [np.full((100, 100, 3), pixelValue, dtype=np.uint8)
                 for pixelValue in pixelValues]

    return np.array(imageList)

然后我使用 Python 子进程模块打开一个到 FFMPEG 的管道并写入图像数据。我曾尝试使用 stdin.write 并进行通信,但两者都会产生绿色条纹问题。以下是我与 FFMPEG 交互的方式:

    import subprocess as sp
    params = get_params() #provides info like threads, frame size, etc.

    command = list()
    command.extend(['/opt/ffmpeg/bin/ffmpeg'])
    command.extend(['-y'])
    command.extend(['-f', 'rawvideo'])
    command.extend(['-vcodec', 'rawvideo'])
    command.extend(['-s', params['frameSize']])
    command.extend(['-pix_fmt', 'bgr24'])
    command.extend(['-r', '1'])
    command.extend(['-an'])
    command.extend(['-i', '-'])
    command.extend(['-an'])
    command.extend(['-codec:v', 'libvpx'])
    command.extend(['-quality', 'good'])
    command.extend(['-cpu-used', '0'])
    command.extend(['-b:v', params['bitrate']])
    command.extend(['-qmin', '4'])
    command.extend(['-qmax', '42'])
    command.extend(['-maxrate', '1M'])
    command.extend(['-bufsize', '2M'])
    command.extend(['-threads', params['threads']])
    command.extend(['-f', 'webm'])
    command.extend([params['target']])

    pipe = sp.Popen(command, stdin=sp.PIPE, stdout=sp.PIPE, stderr=sp.PIPE, bufsize=-1)
    pipe.communicate(input=frameArray.tostring())

但是,当我的视频完成编码后,我看到的是:

这是什么原因造成的?

【问题讨论】:

  • 这通常与不能被 4 或 8 或其他类似数字整除的宽度有关。该模式看起来很规则,因此可能没有随机垃圾进入。但您也可以检查一下,例如由于行尾规则,换行符/回车符进入/转换。
  • 宽度可被八整除解决了我的问题。非常感谢。如果你愿意,你可以正式回答这个问题,我会给你正确的答案。

标签: python video numpy ffmpeg libvpx


【解决方案1】:

这通常与不能被 4 或 8 或其他类似数字整除的宽度有关。

【讨论】:

    猜你喜欢
    • 2011-04-15
    • 1970-01-01
    • 2021-04-22
    • 2015-01-04
    • 2013-12-14
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 2019-04-26
    相关资源
    最近更新 更多