NearVid

2026-10-10

Steamworks 자체 트레일러 문서엔 길이·용량 제한이 없다 — 대신 해상도·비트레이트·코덱 요구사항이 있다

"스팀 트레일러 규격"을 검색하면 길이나 파일 용량 상한을 제시하는 제3자 가이드가 대부분 나오는데, 서로 수치가 다 다르다. Steamworks 자체 트레일러 문서는 이 부분을 빠르게 정리한다: 해상도·프레임레이트·비트레이트·컨테이너 목록·선호 코덱을 명시하지만, 페이지 어디에도 최대 길이나 최대 파일 용량은 나오지 않는다. 밸브(Valve) 자체 문서가 실제로 요구하는 것, 그 자체 FAQ가 직접 지목하는 두 가지 실패 원인, 그리고 NearVid의 무손실 트림과 MP4 변환이 각각 어디까지 맞아 들어가는지 정리했다.

Steamworks 자체 문서가 실제로 명시하는 것

문서는 올려야 할 트레일러를 한 문장으로 설명한다: "The trailer should be the highest resolution that you have, up to 1920 x 1080 resolution, high bit rate (5,000+ Kbps) and in .mov, .wmv, or .mp4 container files"(가지고 있는 가장 높은 해상도로, 최대 1920x1080, 높은 비트레이트(5,000Kbps 이상), .mov·.wmv·.mp4 컨테이너 파일로 준비해야 한다). 같은 문서 기준으로 항목별로 풀면:

  • 해상도: "up to 1920 x 1080"(최대 1920x1080) — 고정 배포 크기가 아니라 상한이다.
  • 프레임레이트: "30/29.97 or 60/59.94 fps."
  • 비트레이트: "high bit rate (5,000+ Kbps)"(5,000Kbps 이상의 높은 비트레이트) — 맞춰야 할 하한으로 명시돼 있고, 상한이 아니다.
  • 컨테이너: ".mov, .wmv, or .mp4" — 정확히 셋뿐, 다른 포맷은 언급이 없다.
  • 코덱: "H.264 video and AAC audio is preferred, but we can transcode from many formats"(H.264 비디오와 AAC 오디오가 선호되지만, 다른 많은 포맷에서도 트랜스코딩이 가능하다) — 강제 요구가 아니라 선호이고, 트랜스코딩을 대안으로 제시한다.
  • 종횡비: "16:9 aspect ratio is preferred"(16:9 선호)이고 "4:3 aspect ratio is accepted"(4:3도 허용).

같은 문서는 놓치기 쉬운 사실도 하나 적어둔다: "Please note that audio will be filtered down to regular stereo when we transcode the videos"(트랜스코딩 시 오디오는 일반 스테레오로 줄어든다는 점을 알아두라) — 원본이 어떤 채널 구성이든, 스팀 자체 트랜스코딩 단계에서 무조건 스테레오로 바뀐다.

Steamworks 자체 FAQ가 실제로 트레일러 업로드를 깨뜨린다고 말하는 것

문서의 FAQ 섹션은 "What do I do if my trailer processing ended with an error?"(트레일러 처리가 오류로 끝났을 때 어떻게 해야 하나)라는 질문에 구체적인 원인 두 가지를 순서대로 직접 인용해 답한다: "The most common reason for a trailer to fail is the resolution of the video. Please ensure you use a common resolution such as 1920x1080 or 1280x720 to avoid any downstream processing issues"(트레일러 실패의 가장 흔한 원인은 영상 해상도다. 1920x1080이나 1280x720처럼 일반적인 해상도를 쓰면 후속 처리 문제를 피할 수 있다), 그리고 두 번째로 "Another common issue is an unsupported audio sample rate (please use 44Khz or 48Khz)"(또 다른 흔한 문제는 지원되지 않는 오디오 샘플레이트이며, 44kHz나 48kHz를 쓰라). 둘 다 원본 파일을 스팀이 기대하는 값에 맞추는 문제이지, 더 짧게 자르거나 더 작게 압축하는 문제가 아니다 — FAQ 어디에도 길이나 용량을 실패 원인으로 적어둔 곳은 없다.

길이·용량 제한이 없다는 것이 "원본을 그대로 올려도 된다"는 뜻은 아니다

"용량 제한이 없다"를 "준비할 게 없다"로 읽기 쉽다. 그러나 OBS나 캡처카드로 녹화한 플레이 세션 원본은 트레일러에 실제로 필요한 60~90초 하이라이트와는 거리가 멀고, 위에서 명시한 세 컨테이너에 H.264/AAC 조합으로 깨끗이 들어있는 경우도 드물다 — 긴 세션은 보통 .mkv 안의 NVENC HEVC나 .webm 안의 VP9로 남는데, 둘 다 Steamworks가 명시한 선호 조합과 다르다. "녹화된 원본"에서 "Steamworks 자체 문서가 설명하는 그 클립"까지는 여전히 서로 다른 두 가지 작업이다 — 먼저 잘라내고, 그다음 코덱·컨테이너를 맞추는 것.

원본 캡처에서 Steamworks Trailers 탭까지 순서가 있는 두 가지 작업: 먼저 잘라내고, 그다음 코덱·컨테이너를 맞춘다 원본 캡처 길이 무관, 컨테이너·코덱 무관 → NearVid 트림 무손실 스트림 복사 코덱·컨테이너 그대로 → NearVid 변환 H.264 Baseline + AAC-LC, .mp4로 → Store Page Admin Trailers 탭 NearVid의 두 단계가 못 채우는 간극 둘: 비트레이트 — High 프리셋 상한 4Mbps, Steamworks 자체 문서 권장치는 "5,000+ Kbps" 프레임레이트·해상도 — 두 단계 모두 이 값을 바꾸지 않음, 원본이 이미 Steamworks 자체 FAQ가 명시한 30/29.97 또는 60/59.94fps, 1920x1080 이하여야 함 트림과 변환은 각자 한 단계를 정확히 처리한다 — Steamworks 규격의 나머지를 대신 확인해주지는 않는다.
NearVid의 두 기능은 자르기와 코덱·컨테이너를 맞추는 것까지 커버한다. Steamworks 자체 문서의 비트레이트 권장치와 그 FAQ의 해상도·샘플레이트 실패 원인은 원본 영상 쪽에서 별도로 확인해야 한다.

NearVid의 무손실 트림이 맞아 들어가는 지점 — 재인코딩 전에

packages/near-video-engine/engine.js는 트림 기능이 인식하는 컨테이너를 코드에 직접 나열한다: CONTAINER_EXTS에는 'mp4', 'mov', 'm4v', 'webm', 'mkv', 'avi', 'ts', 'flv', 'wmv', '3gp', 'ogv', 'mpg', 'mpeg'가 들어 있다 — Steamworks 문서가 명시한 세 컨테이너(.mov, .wmv, .mp4) 전부는 물론, 원본 캡처가 실제로 자주 쓰는 .mkv·.webm까지 포함한다. 같은 파일의 헤더 주석은 트림이 이 중 무엇에든 하는 일을 명시한다: "trim() can stream-copy ANY input container/codec losslessly (no encoder invoked at all)"(trim()은 어떤 입력 컨테이너·코덱이든 인코더를 전혀 거치지 않고 무손실로 스트림 복사할 수 있다). 이 단계에서 전체 세션을 60~90초 하이라이트로 잘라내는 데는 품질 손실도, 재인코딩 시간도 들지 않는다 — 인코더 자체가 돌지 않기 때문에 캡처가 이미 쓰던 코덱이 녹화 그대로 유지되고, 컨테이너도 바뀌지 않은 채 MP4 변환 단계로 넘어간다.

NearVid의 MP4 변환이 맞아 들어가는 지점 — 그리고 Steamworks 자체 권장치에 못 미치는 지점

클립을 잘라낸 뒤, packages/near-video-engine/mp4-engine.js는 그것을 Steamworks 문서가 선호하는 정확한 조합으로 재인코딩한다: 이 모듈은 H264_BASELINE_CODEC_STRING = 'avc1.42001f'(프로필 0x42/Baseline, 레벨 0x1f/3.1)와 AAC_LC_CODEC_STRING = 'mp4a.40.2'를 지정해 MP4로 묶는다 — 명시된 세 컨테이너 중 하나이면서, Steamworks 문서가 선호한다고 밝힌 정확한 코덱 조합이다. convertToMp4()는 가로·세로 해상도를 덮어쓰지 않으므로 원본이 이미 가진 해상도 — 1920x1080까지 포함 — 가 그대로 유지되고, 오디오 샘플레이트도 고정하지 않아 출력은 원본 트랙이 쓰던 레이트를 그대로 물려받는다. 대부분의 캡처 소프트웨어는 이미 44.1kHz나 48kHz로 녹화하는데, 이는 Steamworks 자체 FAQ가 허용 가능하다고 명시한 바로 그 두 레이트다.

못 미치는 지점: apps/nearvid/src/workspace.js는 MP4_QUALITY_BITRATE = { high: 4_000_000, medium: 2_000_000, low: 800_000 }를 정의한다 — High 프리셋은 초당 4메가비트로 고정돼 있고, 이는 Steamworks 자체 문서가 명시한 "high bit rate (5,000+ Kbps)" 수치보다 낮다. NearVid 자체 코드는 현재 이 프리셋 위로는 제공하지 않으므로, Steamworks가 권장한 비트레이트 하한을 한 비트도 놓치지 않아야 하는 트레일러라면 이 한 가지 설정만은 다른 인코더가 필요하다. 같은 파일의 VIDEO_INPUT_FORMATS는 MP4, QTFF/MOV, Matroska, WebM, MPEG-TS를 나열하는데 — WMV는 없다 — 그래서 원본 캡처가 이미 .wmv 컨테이너에 있다면 무손실 트림은 가능하지만(위 CONTAINER_EXTS에 포함) MP4 변환에는 바로 넣을 수 없다. 다만 MP4 자체가 Steamworks가 허용하는 세 컨테이너 중 하나라서 실무에서 이 문제가 걸리는 경우는 드물다.

이게 할 수 없는 것

NearVid는 스팀에 업로드하지 않고, Steamworks API를 호출하지도 않으며, 파일이 밸브(Valve) 자체 파이프라인에 도달한 뒤 실제로 처리에 성공할지도 알지 못한다 — 그 판정은 업로드 이후 전적으로 스팀 쪽에서 일어난다. 프레임레이트를 확인하거나 바꾸지 않으므로, 24fps나 가변 프레임레이트로 녹화된 원본은 그대로 남는다 — Steamworks가 명시한 "30/29.97 or 60/59.94 fps"에 맞추는 것은 원본 영상 쪽의 일이고, NearVid의 두 기능 중 어느 것도 이 값을 건드리지 않는다. 자체 High 프리셋인 4Mbps를 넘지 않으며, 오디오를 특정 레이트로 리샘플링하지도 않는다. 업로드 전에 NearVid가 실제로 하는 일은: 전체 세션을 무손실로 잘라내고, 그 클립을 Steamworks 문서가 선호하는 H.264 Baseline + AAC-LC 조합으로 MP4 안에 재인코딩하는 것 — 둘 다 기기 안에서 끝난다.

정리

Steamworks 자체 트레일러 문서는 해상도 상한, 프레임레이트, 비트레이트 목표, 허용 컨테이너 셋, 선호 코덱 조합을 명시하지만, 페이지 어디에도 최대 길이나 최대 파일 용량은 없다. 그리고 그 자체 FAQ는 트레일러 처리가 실패하는 흔한 원인 두 가지로 해상도 불일치와 지원되지 않는 오디오 샘플레이트를 지목하지, 파일 용량은 지목하지 않는다. NearVid의 무손실 트림은 원본 세션을 코덱· 컨테이너를 전혀 건드리지 않고 하이라이트 클립으로 잘라낼 수 있고, MP4 변환은 그 클립을 Steamworks 문서가 선호한다고 밝힌 H.264 Baseline + AAC-LC + MP4 조합으로 재인코딩할 수 있다 — 둘 다 파일이 밸브 자체 업로드 파이프라인에 닿기 전에 기기 안에서 끝난다. NearVid 자체 수치가 Steamworks 자체 권장치에 못 미치는 단 한 곳은 비트레이트다 — High 프리셋 4Mbps 대 명시된 "5,000+ Kbps" 하한이며, 이 글은 그 간극을 덮지 않고 그대로 적었다.

광고
← NearVid

이 페이지는 동의하신 경우에만 광고를 표시합니다.