업로드 시 자동으로 재생 및 루프 설정

사용자가 짧은 비디오 파일을 업로드하여 게시물에 삽입할 수 있도록 하고 싶습니다. 또한 포럼의 기본 동작을 설정할 수 있도록 하여, 이러한 비디오가 기본적으로 자동 재생되고, 루프되며, 음소거되도록 하려고 합니다. 이렇게 하면 비디오를 GIF 대체재로 사용할 수 있으며, Discord에서 작동하는 방식과 동일합니다(실제로 대부분의 비디오는 GIF 대신 .mp4를 많이 사용하는 것으로 보이는 Discord에서 가져온 것입니다).

이 주제는 비디오 파일이 자동 재생되고 루프되도록 HTML을 작성하는 방법을 보여줍니다.

<video width="100%" height="100%" preload="metadata" controls="" autoplay>
      <source src="https://www.simscale.com/forum/uploads/default/original/3X/d/6/d6fab77fb56eeb98ef660d682f344dba4bbb66ce.mp4">
      <a href="https://www.simscale.com/forum/uploads/default/original/3X/d/6/d6fab77fb56eeb98ef660d682f344dba4bbb66ce.mp4">/forum/uploads/default/original/3X/d/6/d6fab77fb56eeb98ef660d682f344dba4bbb66ce.mp4</a>
</video>

이것은 작동하지만, 사용자가 게시물을 작성하면서 비디오 파일을 업로드할 때 이를 어떻게 사용할 수 있는지 알 수 없습니다. 이 예제에서는 비디오 파일에 대한 전체 URL이 사용되고 있음을 주목해 주세요. 사용자가 파일을 업로드할 때 이 정보는 사용자에게 제공되지 않으며, 또한 서버에서 사용자가 업로드한 파일이 이동되거나 다른 S3 제공업체나 CDN으로 이동하면 URL도 깨집니다.

사용자가 파일을 업로드하면, 답변 상자에는 다음과 같은 마크다운이 표시됩니다.

![happy-birthday|video](upload://abcdefg123456789.mp4)

따라서 사용자가 이를 비디오가 자동 재생되고 루프(음소거)되도록 필요한 HTML로 단순히 변환하는 것은 불가능해 보입니다. 이를 위한 어떤 방법이 제공되고 있나요? 그리고 더 좋은 것은, 이것이 포럼 전체에서 기본 동작이 되도록 하는 방법이 있을까요? 아니면 최소한 이 동작을 기본적으로 활성화해 두고, 사용자가 업로드 및 게시할 때 자동 재생 및 루프 설정에서 선택적으로 제외할 수 있도록 하는 방법이 있을까요?
(현재 이것이 불가능하다면, 이를 기능 요청으로 제출하고 싶습니다 :))

안녕하세요 :waving_hand:

두 가지 방식으로 구현할 수 있을 것 같다는 생각을 하고 있습니다.

첫 번째 방식이 가장 쉽습니다. 플러그인 API인 api.decorateCookedElement를 사용하여 게시물 내의 모든 비디오를 찾아 해당 속성(autoplay, loop 등)을 추가하는 작은 테마 컴포넌트를 만드는 것입니다.

이 방식은 사이트 전체의 게시물 내 모든 비디오의 HTML을 수정합니다. 컴포저(Composer)에는 위에서 언급한 마크다운 비디오 코드가 그대로 표시됩니다.
![happy-birthday|video](upload://abcdefg123456789.mp4)

장점: 사이트 내 모든 비디오에 적용됩니다(이전에 업로드된 비디오도 포함).
단점: 게시된 게시물에서 처리되므로 사용자가 이를 제어할 수 없습니다. 모든 비디오에 적용되므로, 많은 비디오가 있는 주제에서 이 비디오들이 동시에 재생되기를 원할 경우 문제가 발생할 수 있습니다.


두 번째 옵션은 조금 더 작업이 필요합니다. 사용자가 업로드된 비디오에 어떤 속성이 추가될지 제어할 수 있는 모달입니다. 컴포저에 특정 버튼을 추가하여 트리거하거나, 비디오 업로드를 감지하면 자동으로 트리거되도록 설정할 수 있습니다.

완료되면 추가된 속성을 포함하는 비디오 HTML이 컴포저에 삽입됩니다.

<video width="100%" height="100%" preload="metadata" controls="" autoplay>
    <source src="https://www.simscale.com/forum/uploads/default/original/3X/d/6/d6fab77fb56eeb98ef660d682f344dba4bbb66ce.mp4">
    <a href="https://www.simscale.com/forum/uploads/default/original/3X/d/6/d6fab77fb56eeb98ef660d682f344dba4bbb66ce.mp4">/forum/uploads/default/original/3X/d/6/d6fab77fb56eeb98ef660d682f344dba4bbb66ce.mp4</a>
</video>

이것의 훌륭한 예로는 Insert Video 테마 컴포넌트가 있습니다.

장점: 사용자가 비디오 속성을 제어할 수 있으며, autoplay 등을 비활성화하도록 선택할 수 있으므로 비디오가 많은 주제에서도 문제가 되지 않을 것입니다.
단점: 이전의 비디오에는 적용되지 않습니다. 하지만 이 두 번째 프로세스 전체가 사용자가 자신의 비디오를 제어하는 방법에 관한 것이므로 큰 단점은 아닙니다.


추가

첫 번째 방법은 사용자 설정 또는 그룹과 결합할 수 있습니다. 이렇게 하면 사용자가 비디오 동작을 설정할 수 있습니다.
예를 들어: 비디오 자동 재생 활성화 또는 비디오 자동 재생 등을 활성화하는 그룹에 가입하는 것 등…


수정: lazy load를 잊고 있었다는 생각이 들었습니다. lazy load는 사용자가 섬네일 재생 버튼을 클릭할 때만 비디오를 로드하기 때문에, 첫 번째 프로세스가 현재 작동하지 않는 것일 수 있습니다. 아직 테스트해 보지 않았습니다… :thinking:

네, 사실 사용자가 설정할지 말지 선택할 수 있도록 구성 가능하게 만드는 것이 가장 좋을 것 같아요. 이렇게 만드는 게 얼마나 어려울지 궁금하네요. 이걸 "테마 컴포넌트"로 봐도 될까요?