명령줄 도구를 사용하여 두 비디오 간에 원활하고 반복 가능한 전환을 만드는 방법은 무엇입니까?

명령줄 도구를 사용하여 두 비디오 간에 원활하고 반복 가능한 전환을 만드는 방법은 무엇입니까?

두 개의 비디오를 입력으로 사용하여 두 비디오가 매초마다 부드럽고 반복적인 방식으로 서로 페이드(또는 디졸브)되는 비디오를 출력하고 싶습니다. , 또는 기타 유사한 도구 ffmpeg와의 조합을 통해 내가 원하는 효과를 얻을 수 있다고 가정합니다 . 기본적으로 특정 시간 간격을 기준으로 비디오 A를 자르고 초당 컷을 (자동으로) 삭제 하고 싶습니다 . 비디오 B의 경우에도 마찬가지이지만 이 경우에는 버려진 부분을 유지하기 위해 프로세스가 반대가 됩니다. 나는 이 부분들을 하나로 엮기를 희망한다.meltmkvmergeffmpeg

위 도구 중 하나에 따라 와일드카드 명령 인수 또는 배치 목록을 사용하여 결과를 연결할 수 있도록 파일 이름은 올바른 형식이어야 합니다. 전환 효과(예: "지연 디졸브")는 꼭 필요한 것은 아니지만 이를 달성하기 위한 필터도 있으면 좋을 것입니다. 마지막으로, 이 과정이 완료되면 좋을 것 같습니다.녹음이 거의 또는 전혀 필요하지 않음, 비디오 품질을 유지하기 위해.

나는 다 읽었다이 스레드그리고Melt 프레임워크 문서, ffmpeg 매뉴얼 외에.

답변1

두 비디오의 해상도와 샘플 종횡비가 동일하다고 가정하면 다음을 사용할 수 있습니다.혼합ffmpeg로 필터링합니다.

몇 가지 예를 들자면,


ffmpeg -i videoA -i videoB -filter_complex \
       "[0][1]blend=all_expr=if(mod(trunc(T),2),A,B);\
        [0]volume=0:enable='mod(trunc(t+1),2)'[a]; [1]volume=0:enable='mod(trunc(t),2)'[b];\
        [a][b]amix"  out.mp4

스트레이트 컷.

산출:

time,  in seconds,
[0,1) -> videoB
[1,2) -> videoA
[2,3) -> videoB
...
[2N  ,2N+1) -> videoB
[2N+1,2N+2) -> videoA

ffmpeg -i videoA -i videoB -filter_complex \
       "[0][1]blend=all_expr='if(mod(trunc(T/2),2),min(1,2*(T-2*trunc(T/2))),max(0,1-2*(T-2*trunc(T/2))))*A+if(mod(trunc(T/2),2),max(0,1-2*(T-2*trunc(T/2))),min(1,2*(T-2*trunc(T/2))))*B';\
        [0]volume='if(mod(trunc(t/2),2),min(1,2*(t-2*trunc(t/2))),max(0,1-2*(t-2*trunc(t/2))))':eval=frame[a]; [1]volume='if(mod(trunc(t/2),2),max(0,1-2*(t-2*trunc(t/2))),min(1,2*(t-2*trunc(t/2))))':eval=frame[b];\
        [a][b]amix"  out.mp4

각 입력 비디오/오디오는 2초 동안 지속되며 전환 시간은 0.5초입니다.

산출:

time,  in seconds,
[0,0.5) -> videoA fades out 1 to 0 + videoB fades in from 0 to 1
[0.5,2) -> videoB
[2,2.5) -> videoB fades out 1 to 0 + videoA fades in from 0 to 1
[2.5,4) -> videoA
[4,4.5) -> videoA fades out 1 to 0 + videoB fades in from 0 to 1
[4.5,6) -> videoB
[6,6.5) -> videoB fades out 1 to 0 + videoA fades in from 0 to 1
[6.5,8) -> videoA
...
[4N    ,4N+0.5) -> videoA fades out 1 to 0 + videoB fades in from 0 to 1
[4N+0.5,4N+2)   -> videoB
[4N+2  ,4N+2.5) -> videoB fades out 1 to 0 + videoA fades in from 0 to 1
[4N+2.5,4N+4)   -> videoA

답변2

귀하의 질문은 매우 모호합니다. 인정하시겠지만, 가능한 도구 중 일부를 사용하기 시작했지만 막히거나 압도당했습니다. 그러므로 나는 최종적인 해결책보다는 방향을 제시하고 싶다.

MLT필요한 도구입니다. 후드 아래에서 ffmpeg 및 기타 도구를 사용합니다. 그러나 필요한 모든 구성을 MLT(XML) 구성 파일에 넣을 수 있습니다.

Melting Frame 웹 페이지 상단을 보면 다음과 같은 메모가 표시됩니다.

MLT를 시도하고 배우는 가장 쉬운 방법은 다운로드하는 것입니다.샷 편집

이 작업을 수행하고 Shotcut에 익숙해지는 데 시간을 할애하는 것이 좋습니다. 다른 MLT 기반 편집기와 달리 Shotcut은 MLT 구성 파일을 프로젝트 파일로 직접 사용합니다.

Shotcut을 사용하여 두 개의 비디오를 병합하고 각 비디오의 클립을 교체하는 것이 좋습니다. 그런 다음 프로젝트를 저장하고 텍스트 편집기에서 엽니다. 그런 다음 이를 자신만의 MLT 구성 파일을 빌드하는 방법의 예로 사용할 수 있습니다.

관련 정보