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를 사용하여 통신을 시도했지만 녹색 줄무늬 문제가 발생합니다. 이
의 원인이 무엇 : 내 비디오 인코딩을 할 때
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와 상호 작용하는 방법 다음은?
일반적으로 4 또는 8 또는 다른 유사한 숫자로 나눌 수없는 너비와 관련이 있습니다. 패턴이 규칙적으로 표시되므로 임의 쓰레기가 들어오지 않을 수도 있습니다. 줄 바꿈 규칙으로 인해 줄 바꿈/줄 바꿈 문자가 바뀌거나 변환됩니다. – njahnke
8로 나눌 수있는 너비가 내 문제를 해결했습니다. 정말 고마워. 원한다면 공식적으로 질문에 답할 수 있으며 정확한 답변을 드릴 것입니다. – trianta2