2014-11-04 3 views
1

FFMPEG (버전 2.3.3) 및 Python을 사용하여 비디오를 인코딩하고 (VP8 코덱) 인코딩하려고합니다. 그러나 비디오 인코딩을 끝내고 왜 그런 대각선 녹색 줄무늬 인공물을 얻었는지 이유를 찾을 수 없습니다.FFMPEG 및 Python으로 비디오를 인코딩 할 때 녹색 줄무늬가 발생했습니다.

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) 

난 후 FFMPEG에 관을 열도록 파이썬 서브 프로세스 모듈을 사용

가 나는 방법을 이용하여 테스트 용 합성 생성 NumPy와 ndarrays의 형태로 메모리에있는 프레임의 시퀀스를 가지고 화상 데이터를 기입한다. stdin.write를 사용하여 통신을 시도했지만 녹색 줄무늬 문제가 발생합니다. 이

Image with green stripe artifacts

의 원인이 무엇 : 내 비디오 인코딩을 할 때

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()) 

그러나, 이것은 내가 볼 것입니다 : 내가 FFMPEG와 상호 작용하는 방법 다음은?

+1

일반적으로 4 또는 8 또는 다른 유사한 숫자로 나눌 수없는 너비와 관련이 있습니다. 패턴이 규칙적으로 표시되므로 임의 쓰레기가 들어오지 않을 수도 있습니다. 줄 바꿈 규칙으로 인해 줄 바꿈/줄 바꿈 문자가 바뀌거나 변환됩니다. – njahnke

+0

8로 나눌 수있는 너비가 내 문제를 해결했습니다. 정말 고마워. 원한다면 공식적으로 질문에 답할 수 있으며 정확한 답변을 드릴 것입니다. – trianta2

답변

3

이것은 일반적으로 4 또는 8로 나눌 수없는 너비 또는 다른 유사한 숫자와 관련이 있습니다.