> ## Documentation Index
> Fetch the complete documentation index at: https://docs.youka.io/llms.txt
> Use this file to discover all available pages before exploring further.

# التصديرات

> اعرض فيديوهات الكاريوكي في السحابة أو محليًا

تقوم التصديرات بإخراج كاريوكي مكتمل كملف فيديو. استخدم `client.exports.create(...)` كنقطة الدخول الرئيسية. اختر `target: "local"` عندما تريد أن تقوم حزمة SDK بالتصيير مباشرةً على الجهاز الحالي؛ وإلا فالتصدير السحابي هو الخيار الافتراضي.

## `client.exports.create(projectId, input, options?)`

اختر وجهة التصدير باستخدام `target: "cloud" | "local"`.

```ts theme={null}
const cloud = await client.exports.create("prj_abc123", {
  resolution: "1080p",
  quality: "high",
});
// => ExportOperation

const local = await client.exports.create("prj_abc123", {
  target: "local",
  resolution: "1080p",
  quality: "high",
  outputPath: "./karaoke.mp4",
});
// => { outputPath, fileSize, duration, ... }
```

استخدم السحابة عندما تريد تصديرًا مُدارًا وغير متزامن. واستخدم المحلي عندما تريد التصيير مباشرةً على جهاز المستدعي.

### الحقول الشائعة

| الحقل              | النوع                                 | الوصف                                                                          |
| ------------------ | ------------------------------------- | ------------------------------------------------------------------------------ |
| `resolution`       | `"540p" \| "720p" \| "1080p" \| "4k"` | دقة الإخراج.                                                                   |
| `quality`          | `"low" \| "average" \| "high"`        | جودة الترميز.                                                                  |
| `fps`              | `30 \| 60`                            | عدد الإطارات في الثانية. القيمة الافتراضية `30`. استخدم `60` لحركة أكثر سلاسة. |
| `playbackRate`     | `number`                              | مُضاعِف السرعة (مثلًا `0.9`).                                                  |
| `toneFrequency`    | `number`                              | تغيير الطبقة بالنصف نغمة (semitones).                                          |
| `transparent`      | `boolean`                             | التصيير بخلفية شفافة.                                                          |
| `presetId`         | `string`                              | تطبيق إعداد مسبق قبل التصيير.                                                  |
| `stemVolumes`      | `Record<string, number>`              | تجاوزات مستوى الصوت لكل stem بمفتاح معرّف stem.                                |
| `settingsOverride` | `object`                              | تطبيق تصحيح لإعدادات المشروع لهذا التصدير فقط.                                 |

استخدم `fps: 60` للحصول على حركة أكثر سلاسة. تطبق عروض الأسعار السحابية مضاعف credits بمقدار `1.5x` عند `60 fps`. تتوفر الصادرات السحابية الشفافة بسرعة 60 fps عندما تكون المدة والدقة المحددتان ضمن حدود السحابة.

### مثال مع أحجام الصوت للـ stem

```ts theme={null}
const result = await client.exports.create("prj_abc123", {
  resolution: "1080p",
  quality: "high",
  stemVolumes: {
    vocals: 0,
    instrumental: 1,
    backing: 0.5,
  },
});
```

### مثال مع تجاوز الإعدادات

```ts theme={null}
const result = await client.exports.create("prj_abc123", {
  resolution: "1080p",
  settingsOverride: {
    trim: { startSeconds: 5, endSeconds: 180 },
    style: {
      background: { type: "color", color: "#101010" },
    },
  },
});
```

راجع [مرجع إعدادات التصيير](/en/render-settings-reference) للحصول على البنية الكاملة لـ
`settingsOverride`.

## `client.exports.quote(projectId, input, options?)`

تقدير الأرصدة المطلوبة لتصدير سحابي دون بدء التصدير.

```ts theme={null}
const quote = await client.exports.quote("prj_abc123", {
  resolution: "1080p",
  quality: "high",
  transparent: false,
});

console.log(quote.creditsRequired, quote.sufficientBalance);
```

تعمل التصديرات المحلية على جهاز المستدعي ولا تستخدم أرصدة التصدير السحابي،
لذا فإن `quote(...)` مخصص للتصديرات السحابية فقط.

## `client.exports.list(projectId, input?, options?)`

عرض قائمة التصديرات لمشروع ما، مع ترقيم الصفحات.

```ts theme={null}
const exports = await client.exports.list("prj_abc123", {
  page: 1,
  pageSize: 50,
});
```

<ParamField path="page" type="number">
  رقم الصفحة. القيمة الافتراضية هي `1` على الخادم.
</ParamField>

<ParamField path="pageSize" type="number">
  حجم الصفحة. القيمة الافتراضية `100`. الحد الأقصى `100`.
</ParamField>

## `client.exports.get(exportId, options?)`

جلب تصدير بواسطة المعرّف فقط، دون الحاجة لمعرفة المشروع الأب.

```ts theme={null}
const exported = await client.exports.get("exp_xyz");
```

## التصدير المحلي

```ts theme={null}
const result = await client.exports.create("prj_abc123", {
  target: "local",
  resolution: "1080p",
  quality: "high",
  outputPath: "./karaoke.mp4",
  onProgress(progress) {
    console.log(progress.stage, progress.percent);
  },
});

console.log(result.outputPath);
```

استخدم `onDependencyProgress` إذا كنت تريد تحديثات أثناء تثبيت سلسلة أدوات التصيير المحلي أو التحقق منها.

## `client.exports.prepareLocal(projectId, body, options?)`

إرجاع الحمولة المُحضَّرة اللازمة لتصيير تصدير محليًا. استخدم هذا عند التكامل مع `@youka/remotion` أو أي مصيّر محلي آخر. يعيد الخادم مُدخلات التركيبة (composition inputs)، وعناوين URLs للأصول، ومعلمات التصيير دون وضع تصيير سحابي في قائمة الانتظار.

```ts theme={null}
const payload = await client.exports.prepareLocal("prj_abc123", {
  resolution: "1080p",
  quality: "high",
});

// Hand payload off to your local renderer
await renderLocally(payload);
```

<Note>
  `client.exports.prepareLocal(...)` لا يبدأ تصييرًا سحابيًا. لا يتم استهلاك أي
  حوسبة قابلة للفوترة من جهة Youka.
</Note>

## انتظار اكتمال التصدير

التصديرات السحابية غير متزامنة. استخدم `client.exports.wait(...)`:

```ts theme={null}
const operation = await client.exports.create("prj_abc123", {
  resolution: "1080p",
});

const finalized = await client.exports.wait(operation, {
  pollIntervalMs: 3_000,
});
console.log("Download from", finalized.url);
```

## تنزيل النتيجة

تنتهي التصديرات السحابية بعنوان `url` مُوقّع. استخدم المساعد المدمج لبث الملف إلى القرص. يمكن أن يكون `output` إما دليلًا أو مسار ملف كاملًا، و`filename` اختياري:

```ts theme={null}
await client.exports.download(finalized, {
  output: "./exports",
});
```

## ما التالي

* [Tasks](/ar/sdk/tasks) — معالجات العمليات واستطلاع المهام المتقدم
* [Presets](/ar/sdk/presets) — إعدادات تصيير قابلة لإعادة الاستخدام
* [Project settings](/ar/sdk/project-settings) — تطبيق تصحيح على إعدادات المشروع النشطة
