Installer depuis PyPI
pip install seeknetic Exemples Python et JavaScript pour le prétraitement local, les tâches asynchrones et les vidéos hébergées.
Le code, les identifiants API et les valeurs des requêtes conservent leur langue technique d’origine.
Shot Detection est un outil Python autonome qui découpe les vidéos en plans avec leurs horodatages de début et de fin. Associez-le au SDK Seeknetic pour traiter chaque plan.
Analysez la vidéo pour obtenir le début et la fin de chaque plan.
Transmettez chaque plage temporelle au prétraitement local du SDK, puis lancez l’encodage ou l’annotation.
Stockez les vecteurs et métadonnées dans votre application en conservant les liens vers les fichiers et horodatages sources.
Shot Detection délimite les plans. L’encodage et l’annotation nécessitent le SDK Seeknetic et un accès API, facturé aux tarifs publiés.
pip install seeknetic Installez d’abord ffmpeg et assurez-vous que ffmpeg et ffprobe sont dans le PATH.
Installation et première requête d’embedding de texte.
pip install seeknetic Utilisez le client Python synchrone pour la première requête. Passez à l’asynchrone si vous avez besoin de plus de concurrence.
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)) Recommandé pour les fichiers locaux. Installez ffmpeg avant d’utiliser preprocess_and_upload(...).
Votre vidéo originale reste locale. Seuls les tenseurs prétraités sont envoyés. Utilisez service="embedding" avec video_embedding.encode_video.submit_async(...) et service="tagging" avec 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) Soumettez directement video_url si le prétraitement local n’est pas nécessaire.
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) Le README documente aussi aiohttp pour une concurrence plus élevée.
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 Installez d’abord ffmpeg et assurez-vous que ffmpeg et ffprobe sont dans le PATH.
Installation et exemple minimal d’embedding de texte du 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); Recommandé pour les fichiers locaux. Installez ffmpeg avant d’utiliser preprocessAndUpload(...).
Votre vidéo originale reste locale. Seuls les tenseurs prétraités sont envoyés. service: "embedding" s’utilise avec videoEmbedding.encodeVideo.submitAsync(...), et service: "tagging" avec 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); Soumettez directement video_url si le prétraitement local n’est pas nécessaire.
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);