التثبيت من PyPI
pip install seeknetic أمثلة Python وJavaScript للمعالجة المحلية المسبقة والمهام غير المتزامنة والفيديوهات المستضافة.
تحتفظ الشيفرة ومعرّفات API وقيم الطلبات بلغتها التقنية الأصلية.
Shot Detection أداة Python مستقلة لتقسيم الفيديو إلى لقطات ذات توقيت بداية ونهاية. استخدمها مع Seeknetic SDK لإنشاء سير عمل لمعالجة كل لقطة.
حلّل الفيديو للحصول على توقيت بداية كل لقطة ونهايتها.
مرّر النطاق الزمني لكل لقطة إلى المعالجة المحلية المسبقة في SDK، ثم أرسل مهمة ترميز أو وسم.
احفظ المتجهات والبيانات الوصفية في تطبيقك، مع ربط كل نتيجة بالملف الأصلي وتوقيته.
تحدّد Shot Detection حدود اللقطات. يتطلب الترميز والوسم تثبيت Seeknetic SDK بشكل منفصل وإتاحة API، وتُطبّق أسعار API المنشورة.
pip install seeknetic ثبّت ffmpeg أولاً وتأكد من وجود ffmpeg وffprobe في PATH.
التثبيت وأول طلب لتضمين النص.
pip install seeknetic استخدم عميل Python المتزامن للطلب الأول، ثم انتقل إلى غير المتزامن إذا احتجت إلى تنفيذ متوازٍ أكثر.
import os
from seeknetic import Seeknetic
client = Seeknetic(
api_key=os.environ["SEEKNETIC_API_KEY"],
)
response = client.video_embedding.encode_text(
text="a person walking on the beach"
)
print(len(response.embedding)) موصى به للملفات المحلية. ثبّت ffmpeg قبل استخدام preprocess_and_upload(...).
يبقى الفيديو الأصلي محلياً. يرفع هذا المسار الموترات المعالجة مسبقاً فقط. استخدم service="embedding" مع video_embedding.encode_video.submit_async(...) وservice="tagging" مع video_tagging.submit_async_job(...).
import os
from seeknetic import Seeknetic
client = Seeknetic(api_key=os.environ["SEEKNETIC_API_KEY"])
upload = client.preprocess_and_upload(
video_path="sample.mp4",
service="embedding",
request_id="emb-task-0001",
start_ms=0,
end_ms=10_000,
)
print(upload.request_id)
print(upload.r2_keys) import os
from seeknetic import Seeknetic
client = Seeknetic(api_key=os.environ["SEEKNETIC_API_KEY"])
upload = client.preprocess_and_upload(
video_path="sample.mp4",
service="embedding",
request_id="emb-task-0001",
)
job = client.video_embedding.encode_video.submit_async(
tensor={
"video_input_key": upload.r2_keys["video_input"],
"audio_input_key": upload.r2_keys["audio_input"],
},
request_id=upload.request_id,
)
print(job.request_id, job.status) import os
from seeknetic import Seeknetic
client = Seeknetic(api_key=os.environ["SEEKNETIC_API_KEY"])
status = client.async_status.retrieve("emb-task-0001")
print(status.status)
print(status.embedding) import os
from seeknetic import Seeknetic
client = Seeknetic(api_key=os.environ["SEEKNETIC_API_KEY"])
upload = client.preprocess_and_upload(
video_path="sample.mp4",
service="tagging",
request_id="tag-task-0001",
start_ms=0,
end_ms=10_000,
)
print(upload.request_id)
print(upload.r2_keys) import os
from seeknetic import Seeknetic
client = Seeknetic(api_key=os.environ["SEEKNETIC_API_KEY"])
upload = client.preprocess_and_upload(
video_path="sample.mp4",
service="tagging",
request_id="tag-task-0001",
)
job = client.video_tagging.submit_async_job(
tensor={
"video_input_key": upload.r2_keys["video_input"],
"video_kwargs_key": upload.r2_keys["video_kwargs"],
},
request_id=upload.request_id,
)
print(job.request_id, job.status) import os
from seeknetic import Seeknetic
client = Seeknetic(api_key=os.environ["SEEKNETIC_API_KEY"])
status = client.async_status.retrieve("tag-task-0001")
print(status.status)
print(status.tags) أرسل video_url مباشرة عندما لا تحتاج إلى معالجة محلية مسبقة.
import os
from seeknetic import Seeknetic
client = Seeknetic(api_key=os.environ["SEEKNETIC_API_KEY"])
job = client.video_embedding.encode_video.submit_async(
video_url="https://example.com/video.mp4",
)
print(job.request_id, job.status) import os
from seeknetic import Seeknetic
client = Seeknetic(api_key=os.environ["SEEKNETIC_API_KEY"])
status = client.async_status.retrieve("emb-task-0001")
print(status.status)
print(status.embedding) import os
from seeknetic import Seeknetic
client = Seeknetic(api_key=os.environ["SEEKNETIC_API_KEY"])
job = client.video_tagging.submit_async_job(
video_url="https://example.com/video.mp4",
)
print(job.request_id, job.status) import os
from seeknetic import Seeknetic
client = Seeknetic(api_key=os.environ["SEEKNETIC_API_KEY"])
status = client.async_status.retrieve("tag-task-0001")
print(status.status)
print(status.tags) يوثّق README أيضاً دعم aiohttp لزيادة التنفيذ المتوازي.
pip install seeknetic[aiohttp] import os
import asyncio
from seeknetic import DefaultAioHttpClient
from seeknetic import AsyncSeeknetic
async def main() -> None:
async with AsyncSeeknetic(
api_key=os.environ.get("SEEKNETIC_API_KEY"),
http_client=DefaultAioHttpClient(),
) as client:
response = await client.video_embedding.encode_text(
text="a person walking on the beach"
)
print(len(response.embedding))
asyncio.run(main()) npm install seeknetic ثبّت ffmpeg أولاً وتأكد من وجود ffmpeg وffprobe في PATH.
التثبيت وأبسط مثال لتضمين النص من README.
npm install seeknetic import Seeknetic from 'seeknetic';
const client = new Seeknetic({
apiKey: process.env['SEEKNETIC_API_KEY'],
});
const response = await client.videoEmbedding.encodeText({
text: 'a person walking on the beach',
});
console.log(response.embedding.length); موصى به للملفات المحلية. ثبّت ffmpeg قبل استخدام preprocessAndUpload(...).
يبقى الفيديو الأصلي محلياً. يرفع هذا المسار الموترات المعالجة مسبقاً فقط. يُستخدم service: "embedding" مع videoEmbedding.encodeVideo.submitAsync(...) وservice: "tagging" مع videoTagging.submitAsyncJob(...).
import Seeknetic from 'seeknetic';
const client = new Seeknetic({
apiKey: process.env['SEEKNETIC_API_KEY'],
});
const upload = await client.preprocessAndUpload({
videoPath: 'sample.mp4',
service: 'embedding',
requestId: 'emb-task-0001',
startMs: 0,
endMs: 10_000,
});
console.log(upload.request_id);
console.log(upload.r2_keys); import Seeknetic from 'seeknetic';
const client = new Seeknetic({
apiKey: process.env['SEEKNETIC_API_KEY'],
});
const upload = await client.preprocessAndUpload({
videoPath: 'sample.mp4',
service: 'embedding',
requestId: 'emb-task-0001',
});
const job = await client.videoEmbedding.encodeVideo.submitAsync({
tensor: {
video_input_key: upload.r2_keys['video_input'],
audio_input_key: upload.r2_keys['audio_input'],
},
request_id: upload.request_id,
});
console.log(job.request_id, job.status); import Seeknetic from 'seeknetic';
const client = new Seeknetic({
apiKey: process.env['SEEKNETIC_API_KEY'],
});
const status = await client.asyncStatus.retrieve('emb-task-0001');
console.log(status.status);
console.log(status.embedding); import Seeknetic from 'seeknetic';
const client = new Seeknetic({
apiKey: process.env['SEEKNETIC_API_KEY'],
});
const upload = await client.preprocessAndUpload({
videoPath: 'sample.mp4',
service: 'tagging',
requestId: 'tag-task-0001',
startMs: 0,
endMs: 10_000,
});
console.log(upload.request_id);
console.log(upload.r2_keys); import Seeknetic from 'seeknetic';
const client = new Seeknetic({
apiKey: process.env['SEEKNETIC_API_KEY'],
});
const upload = await client.preprocessAndUpload({
videoPath: 'sample.mp4',
service: 'tagging',
requestId: 'tag-task-0001',
});
const job = await client.videoTagging.submitAsyncJob({
tensor: {
video_input_key: upload.r2_keys['video_input'],
video_kwargs_key: upload.r2_keys['video_kwargs'],
},
request_id: upload.request_id,
});
console.log(job.request_id, job.status); import Seeknetic from 'seeknetic';
const client = new Seeknetic({
apiKey: process.env['SEEKNETIC_API_KEY'],
});
const status = await client.asyncStatus.retrieve('tag-task-0001');
console.log(status.status);
console.log(status.tags); أرسل video_url مباشرة عندما لا تحتاج إلى معالجة محلية مسبقة.
import Seeknetic from 'seeknetic';
const client = new Seeknetic({
apiKey: process.env['SEEKNETIC_API_KEY'],
});
const job = await client.videoEmbedding.encodeVideo.submitAsync({
video_url: 'https://example.com/video.mp4',
});
console.log(job.request_id, job.status); import Seeknetic from 'seeknetic';
const client = new Seeknetic({
apiKey: process.env['SEEKNETIC_API_KEY'],
});
const status = await client.asyncStatus.retrieve('emb-task-0001');
console.log(status.status);
console.log(status.embedding); import Seeknetic from 'seeknetic';
const client = new Seeknetic({
apiKey: process.env['SEEKNETIC_API_KEY'],
});
const job = await client.videoTagging.submitAsyncJob({
video_url: 'https://example.com/video.mp4',
});
console.log(job.request_id, job.status); import Seeknetic from 'seeknetic';
const client = new Seeknetic({
apiKey: process.env['SEEKNETIC_API_KEY'],
});
const status = await client.asyncStatus.retrieve('tag-task-0001');
console.log(status.status);
console.log(status.tags);