늘 수고 많으십니다.
다름 아니라 이번에 gif 움짤 프리셋을 만들면서 겪게 된 일과 평소 직접 부딪쳤던 문제에 관련해서 질문 및 건의 드리려고 이 글을 작성합니다.
1. [구간 설정/잘라내기]와 기타 필터들 간의 관계, 우선순위
구간 설정은 FFmpeg의 -ss 와 -t 옵션을 사용하기 쉽게 만들어 놓으신 것으로 이해합니다.
이와 비슷하게 잘라내기 역시 crop 필터를 시각적으로 쉽게 적용하도록 만들어 놓으신 것으로 이해하는데,
문제는 이 기능이 어떤 상황에서 기존의 어떤 필터들을 무력화시키는지, 우선순위는 어떻게 되는지 파악하기가 힘들다는 것입니다.
우선 [구간 설정/잘라내기]에서의 잘라내기는 [빠른 설정] -> [영상 사이즈 변경] -> [비율변경]의 잘라내기(shanacrop 필터)와는 어떤 관계인지 모르겠습니다.
후자는 F7 필터 리스트와 F8 매개변수 창의 비디오 필터 쪽에 등장하지만, 전자의 경우 매개변수 창에도 나오지 않아서 다른 필터들과의 우선순위 관계가 어떻게 되는지도 알 수 없어 오직 시행착오로 직접 실험해 보는 수밖에 없더군요.
예를 들어, [빠른 설정] -> [영상 사이즈 변경]과 [구간 설정/잘라내기]에서 잘라내기를 동시에 적용시키는 경우 같은 것 말이죠.
또 [구간 설정/잘라내기]에서의 잘라내기가 어떤 상황에서 기존의 어떤 필터들을 무력화시키는지, 또는 충돌하는지 분명하지가 않습니다.
이번에 프리셋을 만들면서 fps와 scale을 적용해 보았는데, [구간 설정/잘라내기]에서의 잘라내기를 적용하면 이 두 필터가 무력화되더군요.
그런데 또 split과 palettegen, paletteuse 필터들은 잘 작동합니다.
결과로 예측하건대, 잘라내기가 필터 우선순위가 있는 것도 짐작되구요.
수요는 많지 않겠지만, 프리셋 제작에 참고할 수 있게 이런 부분에서 명확한 레퍼런스가 있으면 시행착오를 줄일 수 있겠다는 생각이 듭니다.
2. 필터 리스트
빌드하시는 FFmpeg 명령어 옵션을 설명서 게시판에 올리셨듯, 샤나인코더에서 사용 가능한 모든 필터들 리스트도 있으면 좋겠습니다.
어떤 필터들은, 예를 들어 paletteuse 같은 경우 F7 필터 리스트에 없는데도 가능하더군요.
프리셋을 제작할 때는 우선 F7을 눌러보고 원하는 필터가 있는지 살펴보는데, 이런 경우엔 직접 맨땅에 헤딩하면서 찾아보는 수밖엔 없습니다.
3. 필터그래프 입력/편집 창
이 부분은 건의사항입니다.
현재 F7은 필터 체인 옵션인 -vf 만 인식하는데 필터그래프 입력 옵션인 -filter_complex 나 -lavfi 도 인식했으면 좋겠습니다.
물론 GUI로 구현하기 힘든 부분이 있는 것은 알겠습니다만, 장기적으로는 구분자로 쉼표(,)와 콜론(:)만 가능한 필터 체인과 세미콜론(;)과 꺾인 괄호([])까지 사용할 수 있는 필터그래프를 모두 포괄할 수 있는 필터 편집 기능이 있으면 좋겠습니다.
※ 추가 건의
프리셋 자료실 게시물 작성에서 HTML 에디터를 적용해 주시면 감사하겠습니다.
프리셋을 올리면서 설명과 사용법, 예제 등을 게시해야 하는데 plain text로 작성하기엔 무리가 많습니다.
이상 장문의 글 읽어주셔서 감사합니다.
1. [구간 설정/잘라내기]에서 설정한 잘라내기 값은 로고 설정을 사용하지 않으면 vf를 이용하고 crop 필터를 사용하며 매개변수에서 보이지는 않지만 첫 번째 우선순위로 사용하게 됩니다.
로고를 사용할 경우 vf가 아닌 filter_complex를 이용하고 crop 필터를 사용하며 마찬가지로 첫 번째 우선순위로 사용하게 됩니다.
그러므로 현재 샤나인코더에서는 기본적으로 vf를 사용하기 때문에 filter_complex를 따로 사용하게 되면 충돌이 일어나게 됩니다.
shanacrop 필터는 영상 사이즈 변경에서 비율변경 부분을 잘라내기로 선택했을 때 사용하고 crop 필터로 대체되며,
shanapad 필터는 영상 사이즈 변경에서 비율변경 부분을 레터박스로 선택했을 때 사용하고 pad 필터로 대체됩니다.
만약에 잘라내기 설정과 shanacrop 필터를 사용한다면 UI에서 보이는 건 -vf "crop(shanacrop)" 이지만 실제 적용되는건 -vf "crop(잘라내기 옵션),crop(shanacrop)" 이렇게 사용됩니다.
<<참고사항>>
FFmpeg에서는 "-vf/-af/-filter and -filter_complex cannot be used together for the same stream." -vf/-af/-filter와 -filter_complex를 동일 스트림에서는 함께 사용할 수 없습니다.
그러므로 현재 샤나인코더에서는 vf와 af를 이용한 필터 구성을 권장하며 filter_complex 이용 시 잘라내기나 기타 샤나인코더 설정 중에서 vf나 af를 사용하는 모든 필터들을 수동으로 구성해야 합니다.
(비디오 스트림만 filter_complex 구성 시 오디오는 af로 구성 가능)
2. 필터 리스트
필터 리스트 부분은 FFmpeg 새로운 버전으로 컴파일 시 매번 사용 가능한 필터들을 추가하되,
앞서 설명한 이유 때문에 filter_complex를 이용하지 않아도 vf와 af를 사용하여 필터링할 수 있는 단순한 필터들만 목록에 표시되게 하였습니다.
즉, 속성 중에서 VV->V 이런 필터들은 일부로 제외해놓았습니다.
(이유는 기본적으로 샤나인코더가 vf와 af로 돌아가고 로고 설정을 사용했을 때 vf에 있던 것들을 filter_complex로 명령어를 다시 바꾸기 때문입니다.
오디오 같은 경우 동일 스트림이 아니기 때문에 로고를 사용한다 해도 af 설정을 사용합니다.)
그렇지만 사용가능한 필터들은 설명서 게시판에 따로 올려놓겠습니다.
3. 해당 부분은 참고하겠으나 사실 동영상 편집에 가까워지는 부분이기 때문에 기존 샤나인코더에서 어떻게 하면 버그와 문제없이 기능을 추가해야 할까 생각해야 하는 부분입니다.
기술적으로는 로고 설정 시 filter_complex를 사용하기 때문에 어려운 것은 아니지만 사용자가 복잡하지 않고, 새로운 기능 사용 시 문제가 발생하지 않도록 프로그램 코드를 수정해야 하기 때문에 고민해야 할 부분이 많습니다.
프리셋 게시판의 글쓰기 부분을 자유게시판과 같이 기본 컴포넌트를 사용할 수 있도록 개선했습니다.
감사합니다.