GN⁺: 실수로 사용한 Blender VSE
(aras-p.info)Blender VSE에 우연히 기여하다
- 두 달 전 Blender의 VideoSequence Editor(VSE)에 조금의 코드를 기여하기 시작함.
- Blender에 비디오 편집 도구가 있다는 사실을 알고 있었음? 나도 몰랐음.
- 비디오 편집, 타임라인, 시퀀서, 색보정, ffmpeg, 오디오 믹싱 등에 대해 아는 것이 전혀 없음에도 VSE를 다루기 시작함.
VSE 작업을 어떻게 '우연히' 시작하게 되었나?
- Unity의 Unite 2023 컨퍼런스를 암스테르담에서 확인하고 친구들을 방문하기로 결정함.
- 컨퍼런스 후 반나절 동안 Blender 본사를 방문했고, Francesco와 Sergey가 VSE에 기여할 의향이 있는지 물어봄.
- 그렇게 VSE 작업을 시작하게 됨.
타임라인 그리기 개선
- VSE 타임라인은 이미지 하단에 위치하며, 한 번에 약 3000개의 "스트립"이 보임.
- 타임라인을 스크롤하고 이동하는 것은 사용자 인터페이스를 약 15프레임으로 업데이트함.
- 이제 60프레임 이상으로 업데이트됨(#115311).
스코프
- VSE는 이미지 히스토그램, 웨이브폼, 벡터스코프와 같은 전형적인 "스코프"를 표시할 수 있음.
- 히스토그램, 웨이브폼, 벡터스코프의 개선 사항이 있음.
ffmpeg 부분
- Blender는 주로 ffmpeg 라이브러리를 사용하여 오디오/비디오 읽기 및 쓰기에 사용함.
-
libswscale
을 사용하여 영화 프레임 RGB↔YUV 변환을 수행함. - 이제 멀티스레딩을 활용하여 RGB→YUV 변환 단계를 더 빠르게 처리함(#116008).
오디오 리샘플링
- 오디오 라이브러리(Audaspace) 내에서 오디오 클립 데이터의 리샘플링에 많은 시간이 소요됨.
- 새로운 "중간" 리샘플링 품질 설정을 Audaspace에 추가하여 렌더링 시 사용하도록 함(#116059).
이미지 변환 및 필터링
- VSE에서 이미지, 영화, 텍스트, 장면 등을 변환할 수 있음: 위치 지정, 회전, 크기 조정, 추가 크롭 적용.
- 이러한 변환은 모두 CPU에서 수행되며 이미 멀티스레딩으로 처리됨.
"반 픽셀 오류" 수정
- 코드에 여러 "반 픽셀 오류"가 있었으며, 이는 많은 경우 서로 상쇄되거나 보이지 않음.
- 이러한 오류들이 수정됨(#116628).
Bilinear 필터링 주변의 투명성 테두리
- Bilinear 필터링만이 결과 이미지 주변에 투명성을 추가함.
- 이제 Bilinear 필터링 코드에서 "투명성으로 블렌딩"을 제거함(#117717).
필터링 추가 및 변경
- VSE 스트립 변환에는 Cubic 필터링 옵션이 없었음.
- 이제 VSE에서 두 가지 종류의 Cubic 필터링을 선택할 수 있음(#117100, #117517).
- "Auto" 필터 옵션을 추가하여 기본값으로 설정함(#117853).
VSE 효과 최적화
- 실제 영화 데이터 세트에서는 많은 효과를 사용하지 않지만, 코드에서 무언가를 발견하여 최적화함.
- 대부분 멀티스레딩을 통해 최적화됨.
이 모든 것이 렌더링 시간에 어떤 의미가 있나?
- Blender Studio에서 제공하는 세 가지 데이터 세트에서 VSE 영화의 최종 렌더링 시간은 PC에서 약 2배 빨라짐.
실제 작업 과정에 대한 생각
- 위의 모든 작업이 두 달간의 파트타임 노력에 "좋은 양의 작업"인지는 확실하지 않음.
- 개발자(나)는 이 분야나 코드베이스에 대해 아무것도 몰랐음에도 불구하고 꽤 괜찮은 것 같음.
- 총 37개의 풀 리퀘스트가 완료되어 리뷰되고 병합됨.
다음은 무엇인가?
- Blender 4.1이 베타가 되었으며, 기능적으로 "완성"됨.
- Blender 4.2 작업이 시작되며, 계속해서 VSE와 함께 작업할 계획임.
GN⁺의 의견:
- 이 글은 Blender의 VSE에 대한 개선 사항과 개발 과정을 공유하는 것으로, 오픈소스 프로젝트에 기여하는 것이 얼마나 중요한지를 보여줌.
- 개발자가 자신의 전문 분야가 아닌 영역에서도 유의미한 기여를 할 수 있다는 것을 강조함으로써, 새로운 도전을 격려하는 긍정적인 메시지를 전달함.
- 이 글은 소프트웨어 개발과 관련된 최적화 및 성능 향상의 중요성을 강조하며, 이러한 개선이 실제 사용자 경험과 렌더링 시간에 어떤 영향을 미치는지 구체적인 예를 들어 설명함.
Hacker News 의견
- 한 사용자는 자신의 경력에서 가장 잘못된 부분이 독특한 프로젝트에 대한 수학적 해결책을 찾는 것과 평균적인 결과를 내는 유급 프로젝트 사이에서 균형을 찾지 못했다고 언급함. 무급으로 작업하던 것에 대해 급여를 받을 기회가 생겼지만, 결국 전혀 작업하지 않게 되었다는 경험을 공유함.
- 다른 사용자는 원래 Unity에서 많은 경험을 쌓은 후 Blender에 기여한 사례를 언급하며, 특히 이미지 처리 단계를 최적화하여 연산 속도를 4배 향상시킨 변경 사항을 칭찬함.
- 한 사용자는 Aras가 다양한 오픈 소스 그래픽 프로젝트에 참여하여 대규모 속도 향상과 개선을 이루고 다른 프로젝트로 이동하는 것을 지난 몇 년간 가장 좋아하는 추세로 꼽음.
- 또 다른 사용자는 자신이 선호하는 음악 플레이어인 Musicbee가 오픈 소스가 아니어서 아쉬움을 표현하며, 소스가 공개되었다면 여가 시간에 작은 문제들을 고치는 데 기여하고 싶다고 말함.
- 한 사용자는 2020년부터 Blender VSE를 비디오 편집에 사용하고 있으며, 리눅스에서 가장 안정적이고 기능이 풍부한 비디오 편집기라고 생각한다고 언급함.
- 다른 사용자는 자신의 팟캐스트를 위해 모든 오픈 소스 도구를 사용하고 싶었지만, Blender에서 크로마키가 포함된 mp4 시퀀스를 렌더링하는 데 10시간이 걸려 DaVinci Resolve로 전환했다고 경험을 공유함.
- 한 사용자는 게시물 제목의 의미를 파악하는 데 도움을 요청하며, 혹시 이것이 밈스러운 표현인지 물음.
- 또 다른 사용자는 Blender 3D 프로그램의 어떤 부분도 더 빠르게 만드는 것이 매우 어려울 것이라고 언급하며, 이미 가장 빠르게 부팅되고 가장 반응이 빠른 3D 애플리케이션이라고 평가함.
- 한 사용자는 제목을 더 명확하게 바꿔달라고 요청함.
- 마지막으로 한 사용자는 VSE를 처음 사용해본 경험이 그다지 좋지 않았다고 언급하며, 자신의 경험에 대한 링크를 공유함.