- 1.0 버전때의 파일 하나만 수정하는 기능에 관련된 버튼들 제거 - 오른쪽 위의 메뉴를 버튼으로 변경 - 폴더를 열거나 데이터 그리드에 폴더를 드래그 앤 드랍 하면 하위 폴더의 파일도 모두 추가 - 데이터 그리드에 파일도 드래그 앤 드랍으로 추가 할 수 있도록 수정 - 저장 파일은 이름만 보여주고 이름을 부분 수정하는 기능 추가 - 저장 폴더를 드래그 앤 드랍으로 설정할수 있도록 수정하고 저장 폴더는 설정 파일(ini)에 저장 - 여러 파일을 순차적으로 작업할때 전체 진행률을 보여주는 프로그래스바 추가 - 텍스트 박스에 탭이나 마우스 클릭으로 포커스가 들어가면 이미 입력되어 있는 내용 전체 선택 - 비트레이트를 Stream:Video 에서 가져오던 것에서 Duration 에 있는 내용을 사용하도록 수정 - 선택된 파일의 정보를 조금 더 자세하게 출력하는 기능 추가
그때 당시에는 원본 파일의 확장자 때문인지 코덱 때문인지 여러 프로그램들에서 파일 열기 부터 실패
그 이후로 스팀이나 험블에서 영상편집 프로그램이 할인하거나 번들로 나오면 사놨었다.
시간이 흘러 다시 동영상을 자르고 싶어졌는데 원하는 것은 재인코딩 없이 필요한 부분만 자르기
하지만 시간이 너무 흘러 버렸다.
- Movavi Video Suite 17
스팀에서 할인할때 사놨었는데 오래전 버전이라 h265는 지원 불가
비디오 분할 기능은 앞부분이 포함되면 높은 확률로 작동, 앞부분을 버리고 싶을때는 높은 확률로 작동하지 않는다.
비디오 변환 기능으로 mkv를 mov로 만드는건 성공 했지만 ios17의 라이브 포토 배경화면은 제한사항이 조금 많은듯
- VEGAS Pro 14 Edit
험블에서 번들로 나왔을때 사놨었는데 매직스나 베가스 홈페이지에서는 최신버전 정보만 나와서 지원 코덱이나 해상도를 알수 없어서 설치하지 않고 패스
- Fastcut
역시 험블에서 번들로 샀었는데 매직스 홈페이지에서는 자세한 정보를 찾을수 없고 예전에 라이브 포토를 만드려다가 실패했던 프로그램이 이것이었던 걸로 추정되어서 패스
- Shotcut
프리웨어에 오픈소스 프로그램
4K, 8K, h264, h265 뭐든 잘 작동
하지만 재인코딩을 꼭 거친다. OTL
- FFmpeg
Shotcut 설치 폴더에 있는 ffmpeg.exe 를 보고 구글링 시작
SET FFMPEG_PATH="E:\\Util\\Shotcut\\ffmpeg.exe"
SET IN_FILE="E:\\aaa\\111.mp4"
SET OUT_FILE="E:\\aaa\\111_cut.mp4"
SET START_TIME=00:10:00.000
SET END_TIME=00:20:00.000
%FFMPEG_PATH% -i %IN_FILE% -ss %START_TIME% -to %END_TIME% -movflags +faststart -c copy %OUT_FILE%
Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.
위 에러 메시지로 인터넷을 검색하면 dll과 dll을 사용하는 프로젝트간의 함수 호출 규칙(cdecl, stdcall)이 달라서 발생하고 동일하게 맞춰주면 해결된다고만 나오지만 근본적으로는 함수 호출할때와 호출 끝났을때의 콜 스택이 달라졌을때 발생한다.
호출 규칙이 같아도 해당 에러메시지가 발생하는 경우는 아래와 같이 라이브러리와 라이브러리를 사용하는 프로젝트의 헤더가 달라서 가상함수 테이블이 다르고 전달인자가 다른 함수를 호출하게 되는 경우가 있다.
1> C:\Program Files (x86)\Windows Kits\8.1\Include\shared\winerror.h(50497) : 'D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD'의 이전 정의를 참조하십시오.
UI의 프레임에서 화면크기만한 텍스쳐에 모든 오브젝트를 미리 그려놓고 UI랜더는 그 텍스쳐 한장만 화면에 그리는 비교적 단순한 로직이고 UI랜더를 포함함 모든 오브젝트는 최상위 부모 클래스의 같은 함수로 랜더되기 때문에 UI랜더에서 문제가 생긴다면 UI프레임에서도 문제가 생겨야 하지만 UI프레임에서는 문제가 생기지 않아서 이 문제의 원인이 상상조차 안됐었는데 의외로 간단한 부분이 문제였다.
다른 오브젝트와 UI랜더의 유일한 차이점은 UI랜더에서만 노말맵을 사용하지 않는 다는 것인데 기본 노말맵은 셋팅되어있고 노말맵을 NULL로 셋팅하려고 하면 예외처리로 원래 텍스쳐를 그대로 들고 있기 때문에 의도치 않게 노말맵을 셰이더에 보내주면서 셰이더에는 노말맵 텍스쳐를 선언하지 않은게 원인이었다.