Rendi둜 λ™μ˜μƒ μžλ§‰ λ„£κΈ°: SRTλ₯Ό MP4에 영ꡬ μ‚½μž…ν•˜λŠ” 법

κ²€μˆ˜κ°€ λλ‚œ λ™μ˜μƒκ³Ό SRT νŒŒμΌμ„ Rendi의 비동기 FFmpeg API둜 μ²˜λ¦¬ν•΄ μžλ§‰μ΄ κ³ μ •λœ MP4λ₯Ό λ§Œλ“œλŠ” 방법을 μ„€λͺ…ν•©λ‹ˆλ‹€. μž…λ ₯ μ€€λΉ„λΆ€ν„° μž‘μ—… 제좜, μƒνƒœ 확인, λΉ„μš© 계산, μ΅œμ’… μ˜μƒ κ²€μˆ˜κΉŒμ§€ μžλ™ν™” νŒŒμ΄ν”„λΌμΈμ— ν•„μš”ν•œ 핡심 절차λ₯Ό ν•œ λ²ˆμ— μ‚΄νŽ΄λ΄…λ‹ˆλ‹€.

κ²Œμ‹œμΌ

μž‘μ„±μž
Rendi둜 λ™μ˜μƒ μžλ§‰ λ„£κΈ°: SRTλ₯Ό MP4에 영ꡬ μ‚½μž…ν•˜λŠ” 법

κ²€μˆ˜κ°€ λλ‚œ λ™μ˜μƒκ³Ό 확인을 마친 SRT 파일이 μžˆλ‹€λ©΄, 자체 인프라에 μ˜μƒ 처리 μ›Œμ»€λ₯Ό μΆ”κ°€ν•˜μ§€ μ•Šκ³ λ„ μžλ§‰μ΄ κ³ μ •λœ MP4λ₯Ό λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. RendiλŠ” 일반적인 FFmpeg μžλ§‰ ν•„ν„°λ₯Ό API μž‘μ—…μœΌλ‘œ λ°›μ•„ λͺ…λ Ή IDλ₯Ό λ°œκΈ‰ν•˜κ³ , λ Œλ”λ§μ— μ„±κ³΅ν•˜λ©΄ μ €μž₯된 결과물을 λ°˜ν™˜ν•©λ‹ˆλ‹€. 핡심 κ²½κ³„λŠ” λͺ…ν™•ν•©λ‹ˆλ‹€. κΈ°μ‘΄ μžλ§‰μ„ μ˜μƒ 픽셀에 μž…νžˆλŠ” λ™μ˜μƒ μžλ§‰ λ„£κΈ° 방식일 뿐, μŒμ„±μ„ λ°›μ•„μ“°κ±°λ‚˜ μžλ§‰ λ‚΄μš©μ΄ λ§žλŠ”μ§€ νŒλ‹¨ν•˜μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€.

핡심뢀터: λ™μ˜μƒ μžλ§‰ λ„£κΈ°λŠ” μ–Έμ œ 번인이 λ§žμ„κΉŒ?

ν”Œλ ˆμ΄μ–΄μ˜ μžλ§‰ νŠΈλž™ μ„€μ •κ³Ό 관계없이 λͺ¨λ“  μ‹œμ²­μžμ—κ²Œ 같은 μžλ§‰μ„ λ³΄μ—¬μ€˜μ•Ό ν•œλ‹€λ©΄ SRTλ₯Ό μ˜μƒμ— μž…νž™λ‹ˆλ‹€. μ‹œμ²­μžκ°€ μžλ§‰μ„ λ„κ±°λ‚˜ μ–Έμ–΄λ₯Ό λ°”κΎΈκ³ , ν”Œλ ˆμ΄μ–΄μ˜ μ ‘κ·Όμ„± κΈ°λŠ₯을 μ΄μš©ν•΄μ•Ό ν•œλ‹€λ©΄ SRTλ₯Ό 별도 νŠΈλž™μœΌλ‘œ μœ μ§€ν•˜λŠ” 편이 λ§žμŠ΅λ‹ˆλ‹€.

Rendiλ₯Ό μ‚¬μš©ν•  λ•Œμ˜ 싀무 μˆœμ„œλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  1. μ΅œμ’… λ™μ˜μƒκ³Ό SRTλ₯Ό ν•¨κ»˜ κ²€μˆ˜ν•©λ‹ˆλ‹€.
  2. 두 νŒŒμΌμ„ Rendiκ°€ κ°€μ Έμ˜¬ 수 μžˆλŠ” URL에 λ‘κ±°λ‚˜, 둜컬 νŒŒμΌμ„ λ¨Όμ € Rendi에 μ—…λ‘œλ“œν•©λ‹ˆλ‹€.
  3. λ¬Έμ„œμ— λͺ…μ‹œλœ FFmpeg μžλ§‰ λͺ…령을 μ œμΆœν•©λ‹ˆλ‹€.
  4. λͺ…λ Ή IDλ₯Ό ν΄λ§ν•˜κ±°λ‚˜ μ›Ήν›…μœΌλ‘œ μ΅œμ’… κ²°κ³Όλ₯Ό λ°›μŠ΅λ‹ˆλ‹€.
  5. MP4 메타데이터λ₯Ό ν™•μΈν•˜κ³  전체 μ˜μƒμ„ μ‹œμ²­ν•œ λ’€ λ‹€μŒ μž‘μ—…μ„ λ³΄λƒ…λ‹ˆλ‹€.

이 μˆœμ„œλŠ” μ€‘μš”ν•©λ‹ˆλ‹€. 인코딩 μžμ²΄λŠ” μ„±κ³΅ν–ˆλ”λΌλ„ μžλ§‰μ΄ 일찍 λ‚˜μ˜€κ±°λ‚˜ 이름이 ν‹€λ Έκ±°λ‚˜, ν”Œλž«νΌ μΈν„°νŽ˜μ΄μŠ€μ— 문ꡬ가 κ°€λ €μ§€λ©΄ 결과물은 μ‹€νŒ¨ν•œ κ²ƒμ΄λ‚˜ λ‹€λ¦„μ—†μŠ΅λ‹ˆλ‹€.

VIDEO와 SRTκ°€ POST 단계λ₯Ό 거쳐 SUCCESS에 λ„λ‹¬ν•˜κ³  MP4둜 좜λ ₯λ˜λŠ” 과정을 λ³΄μ—¬μ£ΌλŠ” μ•„ν‚€ν…μ²˜ μ›Œν¬ν”Œλ‘œ
RendiλŠ” κ²€μˆ˜λ₯Ό 마친 두 μž…λ ₯ νŒŒμΌμ„ 비동기 FFmpeg μž‘μ—…μœΌλ‘œ μ²˜λ¦¬ν•˜κ³ , SUCCESS 이후 μ™„μ„±λœ MP4λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

Rendiκ°€ μ‹€μ œλ‘œ λ§‘λŠ” μ—­ν• 

RendiλŠ” νŽΈμ§‘μžκ°€ μ•„λ‹ˆλΌ 기계싀에 κ°€κΉμŠ΅λ‹ˆλ‹€. λ‘œμ»¬μ—μ„œ μ‹€ν–‰ν•  FFmpeg λͺ…령을 HTTP API둜 μ „λ‹¬ν•˜λ©΄ λ©λ‹ˆλ‹€. μš”μ²­μ„ μž‘μ—… μ§€μ‹œμ„œλΌκ³  μƒκ°ν•˜λ©΄ μ΄ν•΄ν•˜κΈ° μ‰½μŠ΅λ‹ˆλ‹€. μž…λ ₯ 별칭은 재료의 μœ„μΉ˜λ₯Ό, FFmpeg λ¬Έμžμ—΄μ€ μˆ˜ν–‰ν•  μž‘μ—…μ„, 좜λ ₯ 별칭은 μ™„μ„±ν’ˆμ˜ 이름을 μ§€μ •ν•©λ‹ˆλ‹€.

ν˜„μž¬ μš”μ²­ μŠ€ν‚€λ§ˆμ—λŠ” ffmpeg_command와 output_filesκ°€ ν•„μš”ν•©λ‹ˆλ‹€. μž…λ ₯ ν‚€λŠ” in_으둜, 좜λ ₯ ν‚€λŠ” out_으둜 μ‹œμž‘ν•˜λ©° 이 이름듀은 λͺ…λ Ή μ•ˆμ—μ„œ 이쀑 μ€‘κ΄„ν˜Έ 사이에 λ‹€μ‹œ λ“±μž₯ν•©λ‹ˆλ‹€. μš”μ²­μ΄ μ •μƒμ μœΌλ‘œ μ ‘μˆ˜λ˜λ©΄ μž‘μ—…μ˜ μΈμˆ˜ν‘œμ— ν•΄λ‹Ήν•˜λŠ” command_idκ°€ λ°˜ν™˜λ©λ‹ˆλ‹€.

κ°€μž₯ λ‹¨μˆœν•œ 방식은 λ™μ˜μƒκ³Ό SRTλ₯Ό 파일λͺ…이 URL 끝에 ν‘œμ‹œλ˜λŠ” 곡개 HTTP URL λ˜λŠ” 만료 μ‹œκ°„μ΄ μžˆλŠ” μ„œλͺ… URL에 λ‘λŠ” κ²ƒμž…λ‹ˆλ‹€. λ…ΈνŠΈλΆμ˜ 둜컬 κ²½λ‘œλŠ” μž…λ ₯ URL둜 μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€. 둜컬 νŒŒμΌμ€ Rendi의 λ©€ν‹°νŒŒνŠΈ 직접 μ—…λ‘œλ“œ 방식을 μ΄μš©ν•  수 있으며, μ΅œλŒ€ 5 TB νŒŒμΌμ„ μ§€μ›ν•©λ‹ˆλ‹€. λ‹€λ§Œ μ΄λŠ” λ³„λ„μ˜ μ€€λΉ„ λ‹¨κ³„μž…λ‹ˆλ‹€.

μ˜μƒμ— κ³ μ •ν•œ μžλ§‰κ³Ό μ„ νƒν˜• μžλ§‰ νŠΈλž™μ€ λ‹€λ₯Έ κ²°κ³Όλ¬Όμž…λ‹ˆλ‹€

μ˜μƒμ— μž…νžŒ μžλ§‰μ€ λ””μ½”λ”©λ˜λŠ” λͺ¨λ“  ν”„λ ˆμž„μ˜ 일뢀가 λ©λ‹ˆλ‹€. ν™”λ©΄ λͺ¨μ–‘을 μΌκ΄€λ˜κ²Œ μœ μ§€ν•  수 μžˆμ§€λ§Œ, κ·Έ 결정은 되돌릴 수 μ—†μŠ΅λ‹ˆλ‹€. 철자λ₯Ό ν•˜λ‚˜ 고치렀 해도 μ˜μƒμ„ λ‹€μ‹œ λ Œλ”λ§ν•΄μ•Ό ν•˜λ©° μ‹œμ²­μžκ°€ μžλ§‰μ„ 숨길 μˆ˜λ„ μ—†μŠ΅λ‹ˆλ‹€.

μ„ νƒν˜• μžλ§‰ νŠΈλž™μ€ ν™”λ©΄κ³Ό λΆ„λ¦¬λœ μƒνƒœλ‘œ λ‚¨μŠ΅λ‹ˆλ‹€. Rendi의 μžλ§‰ μ˜ˆμ œλ„ MP4의 μ†Œν”„νŠΈ μžλ§‰ νŠΈλž™μ—λŠ” mov_textλ₯Ό ꢌμž₯ν•˜λ©° λΉ„λ””μ˜€ ν•„ν„°λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이 방식은 μ‹œμ²­μžμ˜ μ„ νƒκΆŒμ„ μœ μ§€ν•˜κ³  μžλ§‰μ„ 이미지에 κ΅¬μ›Œ λ„£μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λ™μ˜μƒ λ ˆμ΄μ–΄μ— κ³ μ •λœ μžλ§‰κ³Ό 별도 νŠΈλž™μ— μ €μž₯된 μ„ νƒν˜• μžλ§‰μ„ λΉ„κ΅ν•˜λŠ” μ•„ν‚€ν…μ²˜ κ·Έλ¦Ό
κ³ μ • μžλ§‰μ€ 항상 ν‘œμ‹œλ˜κ³ , μ„ νƒν˜• μžλ§‰μ€ 켜고 끌 수 μžˆμŠ΅λ‹ˆλ‹€. λ Œλ”λ§ 전에 ν•„μš”ν•œ 전달 방식을 λ¨Όμ € μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€.

기쀀은 κ°„λ‹¨ν•©λ‹ˆλ‹€. μ‹œκ°μ  일관성이 μš°μ„ μΈ κ²€μˆ˜μš© λ§ˆμŠ€ν„°λ‚˜ μ†Œμ…œ λ―Έλ””μ–΄μš© νŒŒμΌμ—λŠ” μžλ§‰μ„ μž…νž™λ‹ˆλ‹€. 원본 SRTλŠ” λ°˜λ“œμ‹œ λ³΄κ΄€ν•˜κ³ , μ ‘κ·Όμ„±Β·κ²€μƒ‰Β·λ²ˆμ—­Β·μ‹œμ²­μž 선택이 μ€‘μš”ν•  λ•ŒλŠ” μ„ νƒν˜• νŠΈλž™μ΄λ‚˜ 별도 μžλ§‰ νŒŒμΌλ„ μ œκ³΅ν•©λ‹ˆλ‹€.

λ Œλ”λ§ λΉ„μš©μ„ μ“°κΈ° 전에 SRTλΆ€ν„° ν™•μΈν•©λ‹ˆλ‹€

κ°€μž₯ μ €λ ΄ν•œ λ Œλ”λ§μ€ λ‹€μ‹œ ν•˜μ§€ μ•Šμ•„λ„ λ˜λŠ” λ Œλ”λ§μž…λ‹ˆλ‹€. 이전 νŽΈμ§‘λ³Έμ΄ μ•„λ‹ˆλΌ μ •ν™•ν•œ μ΅œμ’…λ³Έμ— 맞좰 SRTλ₯Ό κ²€μˆ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. μžλ§‰ μˆœμ„œ, μ‹œμž‘ 및 μ’…λ£Œ μ‹œκ°, 이름과 숫자의 철자, μ˜λ„ν•œ μ€„λ°”κΏˆ, λŒ€ν‘œμ μΈ μ•…μ„ΌνŠΈ λ¬Έμžλ‚˜ 비라틴 문자λ₯Ό ν™•μΈν•©λ‹ˆλ‹€. μžλ§‰μ΄ λ‘œμ–΄ μ„œλ“œμ™€ κ²ΉμΉ˜κ±°λ‚˜ ν™”λ©΄ μ•„λž˜μͺ½ κ°€μž₯μžλ¦¬μ— λ„ˆλ¬΄ λΆ™μ§€ μ•ŠλŠ”μ§€λ„ μ‚΄νŽ΄λ΄…λ‹ˆλ‹€.

이 단계에 AI μ „μ‚¬κΉŒμ§€ ν•œλ° λ¬Άμ–΄ μƒκ°ν•˜λ©΄ μ•ˆ λ©λ‹ˆλ‹€. μŒμ„± μΈμ‹μœΌλ‘œ μ•žλ‹¨μ—μ„œ SRT μ΄ˆμ•ˆμ„ λ§Œλ“€ μˆ˜λŠ” μžˆμ§€λ§Œ, 이 μ›Œν¬ν”Œλ‘œμ— λ“€μ–΄μ˜€λŠ” μ‹œμ μ—λŠ” μ‚¬λžŒ λ˜λŠ” μ‹ λ’°ν•  수 μžˆλŠ” κ²€μˆ˜ μ ˆμ°¨κ°€ 문ꡬ와 타이밍을 이미 μŠΉμΈν•œ μƒνƒœμ—¬μ•Ό ν•©λ‹ˆλ‹€. μ—¬κΈ°μ„œ Rendiκ°€ λ§‘λŠ” 일은 λ Œλ”λ§μž…λ‹ˆλ‹€.

μŠ€νƒ€μΌμ„ μ μš©ν•œ Rendi μž‘μ—… μ œμΆœν•˜κΈ°

μ•„λž˜ Node.js μ˜ˆμ œλŠ” Rendiκ°€ κ³΅κ°œν•œ μƒ˜ν”Œ λ™μ˜μƒκ³Ό μƒ˜ν”Œ SRTλ₯Ό μ‚¬μš©ν•˜λ―€λ‘œ 싀행에 ν•„μš”ν•œ 것은 RENDI_API_KEYλΏμž…λ‹ˆλ‹€. νŽ˜μ΄λ‘œλ“œλŠ” Rendi의 ν˜„μž¬ OpenAPI ν•„λ“œλͺ…κ³Ό 별칭 κ·œμΉ™μ„ λ”°λ¦…λ‹ˆλ‹€. force_style 값은 흰색 κΈ€μžμ— 검은색 μ™Έκ³½μ„ κ³Ό μ•„λž˜μͺ½ 여백을 λ§Œλ“€κ³ , libx264와 AACλŠ” Rendi의 μžλ§‰ λ ˆμ‹œν”Όμ— μ„€λͺ…λœ MP4λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

JavaScript
const headers = {
  "X-API-KEY": process.env.RENDI_API_KEY,
  "Content-Type": "application/json",
};

const submit = await fetch("https://api.rendi.dev/v1/run-ffmpeg-command", {
  method: "POST",
  headers,
  body: JSON.stringify({
    input_files: {
      in_video: "https://storage.rendi.dev/sample/big_buck_bunny_720p_16sec.mp4",
      in_srt: "https://storage.rendi.dev/sample/subtitles.srt",
    },
    output_files: { out_1: "subtitled.mp4" },
    ffmpeg_command:
      "-i {{in_video}} -vf \"subtitles={{in_srt}}:force_style='FontSize=22,PrimaryColour=&H00FFFFFF,OutlineColour=&H00000000,BorderStyle=1,Outline=2,Shadow=0,MarginV=36'\" -c:v libx264 -crf 20 -c:a aac -b:a 192k {{out_1}}",
  }),
});

if (!submit.ok) throw new Error(await submit.text());
const { command_id } = await submit.json();

for (;;) {
  const poll = await fetch(
    `https://api.rendi.dev/v1/commands/${command_id}`,
    { headers: { "X-API-KEY": process.env.RENDI_API_KEY } },
  );
  const job = await poll.json();
  if (job.status === "SUCCESS") {
    console.log(job.output_files.out_1);
    break;
  }
  if (job.status === "FAILED") throw new Error(job.error_message);
  await new Promise((resolve) => setTimeout(resolve, 2000));
}

μžλ§‰ ν•„ν„°λŠ” ν”„λ ˆμž„ 자체λ₯Ό λ°”κΎΈλ―€λ‘œ λΉ„λ””μ˜€ μž¬μΈμ½”λ”©μ΄ ν•„μš”ν•©λ‹ˆλ‹€. μŠ€νƒ€μΌ, 코덱, ν’ˆμ§ˆμ€ μ‘°μ •ν•  수 μžˆμ§€λ§Œ, 섀정을 λ°”κΏ€ λ•Œλ§ˆλ‹€ κ²€μˆ˜κ°€ ν•„μš”ν•œ μƒˆλ‘œμš΄ 결과물둜 μ·¨κΈ‰ν•΄μ•Ό ν•©λ‹ˆλ‹€. Rendi의 곡식 FFmpeg μΉ˜νŠΈμ‹œνŠΈμ—λŠ” fontsdir와 FontName을 μ΄μš©ν•œ μ‚¬μš©μž μ§€μ • ν°νŠΈλ„ μ„€λͺ…λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 전체 μ˜μƒ λΌμ΄λΈŒλŸ¬λ¦¬μ— μ μš©ν•˜κΈ° 전에 μ •ν™•ν•œ ν°νŠΈμ™€ 글리프 ꡬ성을 μ‹œν—˜ν•©λ‹ˆλ‹€.

μ‹€μ œλ‘œ κ²€μ¦ν•œ λ²”μœ„

2026λ…„ 9μ›” 11일, μœ„ μ—”λ“œν¬μΈνŠΈμ™€ μš”μ²­ ν•„λ“œ, 별칭 κ·œμΉ™, μƒνƒœκ°’, 응닡 ν•„λ“œλ₯Ό Rendi의 ν˜„μž¬ OpenAPI 파일과 λŒ€μ‘°ν–ˆμŠ΅λ‹ˆλ‹€. λ™μΌν•œ μžλ§‰ ν•„ν„°λ₯Ό FFmpeg 8.0.1μ—μ„œ Rendi의 곡개 μƒ˜ν”Œ λ™μ˜μƒ 및 SRT와 ν•¨κ»˜ 둜컬둜 μ‹€ν–‰ν–ˆμŠ΅λ‹ˆλ‹€. κ·Έ κ²°κ³Ό H.264 λΉ„λ””μ˜€μ™€ AAC μ˜€λ””μ˜€λ₯Ό 담은 16초 길이의 1280 Γ— 720 MP4κ°€ λ§Œλ“€μ–΄μ‘Œκ³ , 5초 μ§€μ μ˜ ν”„λ ˆμž„μ—μ„œ μ˜ˆμƒν•œ μžλ§‰λ„ 눈으둜 ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.

이 ν™˜κ²½μ—λŠ” Rendi API ν‚€κ°€ μ—†μ–΄ Rendi ν΄λΌμš°λ“œ μž‘μ—…μ€ μ œμΆœν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. μ½”λ“œλŠ” μŠ€ν‚€λ§ˆλ₯Ό ν™•μΈν–ˆκ³  FFmpeg μž‘μ—…μ€ 둜컬둜 κ²€μ¦ν–ˆμ§€λ§Œ, ν΄λΌμš°λ“œ μ‹€ν–‰κΉŒμ§€ λ§ˆμ³€λ‹€κ³  μ£Όμž₯ν•˜μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€.

짧은 μž‘μ—…μ€ ν΄λ§ν•˜κ³ , κΈ΄ μž‘μ—…μ€ 웹훅을 μ‚¬μš©ν•©λ‹ˆλ‹€

Rendi의 μƒνƒœ μ—”λ“œν¬μΈνŠΈλŠ” QUEUED, PROCESSING, PREPARED_FFMPEG_COMMAND, FAILED, SUCCESSλ₯Ό λ°˜ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. POST μš”μ²­μ΄ μ ‘μˆ˜λλ‹€κ³  μ™„μ„±λœ μ˜μƒμœΌλ‘œ κ°„μ£Όν•΄μ„œλŠ” μ•ˆ λ©λ‹ˆλ‹€. μ΅œμ’… μƒνƒœκ°€ 될 λ•ŒκΉŒμ§€ 기닀리고, μ‹€νŒ¨ν•˜λ©΄ error_messageλ₯Ό ν‘œμ‹œν•˜λ©°, μ„±κ³΅ν•œ λ’€μ—λ§Œ 결과물을 읽어야 ν•©λ‹ˆλ‹€.

RendiλŠ” μ™„λ£ŒκΉŒμ§€ μ•½ 30초 μ΄ν•˜λ‘œ μ˜ˆμƒλ˜λŠ” μž‘μ—…μ—λŠ” 폴링을, 더 κΈ΄ μž‘μ—…μ—λŠ” 웹훅을 ꢌμž₯ν•©λ‹ˆλ‹€. μ›Ήν›…μ—λŠ” 폴링과 λ™μΌν•œ μ™„λ£Œ λͺ…λ Ή 데이터가 λ‹΄κΉλ‹ˆλ‹€. 운영 ν™˜κ²½μ—μ„œλŠ” μ™„λ£Œ 처리기λ₯Ό λ©±λ“±ν•˜κ²Œ λ§Œλ“€κ³  μ¦‰μ‹œ μ‘λ‹΅ν•˜λ„λ‘ ν•˜λ©°, μ›Ήν›… 전달이 끝내 μ‹€νŒ¨ν•  λ•Œλ₯Ό λŒ€λΉ„ν•΄ 폴링을 볡ꡬ 경둜둜 λ‚¨κ²¨λ‘‘λ‹ˆλ‹€.

λ―Όκ°ν•œ 결과물은 유료 μš”κΈˆμ œμ—μ„œ is_private: true둜 μ„€μ •ν•œ λ’€ 폴링할 λ•Œ 사전 μ„œλͺ… URL을 μš”μ²­ν•©λ‹ˆλ‹€. 기본값은 곡개 μ €μž₯μ†Œμž…λ‹ˆλ‹€. λΉ„κ³΅κ°œ νŒŒμΌμ—λŠ” 영ꡬ 곡개 URL이 μ—†μœΌλ©°, μš”μ²­ν•œ λ‹€μš΄λ‘œλ“œ 링크의 유효 기간은 μ΅œλŒ€ 7μΌμž…λ‹ˆλ‹€.

λŒ€λŸ‰ 처리 전에 결과물을 직접 ν™•μΈν•©λ‹ˆλ‹€

SUCCESSλŠ” FFmpegκ°€ μž‘μ—…μ„ λλƒˆλ‹€λŠ” 뜻일 뿐, μžλ§‰ ν’ˆμ§ˆμ΄ μ’‹λ‹€λŠ” 증λͺ…은 μ•„λ‹™λ‹ˆλ‹€. 기계가 μ½λŠ” 응닡과 μ‹€μ œ 화면을 λͺ¨λ‘ 확인해야 ν•©λ‹ˆλ‹€.

λ¨Όμ € output_files.out_1이 μ‘΄μž¬ν•˜κ³  storage_url이 μ—΄λ¦¬λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€. λ°˜ν™˜λœ μž¬μƒ μ‹œκ°„, 해상도, 코덱, 파일 ν˜•μ‹μ„ λͺ©ν‘œν•œ λ‚©ν’ˆ 사양과 λΉ„κ΅ν•©λ‹ˆλ‹€. 그런 λ‹€μŒ 첫 μžλ§‰, λ§ˆμ§€λ§‰ μžλ§‰, κ°€μž₯ λΉ λ₯Έ λŒ€ν™”, μ€„λ°”κΏˆ, 이름, 숫자, μ»· λ˜λŠ” κ·Έλž˜ν”½ μ˜€λ²„λ ˆμ΄ 근처의 μžλ§‰μ— 특히 μ£Όμ˜ν•˜λ©΄μ„œ 전체 μ˜μƒμ„ μ‹œμ²­ν•©λ‹ˆλ‹€.

이 κ²€μˆ˜λ₯Ό ν†΅κ³Όν•œ 뒀에야 같은 μŠ€νƒ€μΌ 프리셋을 λŒ€κΈ°μ—΄μ— λ„£μ–΄μ•Ό ν•©λ‹ˆλ‹€. 원본 λ™μ˜μƒ 버전, SRT 버전, FFmpeg λͺ…λ Ή, Rendi λͺ…λ Ή ID, 좜λ ₯ 파일 ID, κ²€μˆ˜μžμ˜ 결정을 ν•¨κ»˜ λ³΄κ΄€ν•©λ‹ˆλ‹€. 이런 기둝이 μžˆμ–΄μ•Ό λ‹¨μˆœνžˆ λ Œλ”λ§ 파일이 μŒ“μ΄λŠ” μˆ˜μ€€μ„ λ„˜μ–΄ 운영 κ°€λŠ₯ν•œ μ œμž‘ μ‹œμŠ€ν…œμ΄ λ©λ‹ˆλ‹€.

λΉ„μš©μ€ μ˜μƒ 길이가 μ•„λ‹ˆλΌ λ°”μ΄νŠΈλ‘œ κ³„μ‚°ν•©λ‹ˆλ‹€

RendiλŠ” μž…λ ₯ 미디어와 좜λ ₯ λ―Έλ””μ–΄μ˜ ν•©μ‚° 크기λ₯Ό μ§‘κ³„ν•©λ‹ˆλ‹€. Rendi의 가격 μ˜ˆμ‹œμ—μ„œλŠ” 1 GB μž…λ ₯κ³Ό 0.5 GB 좜λ ₯을 합쳐 μ²˜λ¦¬λŸ‰ 1.5 GB둜 κ³„μ‚°ν•©λ‹ˆλ‹€. 이 μ˜ˆμ‹œλ₯Ό κ·ΈλŒ€λ‘œ μ μš©ν•˜λ©΄ Free μš”κΈˆμ œμ˜ 50 GB μ œκ³΅λŸ‰μœΌλ‘œ 33개 μž‘μ—…μ„ μ™„μ„±ν•˜κ³  0.5 GBκ°€ λ‚¨μœΌλ©°, κΈ°λ³Έ Pro μš”κΈˆμ œμ˜ 250 GBλ‘œλŠ” 166개 μž‘μ—…μ„ μ™„μ„±ν•˜κ³  1 GBκ°€ λ‚¨μŠ΅λ‹ˆλ‹€.

1 GB μž…λ ₯κ³Ό 0.5 GB 좜λ ₯이 1.5 GB μ‚¬μš©λŸ‰μ΄ λ˜λŠ” 계산식과 Free 50 GB 및 Pro 250 GB μ œκ³΅λŸ‰μ„ λ³΄μ—¬μ£ΌλŠ” μ•„ν‚€ν…μ²˜ κ·Έλ¦Ό
RendiλŠ” 읽고 μ“°λŠ” λ°”μ΄νŠΈλ₯Ό κΈ°μ€€μœΌλ‘œ μ‚¬μš©λŸ‰μ„ μ§‘κ³„ν•©λ‹ˆλ‹€. μ˜μƒ κΈΈμ΄λ§ŒμœΌλ‘œλŠ” λΉ„μš©μ„ μ•Œ 수 μ—†μŠ΅λ‹ˆλ‹€.

이 μž‘μ—… μˆ˜λŠ” Rendi의 μ˜ˆμ‹œλ₯Ό λ°”νƒ•μœΌλ‘œ ν•œ μ‚°μˆ  결과이지 μžλ§‰ 처리 λ²€μΉ˜λ§ˆν¬κ°€ μ•„λ‹™λ‹ˆλ‹€. μ‹€μ œ κ³ μ • μžλ§‰ MP4의 ν¬κΈ°λŠ” 원본과 코덱 μ„€μ •, 좜λ ₯에 따라 더 μ»€μ§€κ±°λ‚˜ μž‘μ•„μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€. μ²˜λ¦¬λŸ‰μ„ μ˜ˆμΈ‘ν•˜κΈ° 전에 μ‹€μ œ μž…λ ₯κ³Ό 좜λ ₯의 ν•©μ‚° 크기λ₯Ό μΈ‘μ •ν•©λ‹ˆλ‹€.

FreeλŠ” μ›” $0이며 μ²˜λ¦¬λŸ‰ 50 GBλ₯Ό μ œκ³΅ν•˜κ³  λͺ…λ Ή μ‹€ν–‰ μ‹œκ°„μ„ 1λΆ„μœΌλ‘œ μ œν•œν•©λ‹ˆλ‹€. κΈ°λ³Έ ProλŠ” μ›” $25에 250 GBλ₯Ό μ œκ³΅ν•˜λ©° λͺ…λ Ή μƒν•œμ„ 10λΆ„μœΌλ‘œ λŠ˜λ¦½λ‹ˆλ‹€. 더 큰 CPU ꡬ성과 μ‹€ν–‰ μ‹œκ°„ λ¬΄μ œν•œ ꡬ성은 Rendi 전체 가격 뢄석에 μ •λ¦¬λ˜μ–΄ μžˆμœΌλ―€λ‘œ μ—¬κΈ°μ„œ 같은 ν‘œλ₯Ό λ°˜λ³΅ν•  ν•„μš”λŠ” μ—†μŠ΅λ‹ˆλ‹€.

μ‹€μ œλ‘œ μ€‘μš”ν•œ 비ꡐ 기쀀은 운영 λ°©μ‹μž…λ‹ˆλ‹€. Kapwing ProλŠ” μ—°κ°„ 결제 μ‹œ 멀버당 μ›” $16, μ›”κ°„ 결제 μ‹œ $24둜 μ•ˆλ‚΄λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 가끔 ν•œ λ²ˆμ”© μ²˜λ¦¬ν•œλ‹€λ©΄ μ‹œκ°μ  νŽΈμ§‘κΈ°κ°€ 더 νŽΈν•©λ‹ˆλ‹€. 승인된 에셋을 λ°›μ•„ 반볡 κ°€λŠ₯ν•œ μ‹œμŠ€ν…œ λ‹¨κ³„λ‘œ μžλ§‰ 마무리 μž‘μ—…μ„ μˆ˜ν–‰ν•˜κ³ , λˆ„κ΅°κ°€ νŽΈμ§‘κΈ°λ₯Ό λ‹€μ‹œ μ—΄μ§€ μ•Šμ•„λ„ 과정을 좔적해야 ν•œλ‹€λ©΄ Rendiκ°€ 더 잘 λ§žμŠ΅λ‹ˆλ‹€.

νš¨κ³Όκ°€ κ°€μž₯ 큰 7κ°€μ§€ μ›Œν¬ν”Œλ‘œ

μžλ§‰μ„ μΆ”κ°€ν•˜λŠ” λͺ¨λ“  μ‚¬λžŒμ΄ 졜적의 μ‚¬μš©μžλŠ” μ•„λ‹™λ‹ˆλ‹€. 이미 승인된 SRTκ°€ 있고 μ΅œμ’… λ Œλ”λ§μ„ 계속 λ°˜λ³΅ν•˜λŠ” νŒ€μ— κ°€μž₯ 잘 λ§žμŠ΅λ‹ˆλ‹€.

μˆœμœ„νš¨κ³Όλ₯Ό λ³΄λŠ” μ‚¬μš©μžκ΅¬μ²΄μ μΈ μ›Œν¬ν”Œλ‘œλΉ„μš© λŒ€λΉ„ νš¨κ³Όκ°€ λ‚˜λŠ” 이유
1μ •κΈ°μ μœΌλ‘œ 짧은 μ˜μƒμ„ λ°œν–‰ν•˜λŠ” μ†Œμ…œ μ½˜ν…μΈ  νŒ€μ „μ‚¬λ³Έμ„ μŠΉμΈν•˜κ³ , μ €μž₯된 μžλ§‰ μŠ€νƒ€μΌμ„ μ μš©ν•΄ μ΅œμ’… νŽΈμ§‘λ³Έλ§ˆλ‹€ MP4λ₯Ό λ Œλ”λ§ν•œ λ’€ κ²€μˆ˜ λ‹¨κ³„λ‘œ λ³΄λƒ…λ‹ˆλ‹€ν”Œλž«νΌλ³„ μ‚¬λ³Έμ˜ μ‹œκ°μ  일관성을 μœ μ§€ν•˜λ©΄μ„œ μ—…λ‘œλ“œ, μŠ€νƒ€μΌ μ§€μ •, 내보내기, λ‹€μš΄λ‘œλ“œμ˜ 반볡 μž‘μ—…μ„ μ—†μ•±λ‹ˆλ‹€
2κ²€μˆ˜μš© λ§ˆμŠ€ν„°λ₯Ό λ‚©ν’ˆν•˜λŠ” ν˜„μ§€ν™” μ—μ΄μ „μ‹œμŠΉμΈλœ 각 μ–Έμ–΄μ˜ SRTλ₯Ό 같은 원본과 짝지어 언어별 κ²€μˆ˜μš© MP4에 μž…νžˆκ³  원본 μžλ§‰ νŒŒμΌμ„ λ³΄κ΄€ν•©λ‹ˆλ‹€κ³ κ°μ€ μ‹œμ²­μžμ—κ²Œ λ³΄μ΄λŠ” κ·ΈλŒ€λ‘œ 타이밍과 μœ„μΉ˜λ₯Ό κ²€μˆ˜ν•˜κ³ , μ—μ΄μ „μ‹œλŠ” νŽΈμ§‘ κ°€λŠ₯ν•œ μ–Έμ–΄ 에셋을 μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€
3계속 λŠ˜μ–΄λ‚˜λŠ” κ°•μ˜ 라이브러리λ₯Ό μš΄μ˜ν•˜λŠ” ꡐ윑 μ‚¬μ—…μžκ°•μ˜ λ§ˆμŠ€ν„°μ™€ SRTκ°€ μŠΉμΈμ„ ν†΅κ³Όν•˜λ©΄ μžλ§‰μ΄ μž…ν˜€μ§„ νŒŒμƒλ³Έμ„ λ§Œλ“€κ³ , λ°˜ν™˜λœ μž¬μƒ μ‹œκ°„κ³Ό 해상도λ₯Ό λΉ„κ΅ν•©λ‹ˆλ‹€κ°•μ˜λ§ˆλ‹€ νŽΈμ§‘μžκ°€ μˆ˜μž‘μ—…μœΌλ‘œ μ²˜λ¦¬ν•˜λ˜ μžλ§‰ 마무리λ₯Ό ν†΅μ œλœ μΆœμ‹œ λ‹¨κ³„λ‘œ μ „ν™˜ν•©λ‹ˆλ‹€
4λ™μ˜μƒ λ°œμ·Œλ³Έμ„ λ§Œλ“œλŠ” 팟캐슀트 μŠ€νŠœλ””μ˜€μž¬κ°€κ³΅ λŒ€κΈ°μ—΄μ—μ„œ 승인된 클립과 μˆ˜μ •λœ SRTλ₯Ό ν•˜λ‚˜μ˜ μžλ§‰ ν”„λ¦¬μ…‹μœΌλ‘œ λ³΄λƒ…λ‹ˆλ‹€νŽΈμ§‘μžλŠ” μ΅œμ’… μžλ§‰ 내보내기λ₯Ό λ°˜λ³΅ν•˜λŠ” λŒ€μ‹  ν›„ν‚Ή ν¬μΈνŠΈμ™€ 컷에 집쀑할 수 μžˆμŠ΅λ‹ˆλ‹€
5μ œν’ˆ 데λͺ¨λ₯Ό κ΄€λ¦¬ν•˜λŠ” 지원 νŒ€μŠΉμΈλœ λŒ€λ³Έμ΄λ‚˜ μΈν„°νŽ˜μ΄μŠ€ λ…Ήν™”κ°€ λ°”λ€” λ•Œλ§ˆλ‹€ μžλ§‰μ΄ ν¬ν•¨λœ 데λͺ¨λ₯Ό λ‹€μ‹œ λ Œλ”λ§ν•©λ‹ˆλ‹€μ›λ³Έ, μžλ§‰ 버전, λͺ…λ Ή ID, κ²€μˆ˜λœ 결과물을 κΈ°μ€€μœΌλ‘œ μˆ˜μ • 이λ ₯을 좔적할 수 μžˆμŠ΅λ‹ˆλ‹€
6n8n, Make λ˜λŠ” Zapier둜 κ΅¬μΆ•ν•˜λŠ” μžλ™ν™” μ—μ΄μ „μ‹œμ›Œν¬ν”Œλ‘œμ—μ„œ Rendi μž‘μ—…μ„ μ œμΆœν•˜κ³  폴링 λ˜λŠ” μ›Ήν›…μœΌλ‘œ κΈ°λ‹€λ¦° λ‹€μŒ μ €μž₯된 URL을 승인된 λ‹€μŒ 단계에 μ „λ‹¬ν•©λ‹ˆλ‹€μ œμ•½μ΄ μžˆλŠ” μžλ™ν™” λŸ°νƒ€μž„ λ‚΄λΆ€μ—μ„œ FFmpegλ₯Ό μ‹€ν–‰ν•˜μ§€ μ•Šκ³ λ„ λ―Έλ””μ–΄ 처리λ₯Ό μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€
7κ³Όκ±° μ˜μƒμ„ λ‹€μ‹œ μ°ΎλŠ” λ―Έλ””μ–΄ νŒ€μ˜¬λ°”λ₯Έ 원본 클립을 μ°Ύκ³  승인된 SRTλ₯Ό λΆ™μ—¬ κ³ μ • μžλ§‰ κ²€μˆ˜λ³Έ λ˜λŠ” μ†Œμ…œ λ―Έλ””μ–΄μš© 사본을 λ§Œλ“­λ‹ˆλ‹€κ²€μƒ‰κ³Ό λ Œλ”λ§μ„ ν˜Όλ™ν•˜μ§€ μ•ŠμœΌλ©΄μ„œ 검색 κ²°κ³Όλ₯Ό λ‚©ν’ˆ λ‹¨κ³„λ‘œ μ—°κ²°ν•©λ‹ˆλ‹€. 검색 μ˜μ—­μ€ Reelback λ¦¬λ·°μ—μ„œ λ‹€λ£Ήλ‹ˆλ‹€

μ œν’ˆμœΌλ‘œ λ§Œλ“€ λ§Œν•œ 3κ°€μ§€ 아이디어

1. λΈŒλžœλ“œ κ·œμΉ™μ„ μ§€ν‚€λŠ” 일괄 μžλ§‰ 마무리 도ꡬ

κ°€μž₯ μœ λ§ν•œ κΈ°νšŒμž…λ‹ˆλ‹€. μ½˜ν…μΈ  νŒ€κ³Ό μ—μ΄μ „μ‹œλ₯Ό μœ„ν•΄ κΈ°λŠ₯ λ²”μœ„λ₯Ό 쒁힌 포털을 λ§Œλ“­λ‹ˆλ‹€. λ™μ˜μƒ URL, 승인된 SRT, 이름을 뢙인 μŠ€νƒ€μΌ 프리셋, κ²€μˆ˜ νŽ˜μ΄μ§€, λ‹€μš΄λ‘œλ“œ κ°€λŠ₯ν•œ MP4만 λ°›μœΌλ©΄ λ©λ‹ˆλ‹€. 이 μ œν’ˆμ΄ νŒŒλŠ” 것은 만λŠ₯ νŽΈμ§‘κΈ°κ°€ μ•„λ‹ˆλΌ 반볡 κ°€λŠ₯μ„±κ³Ό 승인 μ ˆμ°¨μž…λ‹ˆλ‹€.

λ―Έκ΅­μ—μ„œλŠ” add subtitles to a videoκ°€ μ›” μ•½ 1,900회 κ²€μƒ‰λ˜λ©° Kapwing ProλŠ” μ—°κ°„ 결제 κΈ°μ€€ 멀버당 μ›” $16λΆ€ν„° μ‹œμž‘ν•©λ‹ˆλ‹€. μ‚¬μš©μž μœ μž…μ„ λ§Œλ“€ 만큼 μˆ˜μš” λ²”μœ„κ°€ λ„“μœΌλ©΄μ„œλ„, λ°˜λ³΅λ˜λŠ” νŒ€ μ›Œν¬ν”Œλ‘œλŠ” 초점이 λΆ„λͺ…ν•œ μ œν’ˆμ„ λ’·λ°›μΉ¨ν•  만큼 κ΅¬μ²΄μ μž…λ‹ˆλ‹€.

판맀 κ°€λŠ₯ν•œ μ΅œμ†Œ λ²„μ „μ—λŠ” μ„œλͺ… URL μž…λ ₯, SRT 검증, λ³€κ²½ν•  수 μ—†λŠ” μ†Œμˆ˜μ˜ λΈŒλžœλ“œ 프리셋, Rendi 제좜, μ›Ήν›… 처리, 좜λ ₯ 메타데이터, μ‚¬λžŒμ˜ 승인 λ˜λŠ” 거절이 ν•„μš”ν•©λ‹ˆλ‹€. λ¬Έμ œλŠ” λ°©μ–΄λ ₯μž…λ‹ˆλ‹€. FFmpeg 호좜 ν•˜λ‚˜λ₯Ό μž…λ ₯ 폼으둜 감싼 μ •λ„λŠ” μ‰½κ²Œ λ³΅μ œλ©λ‹ˆλ‹€. 지속적인 κ°€μΉ˜λŠ” 승인 이λ ₯, μž¬μ‚¬μš©ν•  수 μžˆλŠ” λΈŒλžœλ“œ κ·œμΉ™, 버전 μ—°κ²°, μ•ˆμ •μ μΈ μž₯μ•  λ³΅κ΅¬μ—μ„œ λ‚˜μ™€μ•Ό ν•©λ‹ˆλ‹€.

2. μžλ™ν™”λ₯Ό μš°μ„ ν•œ μžλ§‰ λ Œλ”λ§ API

κ³ κ°μ—κ²Œ FFmpeg 문법을 λ…ΈμΆœν•˜κ³  μ‹Άμ§€ μ•Šμ€ μ—μ΄μ „μ‹œλ₯Ό μœ„ν•΄ μ•ˆμ •μ μΈ μ—”λ“œν¬μΈνŠΈ ν•˜λ‚˜λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. 고객은 λ™μ˜μƒ URL, SRT URL, 프리셋 이름, 콜백 URL을 보내고, μ„œλΉ„μŠ€λŠ” 프리셋을 κ²€μˆ˜λœ λͺ…λ ΉμœΌλ‘œ λ³€ν™˜ν•œ λ’€ ν˜•μ‹μ„ ν†΅μΌν•œ μž‘μ—… κ²°κ³Όλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

Burn subtitles into videoλŠ” λ―Έκ΅­μ—μ„œ μ›” 40회 κ²€μƒ‰λ˜λ©° CPCλŠ” $8.16μž…λ‹ˆλ‹€. κ²€μƒ‰λŸ‰μ€ μž‘μ§€λ§Œ μ˜λ„λŠ” μœ λ‚œνžˆ κ΅¬μ²΄μ μž…λ‹ˆλ‹€. PAA 질문인 β€œSRT μžλ§‰μ„ λ™μ˜μƒμ— 영ꡬ적으둜 μž…νžˆλ €λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Ό ν•˜λ‚˜μš”?β€λŠ” 사싀상 μ œν’ˆ μš”κ΅¬μ‚¬ν•­κ³Ό κ°™μŠ΅λ‹ˆλ‹€.

MVPμ—λŠ” 인증, μš”μ²­ 검증, Rendi μž‘μ—… μ—°κ²°, λ©±λ“±μ„± ν‚€, μ›Ήν›… 검증, μž¬μ‹œλ„μ— μ•ˆμ „ν•œ μƒνƒœ 관리, μ‚¬μš©λŸ‰ 기둝이 ν•„μš”ν•©λ‹ˆλ‹€. λ¬Έμ œλŠ” μœ ν†΅μž…λ‹ˆλ‹€. κ²€μƒ‰λ§ŒμœΌλ‘œλŠ” 사업을 지탱할 수 μ—†κ³ , Rendiκ°€ 이미 기반 APIλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. 이 μ€‘κ°œ μ„œλΉ„μŠ€κ°€ μ„ νƒλ°›μœΌλ €λ©΄ μ—μ΄μ „μ‹œ 연동, 프리셋, 운영 κ°€μ‹œμ„±, μ§€μ›μ—μ„œ μš°μœ„λ₯Ό λ§Œλ“€μ–΄μ•Ό ν•©λ‹ˆλ‹€.

3. μžλ§‰ 사전 κ²€μˆ˜μ™€ 두 κ°€μ§€ κ²°κ³Όλ¬Ό 인계 μ‹œμŠ€ν…œ

ν•˜λ‚˜μ˜ μ΅œμ’… λ™μ˜μƒμ— SRT ν•˜λ‚˜κ°€ λ§žλŠ”μ§€ ν™•μΈν•œ λ‹€μŒ, 승인된 μ‘°ν•©μœΌλ‘œ κ³ μ • μžλ§‰ κ²€μˆ˜μš© MP4와 μ„ νƒν˜• νŠΈλž™μ„ ν¬ν•¨ν•œ λ‚©ν’ˆμš© MP4λ₯Ό ν•¨κ»˜ λ§Œλ“œλŠ” κ²€μˆ˜ 관문을 κ΅¬μΆ•ν•©λ‹ˆλ‹€. μ–΄λ–€ μžλ§‰ 버전이 μ–΄λ–€ νŽΈμ§‘λ³Έμ— λŒ€μ‘ν•˜λŠ”μ§€ 자꾸 λ†“μΉ˜λŠ” ν˜„μ§€ν™”Β·κ΅μœ‘Β·λ―Έλ””μ–΄ 운영 νŒ€μ΄ λŒ€μƒμž…λ‹ˆλ‹€.

μ‹€μ œ PAA 질문인 β€œSRT μžλ§‰μ„ λ™μ˜μƒμ— μ–΄λ–»κ²Œ μΆ”κ°€ν•˜λ‚˜μš”?” μ˜†μ—λŠ” ν˜„μž¬ 검색 κ²°κ³Όμ—μ„œ κ³ μ • μžλ§‰κ³Ό μ„ νƒν˜• μžλ§‰μ„ ν˜Όλ™ν•˜λŠ” 사둀가 λ°˜λ³΅ν•΄μ„œ λ‚˜νƒ€λ‚©λ‹ˆλ‹€. 이 μ œν’ˆμ€ μš΄μ˜μžκ°€ μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€ ꡬ쑰λ₯Ό 직접 κ²°μ •ν•˜μ§€ μ•Šμ•„λ„ 두 μž‘μ—…μ„ λͺ¨λ‘ ν•΄κ²°ν•©λ‹ˆλ‹€.

MVPμ—λŠ” μžλ§‰ ꡬ간 뢄석, μž¬μƒ μ‹œκ°„ 비ꡐ, μ•ˆμ „ μ˜μ—­ 미리보기, 버전 ID, ν†΅μ œλœ FFmpeg 처리 방식 두 κ°€μ§€, 승인 기둝이 ν•„μš”ν•©λ‹ˆλ‹€. λ¬Έμ œλŠ” 기본적인 SRT κ²€μ¦λ§ŒμœΌλ‘œλŠ” ν•˜λ‚˜μ˜ κΈ°λŠ₯일 뿐 νšŒμ‚¬κ°€ 되기 μ–΄λ ΅λ‹€λŠ” μ μž…λ‹ˆλ‹€. νŒ€μ΄ μΆœμ‹œ μ ˆμ°¨μ— μ œν’ˆμ„ 계속 λ‘˜ 만큼 κ²€μˆ˜ 이λ ₯κ³Ό 인계 ν†΅μ œκ°€ κ°€μΉ˜ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

ν•œκ³„μ™€ μ†”μ§ν•œ κ²°λ‘ 

RendiλŠ” 이 μ›Œν¬ν”Œλ‘œμ—μ„œ FFmpeg 인프라λ₯Ό μ—†μ• μ€λ‹ˆλ‹€. ν•˜μ§€λ§Œ νŽΈμ§‘ μ±…μž„κΉŒμ§€ μ—†μ• μ£Όμ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€. 전사본을 μˆ˜μ •ν•˜κ±°λ‚˜ 잘λͺ»λœ 타이밍을 고치고, 읽기 쒋은 μ€„λ°”κΏˆμ„ μ„ νƒν•˜κ±°λ‚˜, κ³ μ • μžλ§‰μ΄ μ˜¬λ°”λ₯Έ μ ‘κ·Όμ„± ν˜•μ‹μΈμ§€ νŒλ‹¨ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λ˜ν•œ μžλ§‰ λ²ˆμΈμ„ λ¬΄μ†μ‹€λ‘œ λ§Œλ“€ 수 μ—†μŠ΅λ‹ˆλ‹€. μžλ§‰ ν•„ν„°κ°€ λΉ„λ””μ˜€ ν”„λ ˆμž„μ„ λ°”κΎΈλ―€λ‘œ μ˜μƒμ€ μž¬μΈμ½”λ”©λ©λ‹ˆλ‹€. ν’ˆμ§ˆ, μ‹€ν–‰ μ‹œκ°„, 좜λ ₯ ν¬κΈ°λŠ” λͺ…λ Ήκ³Ό 원본에 따라 λ‹¬λΌμ§‘λ‹ˆλ‹€. κΈ°λ³Έ API μ•ˆμ „ μ œν•œμ€ 300초이며, μš”μ²­ν•  수 μžˆλŠ” μ΅œλŒ€ μ‹œκ°„μ€ μš”κΈˆμ œκ°€ μ •ν•©λ‹ˆλ‹€. 였래 κ±Έλ¦¬κ±°λ‚˜ μ—°μ‚°λŸ‰μ΄ λ§Žμ€ μž‘μ—…μ—λŠ” μ‹€μ œ 인코딩 μ‹œκ°„μ„ μˆ˜μš©ν•  λͺ…λ Ή μ‹€ν–‰ ν•œλ„μ˜ μš”κΈˆμ œκ°€ ν•„μš”ν•©λ‹ˆλ‹€.

무료 λΈŒλΌμš°μ € λ„κ΅¬λ‘œ μΆ©λΆ„ν•œ μΌνšŒμ„± 클립이라면 이 방식을 μ“°μ§€ μ•Šμ•„λ„ λ©λ‹ˆλ‹€. μ‹œμ²­μžκ°€ μžλ§‰μ„ 켜고 κΊΌμ•Ό ν•œλ‹€λ©΄ μžλ§‰μ„ μ˜μƒμ— μž…νžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€. κ²€μˆ˜ν•˜μ§€ μ•Šμ€ μŠ€νƒ€μΌμ„ 일괄 μž‘μ—…μ— μ μš©ν•΄μ„œλ„ μ•ˆ λ©λ‹ˆλ‹€. 승인된 λ™μΌν•œ 마무리 κ·œμΉ™μ„ λ§Žμ€ 에셋에 μ•ˆμ •μ μœΌλ‘œ λ°˜λ³΅ν•΄μ•Ό ν•  λ•Œ Rendi의 μž₯점이 λΆ„λͺ…ν•΄μ§‘λ‹ˆλ‹€.

μ›”μš”μΌμ— λ°”λ‘œ ν•  일

μ§§κ³  승인된 λ™μ˜μƒ ν•˜λ‚˜μ™€ μ΅œμ’… SRTλ₯Ό μ€€λΉ„ν•©λ‹ˆλ‹€. λ‘˜ λ‹€ Rendiκ°€ κ°€μ Έμ˜¬ 수 μžˆλŠ” URL에 λ‘” λ‹€μŒ μ›ν•˜λŠ” μŠ€νƒ€μΌλ‘œ 예제 νŽ˜μ΄λ‘œλ“œλ₯Ό μ‹€ν–‰ν•˜κ³ , λ°˜ν™˜λœ 메타데이터λ₯Ό ν™•μΈν•˜λ©°, μ§€μ›ν•˜λŠ” κ°€μž₯ μž‘μ€ ν™”λ©΄μ—μ„œ 전체 MP4λ₯Ό μ‹œμ²­ν•©λ‹ˆλ‹€. κ²€μˆ˜λ₯Ό ν†΅κ³Όν•œ λ’€μ—λ§Œ 승인된 λͺ…령을 ν”„λ¦¬μ…‹μœΌλ‘œ μ €μž₯ν•©λ‹ˆλ‹€. λ§ˆμ§€λ§‰μœΌλ‘œ μ›Œν¬ν”Œλ‘œκ°€ λ™μ˜μƒκ³Ό μžλ§‰μ„ 승인 μ™„λ£Œλ‘œ ν‘œμ‹œν•˜λŠ” 지점에 이 프리셋을 μ—°κ²°ν•©λ‹ˆλ‹€.

SRT μžλ§‰μ„ λ™μ˜μƒμ— 영ꡬ적으둜 μž…νžˆλ €λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Ό ν•˜λ‚˜μš”?

FFmpeg의 subtitles λΉ„λ””μ˜€ ν•„ν„°λ‘œ λͺ¨λ“  ν”„λ ˆμž„μ— 문ꡬλ₯Ό λ Œλ”λ§ν•œ λ’€ μƒˆ μ˜μƒμ„ μΈμ½”λ”©ν•©λ‹ˆλ‹€. Rendiμ—μ„œλŠ” 원본 λ™μ˜μƒκ³Ό SRTλ₯Ό in_ 별칭에 μ—°κ²°ν•˜κ³ , MP4 이름을 out_ 별칭에 μ—°κ²°ν•œ λ‹€μŒ λͺ…령을 μ œμΆœν•©λ‹ˆλ‹€. SUCCESSκ°€ 될 λ•ŒκΉŒμ§€ κΈ°λ‹€λ¦° λ’€ λ‹€μš΄λ‘œλ“œν•˜κ³  κ²€μˆ˜ν•©λ‹ˆλ‹€.

λ™μ˜μƒμ— μžλ§‰μ„ μž…νžˆλŠ” 방법은 λ¬΄μ—‡μΈκ°€μš”?

μ΅œμ’… λ™μ˜μƒκ³Ό 승인된 μžλ§‰ νŒŒμΌμ—μ„œ μ‹œμž‘ν•©λ‹ˆλ‹€. 문ꡬ가 항상 보여야 ν•œλ‹€λ©΄ κ³ μ • μžλ§‰ λͺ…령을 μ„ νƒν•˜κ³ , μ‹œμ²­μžκ°€ 직접 μ œμ–΄ν•΄μ•Ό ν•œλ‹€λ©΄ μ„ νƒν˜• μžλ§‰ νŠΈλž™μ„ μ‚¬μš©ν•©λ‹ˆλ‹€. Rendiκ°€ λ¬Έμ„œν™”ν•œ κ³ μ • μžλ§‰ 방식은 -vf subtitles={{in_srt}}λ₯Ό μ‚¬μš©ν•˜λ©° λΉ„λ””μ˜€λ₯Ό μž¬μΈμ½”λ”©ν•©λ‹ˆλ‹€.

SRT μžλ§‰μ„ λ™μ˜μƒμ— μ–΄λ–»κ²Œ μΆ”κ°€ν•˜λ‚˜μš”?

SRTλ₯Ό μ˜μƒ 픽셀에 직접 μž…νžˆκ±°λ‚˜ 별도 μžλ§‰ νŠΈλž™μœΌλ‘œ 첨뢀할 수 μžˆμŠ΅λ‹ˆλ‹€. μ˜μƒμ— μž…νžˆλ©΄ μ–΄λ””μ„œλ‚˜ 같은 λͺ¨μŠ΅μœΌλ‘œ ν‘œμ‹œλ˜μ§€λ§Œ 끌 수 μ—†μŠ΅λ‹ˆλ‹€. μ†Œν”„νŠΈ νŠΈλž™μ€ νŽΈμ§‘κ³Ό 선택이 κ°€λŠ₯ν•©λ‹ˆλ‹€. RendiλŠ” 번인용 subtitles 필터와 μ„ νƒν˜• MP4 νŠΈλž™μš© mov_textλ₯Ό λͺ¨λ‘ λ¬Έμ„œν™”ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

HandBrake둜 λ™μ˜μƒμ— μžλ§‰μ„ μž…νžˆλ €λ©΄ μ–΄λ–»κ²Œ ν•˜λ‚˜μš”?

HandBrakeλŠ” μ™ΈλΆ€ SRTλ₯Ό μΆ”κ°€ν•˜κ³  번인으둜 ν‘œμ‹œν•  수 μžˆλŠ” λ°μŠ€ν¬ν†± μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. 가끔 μˆ˜λ™μœΌλ‘œ μ²˜λ¦¬ν•  λ•Œ 합리적인 μ„ νƒμž…λ‹ˆλ‹€. Rendi의 역할은 λ‹€λ¦…λ‹ˆλ‹€. λ Œλ”λ§μ„ μžλ™ν™” μ‹œμŠ€ν…œ μ•ˆμ— λ„£μ–΄μ•Ό ν•  λ•Œ 같은 FFmpeg μž‘μ—…μ„ API둜 μ œμΆœν•˜κ²Œ ν•΄μ€λ‹ˆλ‹€.

이처럼 κ²€μˆ˜λœ λ―Έλ””μ–΄ νŒŒμ΄ν”„λΌμΈμ„ λΉ„μ¦ˆλ‹ˆμŠ€μ— κ΅¬μΆ•ν•˜λ €λ©΄ AI ν”„λ‘œλ•μ…˜ μ‹œμŠ€ν…œμ„ 확인해 λ³΄μ„Έμš”.

κ²Œμ‹œμΌ
μΉ΄ν…Œκ³ λ¦¬
Build
AI μ—μ΄μ „νŠΈ Gumloop 리뷰: 업무 μžλ™ν™” κΈ°λŠ₯Β·κ°€κ²©Β·ν•œκ³„

AI μ—μ΄μ „νŠΈ Gumloop 리뷰: 업무 μžλ™ν™” κΈ°λŠ₯Β·κ°€κ²©Β·ν•œκ³„

AI μ—μ΄μ „νŠΈ Gumloop의 λ¦¬λ“œ 쑰사, λ¬Έμ„œ 처리, 이메일 μžλ™ν™”λ₯Ό μ‚΄νŽ΄λ΄…λ‹ˆλ‹€. Google SheetsλΆ€ν„° Slack 검토와 Gmail λ°œμ†‘ μŠΉμΈκΉŒμ§€μ˜ μ„€μ • 절차, ν¬λ ˆλ”§ μš”κΈˆ, μ‹€ν–‰ λˆ„λ½κ³Ό 볡ꡬ의 ν•œκ³„, n8nΒ·Zapier λŒ€μ•ˆμ„ 비ꡐ해 λ„μž… 기쀀을 μ •λ¦¬ν•©λ‹ˆλ‹€.2026λ…„ 10μ›” 22일Build
ν•©μ„± 데이터 생성 κ°€μ΄λ“œ: LLM ν•™μŠ΅Β·ν‰κ°€Β·ν…ŒμŠ€νŠΈμ— μ“°λŠ” 법

ν•©μ„± 데이터 생성 κ°€μ΄λ“œ: LLM ν•™μŠ΅Β·ν‰κ°€Β·ν…ŒμŠ€νŠΈμ— μ“°λŠ” 법

ν•©μ„± 데이터λ₯Ό LLM 평가, νŒŒμΈνŠœλ‹, μ†Œν”„νŠΈμ›¨μ–΄ ν…ŒμŠ€νŠΈμ— 맞게 λ§Œλ“œλŠ” 방법을 μ„€λͺ…ν•©λ‹ˆλ‹€. 고객 지원 ν‹°μΌ“ 예제둜 μ‹œλ“œ 섀계뢀터 생성, 필터링, 쀑볡 제거, μ‚¬λžŒμ˜ κ²€ν† κΉŒμ§€ 따라가며, νˆ΄λ³„ μ—­ν• κ³Ό 배치 ν•œλ„, 좜λ ₯λ¬Ό ν•™μŠ΅ μ•½κ΄€, κ°œμΈμ •λ³΄ 보호 점검 기쀀을 ν™•μΈν•©λ‹ˆλ‹€.2026λ…„ 10μ›” 22일Build
RLHFλž€? 인간 ν”Όλ“œλ°± κ°•ν™”ν•™μŠ΅κ³Ό DPO, νŒŒμΈνŠœλ‹ ν™œμš©λ²•

RLHFλž€? 인간 ν”Όλ“œλ°± κ°•ν™”ν•™μŠ΅κ³Ό DPO, νŒŒμΈνŠœλ‹ ν™œμš©λ²•

RLHFκ°€ μ‚¬λžŒμ˜ 평가λ₯Ό λͺ¨λΈμ˜ ν–‰λ™μœΌλ‘œ λ°”κΎΈλŠ” 원리뢀터 DPOΒ·AI ν”Όλ“œλ°±Β·κ²€μ¦ κ°€λŠ₯ν•œ λ³΄μƒμ˜ μ°¨μ΄κΉŒμ§€ μ‚΄νŽ΄λ΄…λ‹ˆλ‹€. 고객 지원 μ˜ˆμ‹œλ‘œ μ„ ν˜Έλ„ 데이터λ₯Ό κ΅¬μ„±ν•˜λŠ” 법과 μ†Œκ·œλͺ¨ 기업이 ν™œμš©ν•  νŒŒμΈνŠœλ‹ μ„œλΉ„μŠ€μ˜ 쑰건을 짚고, ν•™μŠ΅μ„ μ‹œμž‘ν•˜κΈ° 전에 확인할 평가 기쀀도 μ •λ¦¬ν•©λ‹ˆλ‹€.2026λ…„ 10μ›” 22일Build
LLM λΌμš°ν„° λ„μž… κ°€μ΄λ“œ: λͺ¨λΈ 선택뢀터 λΉ„μš©Β·ν’ˆμ§ˆ κ²€μ¦κΉŒμ§€

LLM λΌμš°ν„° λ„μž… κ°€μ΄λ“œ: λͺ¨λΈ 선택뢀터 λΉ„μš©Β·ν’ˆμ§ˆ κ²€μ¦κΉŒμ§€

LLM λΌμš°ν„°λŠ” μ–΄λ–€ μš”μ²­μ„ μ†Œν˜• λͺ¨λΈμ— 맑겨야 ν• κΉŒμš”? 고객 지원 μ•±μ˜ λΌμš°νŒ… μ •μ±…κ³Ό μž¬μ‹œλ„λ₯Ό ν¬ν•¨ν•œ λΉ„μš© κ³„μ‚°μœΌλ‘œ νŒλ‹¨ 기쀀을 μ‚΄νŽ΄λ΄…λ‹ˆλ‹€. OpenRouter, LiteLLM λ“± μ£Όμš” μ œν’ˆμ˜ 선택 방식뢀터 λ³„λ„λ‘œ 남겨 λ‘” 평가 μ„ΈνŠΈλ‘œ ν’ˆμ§ˆμ„ κ²€μ¦ν•˜λŠ” μ ˆμ°¨κΉŒμ§€ μ •λ¦¬ν•©λ‹ˆλ‹€.2026λ…„ 10μ›” 21일Build
ν”„λ‘¬ν”„νŠΈ 캐싱과 μ‹œλ§¨ν‹± 캐싱, LLM 닡변은 μ–Έμ œ μž¬μ‚¬μš©ν•΄λ„ 될까?

ν”„λ‘¬ν”„νŠΈ 캐싱과 μ‹œλ§¨ν‹± 캐싱, LLM 닡변은 μ–Έμ œ μž¬μ‚¬μš©ν•΄λ„ 될까?

ν”„λ‘¬ν”„νŠΈ 캐싱과 μ‹œλ§¨ν‹± μΊμ‹±μ˜ 차이뢀터 LLM 닡변을 μž¬μ‚¬μš©ν•˜λŠ” 4λ‹¨κ³„κΉŒμ§€ μ„€λͺ…ν•©λ‹ˆλ‹€. μœ μ‚¬λ„ μž„κ³„κ°’, TTL, μ‚¬μš©μžλ³„ λ²”μœ„λ‘œ 잘λͺ»λœ 닡변을 λ§‰λŠ” 방법과 KongΒ·RedisΒ·GPTCache κ΅¬ν˜„ 방식, μ‹€μ œ μš”μ²­μ„ κΈ°μ€€μœΌλ‘œ λΉ„μš© 절감 효과λ₯Ό κ³„μ‚°ν•˜λŠ” 방법을 μ‚΄νŽ΄λ΄…λ‹ˆλ‹€.2026λ…„ 10μ›” 21일Build
Pydantic AI와 LangChain 비ꡐ: νƒ€μž… 검증뢀터 μ›Œν¬ν”Œλ‘œκΉŒμ§€

Pydantic AI와 LangChain 비ꡐ: νƒ€μž… 검증뢀터 μ›Œν¬ν”Œλ‘œκΉŒμ§€

Pydantic AI와 LangChain 쀑 Python μ„œλΉ„μŠ€μ— λ§žλŠ” ν”„λ ˆμž„μ›Œν¬λ₯Ό κ³ λ₯΄λŠ” 기쀀을 μ •λ¦¬ν•©λ‹ˆλ‹€. 같은 고객 문의 λΆ„λ₯˜ μ½”λ“œλ‘œ κ΅¬μ‘°ν™”λœ 좜λ ₯κ³Ό νƒ€μž… 검증을 λΉ„κ΅ν•˜κ³ , LangGraph의 μ‹€ν–‰ 재개, νŠΈλ ˆμ΄μ‹±, 평가, ν”„λ ˆμž„μ›Œν¬ μ „ν™˜ μ‹œ μ£Όμ˜ν•  μ κΉŒμ§€ μ‚΄νŽ΄λ΄…λ‹ˆλ‹€.2026λ…„ 10μ›” 21일Build
Cursor 가격뢀터 ν˜‘μ—…κΉŒμ§€: Zed와 λΉ„κ΅ν•˜λŠ” AI μ½”λ“œ 에디터

Cursor 가격뢀터 ν˜‘μ—…κΉŒμ§€: Zed와 λΉ„κ΅ν•˜λŠ” AI μ½”λ“œ 에디터

Cursor 가격과 Zed μš”κΈˆλΆ€ν„° νŽΈμ§‘ κ²½ν—˜, μ—μ΄μ „νŠΈ, λͺ¨λΈ 선택, νŒ€ ν˜‘μ—…κΉŒμ§€ λΉ„κ΅ν•©λ‹ˆλ‹€. 개인과 5인 νŒ€μ˜ μ›” λΉ„μš©μ„ 같은 토큰 μ‚¬μš©λŸ‰μœΌλ‘œ κ³„μ‚°ν•˜κ³ , Zedμ—μ„œ Cursor μ—μ΄μ „νŠΈλ₯Ό μ“°λŠ” 방법과 MCPΒ·λŒ€ν™” 이λ ₯의 μ œν•œ, μ „ν™˜ μ „ 확인할 ν˜Έν™˜μ„±μ„ μ§šμ–΄ λ΄…λ‹ˆλ‹€.2026λ…„ 10μ›” 21일Build
AI μΆ”λ‘ μ˜ μž‘λ™ 원리: LLM 응닡 μ‹œκ°„κ³Ό μ„œλΉ™ 선택 κΈ°μ€€

AI μΆ”λ‘ μ˜ μž‘λ™ 원리: LLM 응닡 μ‹œκ°„κ³Ό μ„œλΉ™ 선택 κΈ°μ€€

AI μΆ”λ‘ μ˜ 프리필과 λ””μ½”λ“œλŠ” 무엇이 λ‹€λ₯ΌκΉŒμš”? 첫 토큰 μ§€μ—° μ‹œκ°„κ³Ό 생성 속도λ₯Ό λ”°λ‘œ μΈ‘μ •ν•˜κ³ , μΊμ‹±Β·λ°°μΉ­Β·μ–‘μžν™”κ°€ μ€„μ΄λŠ” μž‘μ—…μ„ μ‚΄νŽ΄λ΄…λ‹ˆλ‹€. 곡개 API μ‘λ‹΅μ˜ 계산 μ˜ˆμ œμ™€ ν•¨κ»˜ λͺ¨λΈ API, μΆ”λ‘  μ„œλΉ„μŠ€ 업체, 자체 GPU 운영 쀑 무엇을 선택할지 νŒλ‹¨ν•  기쀀을 μ •λ¦¬ν•©λ‹ˆλ‹€.2026λ…„ 10μ›” 21일Build
λ‰΄μŠ€λ ˆν„°

λ§€μ£Ό μΌμš”μΌ, ν•œ ν†΅μ˜ νŽΈμ§€.뜨거운 의견이 μ•„λ‹Œ, λŒμ•„κ°€λŠ” μ‹œμŠ€ν…œ.

μ£Όκ°„ λ°œν–‰. 슀팸 μ—†μŒ. μ–Έμ œλ“  ν•΄μ§€ κ°€λŠ₯ν•©λ‹ˆλ‹€.