| gpac(1) | GPAC | gpac(1) |
نام (NAME)
gpac - مدیر نشست فیلتر خط فرمان GPAC
خلاصه دستور (SYNOPSIS)
gpac [options]FILTER[LINK]FILTER[...]
توضیحات (DESCRIPTION)
این صفحه تمام فیلترهایی را که معمولاً در GPAC وجود دارند، توصیف میکند.
برای بررسی راهنمای فیلتری که در اینجا فهرست نشده است، از gpac -h myfilter استفاده کنید.
inspect
شرح: بازرس بسته (Packet inspector)
فیلتر inspect میتواند برای استخراج (dump) PID و بستهها استفاده شود. همچنین میتواند برای بررسی بخشهایی از بار مفید (payload) بستهها به کار رود.
گزینههای
پیشفرض
تنها
تغییرات PID
را بازرسی
میکنند.
اگر .I full تنظیم
نشده باشد، .I
mode به frame اجبار
میشود و
مشخصههای PID
به صورت
خوانا برای
انسان، یک PID
در هر خط
قالببندی
میشوند.
در غیر این
صورت، تمام
مشخصهها
استخراج
میشوند.
نکته: تعیین .I
xml، .I analyze، .I fmt یا
استفاده از
-for-test مقدار .I full را
به true اجبار
خواهد کرد.
استخراج سفارشی مشخصهها (Custom property dumping)
بازرس
بسته
میتواند
برای
استخراج
مشخصههای
معینی از
بستهها با
استفاده از .I
fmt پیکربندی
شود.
هنگامی که
این گزینه
ارائه نشده
باشد، تمام
مشخصهها
استخراج
میشوند. در
غیر این
صورت، تنها
مشخصههای
تعیینشده
با $TOKEN$ چاپ
میشوند.
میتوانید
از '$'، '@' یا '%' به
عنوان
جداکننده TOKEN
استفاده
کنید. مقدار
TOKEN میتواند
یکی از
موارد زیر
باشد:
* pn: شماره
بسته (فریم
در حالت framed)
* dts: برچسب
زمانی
رمزگشایی
در مقیاس
زمانی
جریان، در
صورت عدم
دسترسی N/A
* ddts: اختلاف
بین برچسب
زمانی
رمزگشایی
بستههای
فعلی و قبلی
در مقیاس
زمانی
جریان، در
صورت عدم
دسترسی N/A
* cts: برچسب
زمانی
ترکیب در
مقیاس
زمانی
جریان، در
صورت عدم
دسترسی N/A
* dcts: اختلاف
بین برچسب
زمانی
ترکیب
بستههای
فعلی و قبلی
در مقیاس
زمانی
جریان، در
صورت عدم
دسترسی N/A
* ctso: اختلاف
بین برچسب
زمانی
ترکیب و
برچسب
زمانی
رمزگشایی
در مقیاس
زمانی
جریان، در
صورت عدم
دسترسی N/A
* tmcd: کد زمان به
صورت
ارائهشده
در SEI، در
صورت عدم
دسترسی N/A
(نیازمند reframer)
* dur: مدتزمان
در مقیاس
زمانی
جریان
* frame: وضعیت
فریمبندی
* interface: واحد
دسترسی (AU)
کامل، شیء
واسط (بدون
اطلاعات
اندازه).
معمولاً یک
بافت GL
* frame_full: واحد
دسترسی (AU)
کامل
* frame_start: آغاز
فریم
* frame_end: پایان
فریم
* frame_cont: ادامه
فریم (نه
آغاز و نه
پایان)
* sap یا rap: نوع SAP
فریم
* ilace: پرچم
درهمبافی (0:
progressive، 1: top field، 2: bottom field)
* corr: پرچم بسته
معیوب
* seek: پرچم
جستجو (seek)
* bo: آفست
بایتی در
منبع، در
صورت عدم
دسترسی N/A
* roll: اطلاعات roll
* crypt: پرچم
رمزگذاری (crypt)
* vers: شماره
نسخه carousel
* size: اندازه
بسته
* csize: اندازه کل
بستههای
دریافت شده
تاکنون
* crc: مقدار ۳۲
بیتی CRC بسته
* lf یا n: درج خط
جدید
* t: درج تب
* data: استخراج
هگزادسیمال
بسته (خروجی
بسیار بزرگ!)
یا به صورت
رشته در
صورت معتبر
بودن UTF-8
* lp: پرچم
تصویر
پیشرو (leading picture)
* depo: پرچم
وابستگی به
بستهای
دیگر
* depf: پرچم مورد
وابستگی
قرار داشتن
توسط
بستهای
دیگر
* red: پرچم
کدگذاری
اضافی (redundant coding)
* start: زمان
ترکیب بسته
در قالب HH:MM:SS.ms
* startc: زمان
ترکیب بسته
در قالب HH:MM:SS,ms
* end: زمان
پایان بسته
در قالب HH:MM:SS.ms
* endc: زمان
پایان بسته
در قالب HH:MM:SS,ms
* ck: نوع ساعت
مورداستفاده
برای
ناپیوستگیهای
PCR
* pcr: آخرین
مقدار PCR در MPEG-2
TS، در صورت
عدم دسترسی
n/a
* pcrd: اختلاف
بین آخرین PCR
و زمان
رمزگشایی،
در صورت عدم
وجود PCR
برابر n/a
* pcrc: اختلاف
بین آخرین PCR
و زمان
ترکیب، در
صورت عدم
وجود PCR
برابر n/a
* P4CC: شناسه 4CC
مشخصه بسته
* PropName: نام مشخصه
بسته
* pid.P4CC: شناسه 4CC
مشخصه PID
* pid.PropName: نام
مشخصه PID
* fn: نام فیلتر
مثال
fmt="PID $pid.ID$ packet $pn$ DTS $dts$ CTS $cts$ $lf$"
این دستور شماره بسته، cts و dts را به این صورت استخراج میکند: PID 1 packet 10 DTS 100 CTS 108 \n
یک کلیدواژه ناشناخته یا مشخصه ناموجود به یک رشته خالی تبدیل میشود.
نکته: هنگام استخراج در حالت درهمتنیده (interleaved)، هیچ تضمینی وجود ندارد که بستهها با ترتیب توالی اصلی خود استخراج شوند؛ زیرا بازرس در هر بار یک بسته را از هر PID واکشی میکند.
بافرسازی
(Buffering) را
میتوان
برای بررسی
رفتار
زنجیره
فیلتر
ورودی فعال
کرد؛ به
عنوان
مثال،
بررسی منطق
تطبیقپذیری
HAS.
گزینههای
مختلف
بافرسازی
زمان مصرف
بستهها را
کنترل
میکنند.
رویدادهای
بافرسازی
با استفاده
از media@info برای
تغییرات
وضعیت و media@debug
برای
رویدادهای
پر شدن
رسانه ثبت
میشوند.
گزینه .I speed
تنها برای
پیکربندی
زنجیره
فیلتر به
کار
میرود،
اما هنگام
مصرف
بستهها
توسط فیلتر
نادیده
گرفته
میشود.
اگر به مصرف
بیدرنگ (real-time)
نیاز باشد،
باید یک
فیلتر reframer پیش
از فیلتر inspect
راهاندازی
شود.
مثال
gpac -i SRC reframer:rt=on
inspect:buffer=10000:rbuffer=1000:mbuffer=30000:speed=2
این دستور نشست را با سرعت 2x پخش خواهد کرد، از حداکثر ۳۰ ثانیه بافرسازی استفاده میکند، بستهها را پس از آماده شدن ۱۰ ثانیه از رسانه به مصرف میرساند و در صورت وجود کمتر از ۱ ثانیه از رسانه، بافرسازی مجدد انجام میدهد.
گزینهها (پیشرفته) (Options (expert)):
log (str،
پیشفرض: stdout،
شمارشی:
_any|stderr|stdout|GLOG|TL|null): تنظیم
نام فایل
گزارش probe
* _any: مسیر و نام
فایل مقصد
* stderr: تخلیه به stderr
* stdout: تخلیه به stdout
* GLOG: استفاده
از لاگهای
GPAC در سطح app@info
* TL: استفاده
از ابزار
لاگ GPAC به نام TL
در سطح info
* null: حالت
بیصدا (silent)
mode (enum،
پیشفرض: pck):
حالت تخلیه
(dump)
* pck: تخلیه
کامل بسته
* blk: تخلیه
بستهها
پیش از
بازسازی
* frame: اجبار به
استفاده از
reframer
* raw: تخلیه
بستههای
منبع بدون
تفکیکسازی
(demultiplexing)
interleave (bool،
پیشفرض: true):
تخلیه
بستهها به
محض دریافت
در هر PID. در
صورت false
بودن،
گزارشها
برای هر PID در
انتهای
نشست ثبت
میشوند
deep (bool، پیشفرض:
false، قابل
بهروزرسانی):
تخلیه
بستهها
همراه با
تغییر
وضعیت PID؛ در
صورت تنظیم .I
fmt به طور
ضمنی فعال
میشود
props (bool، پیشفرض:
true، قابل
بهروزرسانی):
تخلیه
ویژگیهای
بسته؛ در
صورت تنظیم .I
fmt نادیده
گرفته
میشود
dump_data (bool،
پیشفرض: false،
قابل
بهروزرسانی):
فعالسازی
تخلیه کامل
دادهها
(خروجی
بسیار
حجیم)؛ در
صورت تنظیم .I
fmt نادیده
گرفته
میشود
fmt (str، قابل
بهروزرسانی):
تنظیم قالب
تخلیه بسته
hdr (bool، پیشفرض:
true): چاپ
سرآیند
متناظر با
رشته fmt بدون '$'
یا "pid"
allp (bool، پیشفرض:
false): تحلیل در
کل مدت
زمان، به
جای متوقف
شدن پس از
یافتن
تمامی PIDها
info (bool، پیشفرض:
false، قابل
بهروزرسانی):
پایش
تغییرات
اطلاعات PID
full (bool، پیشفرض:
false، قابل
بهروزرسانی):
تخلیه کامل
ویژگیهای PID
(در صورت
استفاده از
XML همواره
فعال است)
pcr (bool، پیشفرض:
false، قابل
بهروزرسانی):
تخلیه
اطلاعات PCR
در M2TS
speed (dbl، پیشفرض:
1.0): تنظیم
سرعت دستور
پخش. اگر
منفی باشد و
start برابر با 0
باشد،
مقدار start روی -1
تنظیم
میشود
start (dbl، پیشفرض:
0.0): تنظیم
آفست آغاز
پخش. مقدار
منفی به
معنای
درصدی از
مدت زمان
رسانه است
که در آن -1
برابر با کل
مدت زمان
خواهد بود
dur (frac، پیشفرض:
0/0): تنظیم مدت
زمان
بازرسی (inspect)
analyze (enum،
پیشفرض: off،
قابل
بهروزرسانی):
تحلیل
محتوای
نمونه (NALU، OBU)،
مشابه
گزینه -bsdbg در
فیلترهای reframer
* off: بدون
تحلیل
* on: تحلیل
ساده
* bs: ثبت نحو
جریان بیتی
(تمامی
عناصر
خواندهشده
از bitstream)
* full: ثبت نحو
جریان بیتی
و
اندازههای
بیت که پس از
مقدار فیلد
با (N) مشخص
میشوند،
به جز
فیلدهای
تکبیتی
(صرفنظر
میشوند)
xml (bool،
پیشفرض: false،
قابل
بهروزرسانی):
استفاده از
قالببندی xml
(در صورت
تنظیم (-analyze]() به
طور ضمنی
فعال
میشود) و
غیرفعالسازی
.I fmt
crc (bool، پیشفرض:
false، قابل
بهروزرسانی):
تخلیه crc
نمونهها
یا
زیرنمونهها
(NALU یا OBU) هنگام
تحلیل
fftmcd (bool، پیشفرض:
false، قابل
بهروزرسانی):
در نظر
گرفتن کد
زمانی با
استفاده از
نشانهگذاری
سازگار با ffmpeg
به جای
سیگنالدهی
منطبق با QT
dtype (bool، پیشفرض:
false، قابل
بهروزرسانی):
تخلیه نوع
ویژگی
buffer (uint، پیشفرض:
0): تنظیم
بافر پخش بر
حسب
میلیثانیه
mbuffer (uint،
پیشفرض: 0):
تنظیم
حداکثر
اشغال بافر
بر حسب
میلیثانیه.
اگر کمتر از
buffer باشد، از
مقدار buffer
استفاده
میشود
rbuffer (uint،
پیشفرض: 0،
قابل
بهروزرسانی):
محرک
بافرسازی
مجدد بر حسب
میلیثانیه.
اگر 0 یا
بیشتر از buffer
باشد،
بافرسازی
مجدد
غیرفعال
میشود
stats (bool، پیشفرض:
false): محاسبه
آمار برای
PIDها
timeout (uint،
پیشفرض: 5000):
مهلت زمانی
(timeout) بر حسب
میلیثانیه
هنگام
بازرسی
ساده در
صورتی که
هیچ
بستهای
روی برخی
PIDها دریافت
نشود
test (enum، پیشفرض:
no، قابل
بهروزرسانی):
نادیده
گرفتن
مجموعهای
پیشتعریفشده
از
ویژگیها،
برای حالت
آزمایشی
استفاده
میشود
* no: هیچ ویژگی
نادیده
گرفته
نمیشود
* noprop: تمامی
ویژگیها/تغییرات
اطلاعات
روی PID
نادیده
گرفته شده و
تنها
بستهها
تخلیه
میشوند
* network: تخلیه
URL/مسیر،
وضعیت
حافظه
پنهان (cache) و
ویژگیهای
اندازه
فایل
نادیده
گرفته
میشوند
(برای
درهمسازی
نتایج شبکه
استفاده
میشود)
* netx: مشابه network
اما مدت
زمان قطعه (track
duration) و الگوها
(templates) نادیده
گرفته
میشوند
(برای
درهمسازی
بارگذاری
تدریجی fmp4
استفاده
میشود)
* encode: مشابه network به
همراه
نادیده
گرفتن
پیکربندی
رمزگشا
(برای
درهمسازی
نتایج
رمزگذاری
استفاده
میشود)
* encx: مشابه encode به
همراه
نادیده
گرفتن
نرخهای
بیت،
اندازه
دادههای
رسانه و
موارد
مشابه
* nocrc: غیرفعال
کردن تخلیه
CRC بسته
* nobr: نادیده
گرفتن نرخ
بیت (bitrate)
شرح: کاوشگر منبع
فیلتر Probe توسط برنامهها (بهویژه MP4Box) برای پرسوجوی PIDهای چندگانهزداییشده (صدا، ویدیو، ...) موجود در یک زنجیره منبع استفاده میشود.
این فیلتر
تعداد PIDهای
ورودی را در
فایل
مشخصشده
توسط .I log
خروجی
میدهد.
پرسوجوی
PIDهای ورودی
کاوشگر و
اتخاذ
تصمیمهای
مناسب بر
عهده
توسعهدهنده
برنامه
است.
گزینهها (تخصصی) (OPTIONS (expert)):
log (str,
پیشفرض: stdout, Enum:
_any|stderr|stdout|GLOG|null): تنظیم
نام فایل
گزارش probe
برای چاپ
تعداد
جریانها
* _any: مسیر و نام
فایل مقصد
* stderr: ارسال به stderr
* stdout: ارسال به stdout
* GLOG: استفاده
از
گزارشهای
GPAC در سطح app@info
* null: حالت
بیصدا
compositor
شرح: ترکیبکننده (Compositor)
ترکیبکننده
GPAC امکان
ترکیب صدا،
ویدیو، متن
و گرافیک را
به صورت
زمانبندیشده
فراهم
میکند.
ترکیبکننده
در یکی از دو
حالت media-client یا
فقط فیلتر
(filter-only) عمل
میکند.
حالت کلاینت چندرسانهای (Media-client mode)
در این
حالت،
ترکیبکننده
به عنوان یک
شبهمقصد
(pseudo-sink) برای بخش
ویدیو عمل
کرده و
پنجره
خروجی
اختصاصی
خود را
ایجاد
میکند.
فریمهای
ویدیویی در
قالب
اشارهگرهای
فریم به PID
ویدیوی
خروجی
ارسال
میشوند که
در صورت
استفاده،
بعداً
نیازمند
خواندهشدن
توسط GPU
خواهند بود.
بخش صوتی
مانند یک
فیلتر
معمولی عمل
کرده و برای
تولید
خروجی خود،
احتمالاً
ورودیهای
صوتی را
ترکیب و
بازنمونهبرداری
میکند.
در این
حالت،
رویدادهای
کاربر
مستقیماً
توسط فیلتر
پردازش
میشوند.
حالت فیلتر (Filter mode)
در این
حالت،
ترکیبکننده
به عنوان یک
فیلتر
معمولی عمل
کرده و
فریمها را
بر اساس
صحنه
بارگذاریشده
تولید
میکند.
این فیلتر
خروجیهای
خود را بر
اساس
فریمهای
ویدیویی
ورودی
تولید کرده
و
رویدادهای
کاربر
ارسالشده
توسط
فیلتر(های)
مصرفکننده
را پردازش
خواهد کرد.
در صورت
نبود
فریمهای
ویدیویی
ورودی
(مثلاً BIFS / SVG / VRML
خالص)،
فیلتر
فریمها را
بر اساس .I fps با
نرخ فریم
ثابت یا
متغیر
تولید
خواهد کرد.
تولید
فریمها به
محض پایان
یافتن تمام
جریانهای
ورودی
متوقف
خواهد شد،
مگر اینکه
توسط .I dur
افزایش یا
کاهش یافته
باشد.
در صورت
بارگذاری
جریانهای
صوتی، یک PID
خروجی صوتی
ایجاد
میشود.
قالب
پیشفرض
پیکسل
خروجی در
حالت فیلتر
عبارت است
از:
- rgb هنگامی که
فیلتر
صراحتاً
توسط
برنامه
بارگذاری
شده باشد
- rgba هنگامی که
فیلتر در
حین تفکیک
پیوند
بارگذاری
شود
این مقدار
را میتوان
با
مقداردهی
به گزینه .I opfmt
تغییر داد.
اگر .I opfmt کانال
آلفا را
مشخص کند یا
.I bc برابر ۰
نبوده ولی
دارای alpha=0
باشد، از
ایجاد
پسزمینه
در صحنه
پیشفرض
صرفنظر
خواهد شد.
در حالت
filter-only، نشانی
اینترنتی
ویژه gpid:// برای
تعیین
موقعیت PIDها
در توصیف
صحنه
استفاده
میشود تا
امکان
طراحی
صحنهها
مستقل از
رسانه مبدا
فراهم گردد.
هنگامی که
چنین PIDای به
یک گره Background2D در BIFS
مرتبط شود
(هنوز نگاشت
SVG وجود
ندارد)،
ترکیبکننده
در حالت pass-through
عمل میکند.
در این
حالت، تنها
فریمهای
ورودی جدید
روی PID عبوری
(pass-through)
فریمهای
جدید تولید
میکنند و
ساعت صحنه
با زمان
بسته ورودی
مطابقت
دارد.
اندازه و
قالب پیکسل
خروجی
برابر با
اندازه و
قالب پیکسل
ورودی
تنظیم
خواهد شد،
مگر اینکه
در
گزینههای
فیلتر خلاف
آن مشخص شده
باشد.
اگر فقط از
گرافیک
دوبعدی
استفاده
شود و
درایور
نمایشگر
اجبار نشده
باشد،
شطرنجیسازی
دوبعدی (2D rasterizer)
در قالب
پیکسل
خروجی (شامل
قالبهای
پیکسل YUV)
انجام
خواهد شد.
در این
حالت، تا
زمانی که
دادههای
ورودی
اجازه
دهند،
پردازش
درجا
(شطرنجیسازی
روی
دادههای
فریم ورودی)
استفاده
خواهد شد.
اگر گرافیک سهبعدی استفاده شود یا درایور نمایشگر اجبار شده باشد، OpenGL روی یک سطح بیرون از صفحه (offscreen surface) استفاده خواهد شد و بسته خروجی یک بافت OpenGL خواهد بود.
نحوهای خاص نشانی اینترنتی (Specific URL syntaxes)
ترکیبکننده
هر نوع URL
پشتیبانیشده
توسط GPAC را
میپذیرد.
همچنین
طرحوارههای
زیر را برای
URLها قبول
میکند:
* views:// : یک صحنه
خودکار-استریو
(auto-stereo) از N نما از
views://v1::.::vN ایجاد
میکند
* mosaic:// : یک
موزاییک از N
نما از mosaic://v1::.::vN
ایجاد
میکند
برای هر دو
نحو، vN
میتواند
هر نوع URL
پشتیبانیشده
توسط GPAC باشد.
برای نحو views://،
تعداد
نماهای
رندرشده
توسط .I nbviews
تعیین
میشود:
- اگر URL
نماهای
کمتری نسبت
به نماهای
رندرشده
ارائه دهد،
نماها
تکرار
خواهند شد
- اگر URL
نماهای
بیشتری
نسبت به
نماهای
رندرشده
ارائه دهد،
نماهای
اضافی
نادیده
گرفته
خواهند شد
ترکیبکننده
میتواند
زمانی که
گزینه .I src
صراحتاً
تنظیم شده
باشد،
مستقل از
حالت
عملیاتی به
عنوان یک
فیلتر منبع
عمل کند:
gpac compositor:src=source.mp4 vout
ترکیبکننده
میتواند
زمانی که URL
منبع از یکی
از
طرحوارههای
پروتکل
داخلی
ترکیبکننده
استفاده
میکند، به
عنوان یک
فیلتر منبع
عمل کند:
gpac -i mosaic://URL1:URL2 vout
aa (enum،
پیشفرض: all،
قابل
بهروزرسانی):
تنظیم حالت
ضدپلگی (anti-aliasing)
برای
گرافیکهای
شطرنجی؛
اعمال شدن
یا نشدن این
تنظیم به
ماژول
گرافیکی یا
کارت
گرافیک
بستگی دارد
* none: بدون
ضدپلگی
* text: ضدپلگی
فقط برای
متن
* all: ضدپلگی
کامل
hlfill (uint،
پیشفرض: 0x0،
قابل
بهروزرسانی):
تنظیم رنگ
پر کردن
برجستهسازی
(ARGB)
hlline (uint، پیشفرض:
0xFF000000، قابل
بهروزرسانی):
تنظیم رنگ
خط دور
برجستهسازی
(ARGB)
hllinew (flt، پیشفرض:
1.0، قابل
بهروزرسانی):
تنظیم
پهنای خط
دور
برجستهسازی
sz (bool، پیشفرض:
true، قابل
بهروزرسانی):
فعالسازی
بزرگنمایی
مقیاسپذیر.
هنگامی که
بزرگنمایی
مقیاسپذیر
فعال باشد،
تغییر
اندازه
پنجره
خروجی موجب
محاسبه
مجدد همه
اشیاء
برداری نیز
میشود. در
غیر این
صورت تنها
بافر نهایی
کشیده
میشود
bc (uint، پیشفرض:
0، قابل
بهروزرسانی):
رنگ
پسزمینه
پیشفرض
برای نمایش
تصاویر
شفاف یا
ویدیوهای
بدون
دستورالعملهای
ترکیب صحنه
yuvhw (bool، پیشفرض:
true، قابل
بهروزرسانی):
فعالسازی
سختافزار YUV
برای blit
دوبعدی
blitp (bool، پیشفرض:
true، قابل
بهروزرسانی):
انتقال
جزئی
سختافزاری
(hardware blit جزئی). در
صورت عدم
تنظیم،
بازترسیم
بیشتری را
تحمیل
میکند
softblt (bool،
پیشفرض: true):
فعالسازی
blit/کشش
نرمافزاری
در 2D. در صورت
غیرفعال
بودن،
همواره از
شطرنجیساز
گرافیک
برداری
استفاده
خواهد شد
stress (bool، پیشفرض:
false، قابل
بهروزرسانی):
فعالسازی
حالت آزمون
فشار (stress)
ترکیبکننده
(بازسازی
تمام
گرافیکهای
برداری و
وضعیتهای
بافت در هر
فریم)
fast (bool، پیشفرض:
false، قابل
بهروزرسانی):
فعالسازی
بهینهسازی
سرعت - اعمال
شدن یا نشدن
این تنظیم
به ماژول
گرافیکی /
کارت
گرافیک
بستگی دارد
bvol (enum، پیشفرض:
no، قابل
بهروزرسانی):
رسم حجم
محصورکننده
(bounding volume) اشیاء
* no:
غیرفعالسازی
جعبه
محصورکننده
* box: رسم یک
مستطیل (2D) یا
مکعب (3D)
* aabb: رسم درخت
جعبه
محصورکننده
همراستا
با محور (3D) یا
مستطیل (2D)
textxt (enum،
پیشفرض: default،
قابل
بهروزرسانی):
تعیین
اینکه آیا
متن باید
روی یک بافت
(texture) رسم و سپس
رندر شود یا
مستقیماً
رندر گردد.
استفاده از
متن
بافتدار
میتواند
رندر متن در
3D و نیز
محتواهای
مشابه متن
روی ویدیو
را بهبود
بخشد
* default: استفاده
از
بافتدهی
برای رندر
OpenGL، بدون
بافت برای
شطرنجیساز
2D
* never: هرگز از
بافتهای
متنی
استفاده
نمیکند
* always: همواره
پیش از رسم،
متن را روی
بافت رندر
میکند
out8b (bool،
پیشفرض: false،
قابل
بهروزرسانی):
تبدیل
ویدیوی ۱۰
بیتی به
بافت ۸ بیتی
قبل از
بارگذاری
روی GPU
drop (bool، پیشفرض:
false، قابل
بهروزرسانی):
انداختن
فریمهای
با تاخیر
هنگام رسم.
در صورت عدم
تنظیم،
فریمها تا
زمانی که
ناهمگامی ۱
ثانیه یا
بیشتر
مشاهده
نشود،
نادیده
گرفته
نمیشوند
sclock (bool، پیشفرض:
false، قابل
بهروزرسانی):
اجبار به
همگامسازی
همه
جریانها
بر اساس یک
ساعت واحد
sgaze (bool، پیشفرض:
false، قابل
بهروزرسانی):
شبیهسازی
رویدادهای
نگاه (gaze) با
استفاده از
ماوس
ckey (uint، پیشفرض:
0، قابل
بهروزرسانی):
کلید رنگ (color key)
برای
استفاده در
حالت بدون
پنجره (0xFFRRGGBB). در
حال حاضر GPAC
به دلیل
محدودیتهای
موجود در
بیشتر
تولکیتهای
پنجرهبندی
از blitting آلفای
واقعی روی
میزکار
پشتیبانی
نمیکند،
بنابراین
از سازوکار
کلیدگذاری
رنگی
استفاده
میکند. بخش
آلفای کلید
در صورت
پشتیبانی،
برای
شفافیت کلی
خروجی
استفاده
میشود
timeout (uint،
پیشفرض: 10000،
قابل
بهروزرسانی):
زمان انقضا
بر حسب
میلیثانیه
که پس از آن
یک منبع از
دست رفته
تلقی
میشود (۰
زمان انقضا
را غیرفعال
میکند)
fps (frac، پیشفرض:
30/1، قابل
بهروزرسانی):
نرخ فریم
شبیهسازی
در هنگام
پخش منابع
صرفاً
انیمیشنی
(در صورت
وجود ویدیو
نادیده
گرفته
میشود)
timescale (uint،
پیشفرض: 0،
قابل
بهروزرسانی):
مقیاس
زمانی مورد
استفاده
برای
بستههای
خروجی در
صورت عدم
وجود PID
ویدیوی
ورودی.
مقدار ۰ به
معنای صورت
کسر fps است
autofps (bool،
پیشفرض: true):
استفاده از
fps ورودی
ویدیو برای
خروجی، در
حالت player
نادیده
گرفته
میشود. در
صورت نبود
ویدیو یا
تنظیم
نشدن، از .I fps
استفاده
میکند
vfr (bool، پیشفرض:
false): انتشار
فریمها
تنها در
صورت تشخیص
تغییرات. (در
حالت
پخشکننده
و زمانی که
فیلتر به
صورت پویا
بارگذاری
میشود
همواره true
است)
dur (dbl، پیشفرض:
0، قابل
بهروزرسانی):
مدت زمان
تولید.
بیشتر
زمانی که
هیچ ویدیوی
ورودی وجود
ندارد
استفاده
میشود.
مقادیر
منفی به
معنای
تعداد
فریمها،
مقادیر
مثبت مدت
زمان به
ثانیه و ۰ به
معنای توقف
به محض
پایان همه
جریانها
است
fsize (bool، پیشفرض:
false، قابل
بهروزرسانی):
اجبار صحنه
به تغییر
اندازه به
بزرگترین
بیتمپ (bitmap)
موجود در
صورتی که
اطلاعات
اندازهای
در
پیکربندی BIFS
ارائه نشده
باشد
mode2d (enum، پیشفرض:
defer، قابل
بهروزرسانی):
مشخص کردن
اینکه آیا
باید از رسم
فوری (immediate)
استفاده
شود یا خیر
* immediate: صفحه در
هر فریم
کاملاً
بازترسیم
میشود (اگر
حالت pass-through
شناسایی
شود همواره
روشن است)
* defer: موقعیت
اشیاء فریم
به فریم
دنبال
میشود و
اطلاعات
مستطیلهای
تغییریافته
(dirty rectangles)
جمعآوری
میگردد تا
حداقل
مقدار ممکن
از بافر
صفحه
بازترسیم
شود
* debug: فقط نواحی
تغییریافته
را رندر
میکند و
سایر نواحی
را
بازنشانی
مینماید
اعمال شدن
یا نشدن این
تنظیم به
ماژول
گرافیکی و
حالت
پخشکننده
بستگی
دارد
amc (bool،
پیشفرض: true):
پشتیبانی
از صدای
چندکاناله؛
در صورت
غیرفعال
بودن همیشه
به استریو
ترکیب رو به
پایین (down-mix)
میشود.
زمانی مفید
است که
خروجی
چندکاناله
به درستی
کار نکند
asr (uint، پیشفرض:
0): اجبار نرخ
نمونهبرداری
خروجی (۰
برای
خودکار)
ach (uint، پیشفرض:
0): اجبار
کانالهای
خروجی (۰
برای
خودکار)
alayout (uint،
پیشفرض: 0):
اجبار چینش
کانالهای
خروجی (۰
برای
خودکار)
afmt (afmt، پیشفرض:
s16، Enum:
none|u8|s16|s16b|s24|s24b|s32|s32b|flt|fltb|dbl|dblb|u8p|s16p|s24p|s32p|fltp|dblp):
اجبار قالب
کانال
خروجی (۰
برای
خودکار)
asize (uint،
پیشفرض: 1024):
اندازه
بسته خروجی
صوتی بر حسب
نمونه
abuf (uint، پیشفرض:
100): مدتزمان
بافر خروجی
صوتی بر حسب
میلیثانیه
- رندرکننده
صوتی PID
خروجی را تا
این مقدار
پر میکند.
مقدار بیش
از حد کم
تأخیر را
کاهش
میدهد اما
ممکن است
مشکلاتی در
پخش
بیدرنگ (real-time)
داشته باشد
avol (uint، پیشفرض:
100، قابل
بهروزرسانی):
بلندی صدا
به درصد
apan (uint، پیشفرض:
50، قابل
بهروزرسانی):
تراز صدای
صوتی (pan) به
درصد، ۵۰ به
معنای بدون
تراز است
async (bool، پیشفرض:
true، قابل
بهروزرسانی):
همگامسازی
مجدد صوت؛
در صورت
غیرفعال
بودن،
دادههای
صوتی هرگز
حذف
نمیشوند
اما ممکن
است از
همگامسازی
خارج گردند
max_aspeed (dbl،
پیشفرض: 2.0،
قابل
بهروزرسانی):
بیصدا
کردن صوت در
صورتی که
سرعت پخش از
مقدار
تعیینشده
بیشتر باشد
max_vspeed (dbl،
پیشفرض: 4.0،
قابل
بهروزرسانی):
جابجایی به
رمزگشایی
صرفاً
فریمهای I
در صورتی که
سرعت پخش از
مقدار
تعیینشده
بیشتر باشد
buffer (uint، پیشفرض:
3000، قابل
بهروزرسانی):
بافر پخش بر
حسب
میلیثانیه
(توسط ویژگی
BufferLength در PID ورودی
بازنویسی
میشود)
rbuffer (uint،
پیشفرض: 1000،
قابل
بهروزرسانی):
راهانداز
بافر مجدد
بر حسب
میلیثانیه
(توسط ویژگی
RebufferLength در PID ورودی
بازنویسی
میشود)
mbuffer (uint،
پیشفرض: 3000،
قابل
بهروزرسانی):
حداکثر
بافر بر حسب
میلیثانیه،
باید بیشتر
از بافر پخش
باشد (توسط
ویژگی BufferMaxOccupancy در
PID ورودی
بازنویسی
میشود)
ntpsync (uint،
پیشفرض: 0،
قابل
بهروزرسانی):
آستانه
همگامسازی
مجدد NTP بر
حسب
میلیثانیه
(فریمها را
در صورتی که
NTP آنها بیش
از آستانه
تعیینشده
بالاتر از NTP
محلی باشد
حذف
میکند)، ۰
حذف بر اساس
NTP را
غیرفعال
میسازد
nojs (bool، پیشفرض:
false):
غیرفعالسازی
javascript
noback (bool، پیشفرض:
false): نادیده
گرفتن
گرههای
پسزمینه و
پر کردن
درگاه
نمایش (viewport)
(هنگام
ذخیره در PNG
مفید است)
ogl (enum، پیشفرض:
auto، قابل
بهروزرسانی):
تعیین حالت
رندر 2D
* auto: بر اساس
محتوا به
طور خودکار
بین on، off و hybrid
تصمیم
میگیرد
* off: OpenGL را
غیرفعال
میکند؛
محتوای 3D
رندر
نخواهد شد
* on: استفاده
از OpenGL برای
همه
گرافیکها؛
این کار
شامل
موزاییککاری
چندضلعیها
(polygon tesselation) خواهد
بود و
گرافیکهای
2D به زیبایی
حالت 2D به
نظر
نخواهند
رسید
* hybrid:
ترکیبکننده،
رسم
نرمافزاری
گرافیکهای
2D بدون بافت
را انجام
میدهد
(کیفیت بهتر)
و از OpenGL برای
همه اشیاء 2D
دارای بافت
و اشیاء 3D
استفاده
میکند
pbo (bool،
پیشفرض: false،
قابل
بهروزرسانی):
فعالسازی
PixelBufferObjects برای
ارسال
بافتهای YUV
به GPU در حالت
OpenGL. این کار
ممکن است
کارایی پخش
را اندکی
بهبود بخشد
nav (enum، پیشفرض:
none، قابل
بهروزرسانی):
بازنویسی
حالت
ناوبری
پیشفرض در
MPEG-4/VRML (Walk) و X3D (Examine)
* none: ناوبری را
غیرفعال
میکند
* walk: راه رفتن
در دنیای
سهبعدی
* fly: پرواز در
دنیای
سهبعدی
(بدون تشخیص
سطح زمین)
* pan:
بزرگنمایی/پیمایش
(zoom/pan) در دنیای 2D/3D
* game: حالت بازی
در دنیای
سهبعدی
(ماوس جهت
راه رفتن را
تعیین
میکند)
* slide: لغزش در
دنیای 2D/3D
* exam: بررسی شیء
2D/3D
* orbit: چرخش
مداری به
دور شیء 3D
* vr: واقعیت
مجازی در
دنیای
سهبعدی
(yaw/pitch/roll)
linegl (bool،
پیشفرض: false،
قابل
بهروزرسانی):
مشخص
میکند که
خطکشی
پیرامونی
به جای
خطکشی
برداری
باید از
طریق پهنای
قلم OpenGL انجام
گیرد
epow2 (bool، پیشفرض:
true، قابل
بهروزرسانی):
شبیهسازی
بافتهای
با ابعاد
توان دو
برای OpenGL
(سختافزارهای
قدیمی). در
صورت فعال
بودن
افزونه
بافت
مستطیلی OpenGL
نادیده
گرفته
میشود
* true: اندازه
بافت ویدیو
تغییر
نمیکند
اما با
فاصلهگذاری
(padding)
شبیهسازی
میشود. این
کار
معمولاً
نگاشت
ویدیو روی
اشکال را
تسریع
میکند اما
تبدیلات
بافت را
غیرفعال
میسازد
* false: هنگام
نگاشت روی
یک شکل،
اندازه
ویدیو به
بافتی با
بعد توان ۲
تغییر
مییابد
paa (bool،
پیشفرض: false،
قابل
بهروزرسانی):
مشخص
میکند که
آیا ضدپلگی
چندضلعی
باید در
حالت
ضدپلگی
کامل
استفاده
شود یا خیر.
در صورت عدم
تنظیم،
تنها
ضدپلگی
خطوط و نقاط
به کار
میرود
bcull (enum، پیشفرض:
on، قابل
بهروزرسانی):
مشخص
میکند که
آیا حذف
سطوح پشتی (backface
culling) باید
غیرفعال
شود یا خیر
* on: حذف سطوح
پشتی را
فعال
میکند
* off: حذف سطوح
پشتی را
غیرفعال
میکند
* alpha: تنها حذف
سطوح پشتی
را برای
مشهای
شفاف فعال
میسازد
wire (enum،
پیشفرض: none،
قابل
بهروزرسانی):
حالت
اسکلتسیمی
(wireframe)
* none: اشیاء به
صورت توپر
کشیده
میشوند
* only: اشیاء
تنها به
صورت
اسکلتسیمی
کشیده
میشوند
* solid: اشیاء
ابتدا به
صورت توپر
کشیده شده و
سپس
اسکلتسیمی
رسم
میشود
norms (enum،
پیشفرض: none،
قابل
بهروزرسانی):
رسم بردار
عمود (نرمال)
برای
اشکالزدایی
* none: هیچ بردار
نرمالی رسم
نمیشود
* face: یک بردار
نرمال به
ازای هر وجه
رسم میشود
* vertex: یک بردار
نرمال به
ازای هر رأس
رسم
میشود
rext (bool،
پیشفرض: true،
قابل
بهروزرسانی):
استفاده از
افزونه GL
بافتهای
غیر توان دو
(مستطیلی)
cull (bool، پیشفرض:
true، قابل
بهروزرسانی):
استفاده از
جداسازی aabb:
اشیاء بزرگ
در صورتی که
کاملاً
درون درگاه
نمایش
نباشند، در
چند
فراخوانی
رندر
میشوند
depth_gl_scale (flt،
پیشفرض: 100،
قابل
بهروزرسانی):
تعیین
مقیاسبند
عمق
depth_gl_type (enum،
پیشفرض: none،
قابل
بهروزرسانی):
تعیین نوع
هندسه مورد
استفاده
برای رسم
ویدیوی عمق
* none: بدون
تبدیل
هندسی
* point: محاسبه
ابر نقاط از
پیکسل+عمق
* strip: مشابه point
اما مجموعه
نقاط را
خلوتتر
میکند
nbviews (uint،
پیشفرض: 0،
قابل
بهروزرسانی):
تعداد
نماها برای
استفاده در
حالت
برجستهبینی
(stereo)
stereo (enum، پیشفرض:
none، قابل
بهروزرسانی):
نوع خروجی
استریو
(برجستهبین).
اگر کارت
گرافیک شما
از شیدرهای
OpenGL پشتیبانی
نکند، تنها
حالتهای top
و side در دسترس
خواهند بود
* none: بدون
استریو
* side: تصاویر در
کنار هم از
چپ به راست
نمایش داده
میشوند
* top: تصاویر از
بالا (نمای
چپ) تا پایین
(نمای راست)
نمایش داده
میشوند
* hmd: مشابه side، جز
اینکه نسبت
تصویر نما
تغییر
نمیکند
* ana: از
آناگلیف
رنگی
استاندارد
(قرمز برای
نمای چپ،
سبز و آبی
برای نمای
راست)
استفاده
میشود
(اجبار views=2)
* cols: تصاویر بر
اساس
ستونها در
هم آمیخته
میشوند؛
نمای چپ در
ستونهای
زوج و نمای
راست در
ستونهای
فرد (اجبار views=2)
* rows: تصاویر بر
اساس سطرها
در هم
آمیخته
میشوند؛
نمای چپ در
سطرهای زوج
و نمای راست
در سطرهای
فرد (اجبار views=2)
* spv5: تصاویر
برای
نمایشگر ۵
نمایی SpatialView در
حالت
تمامصفحه
در هم
آمیخته
میشوند
(اجبار views=5)
* alio8: تصاویر
برای
نمایشگرهای
۸ نمایی Alioscopy در
حالت
تمامصفحه
در هم
آمیخته
میشوند
(اجبار views=8)
* custom: تصاویر بر
اساس فایل
شیدر
مشخصشده
در .I mvshader در هم
آمیخته
میشوند.
شیدر هر نما
را به عنوان
uniform sampler2D gfViewX در معرض
دسترسی
قرار
میدهد، که
در آن X شماره
نما از سمت
چپ است
mvshader (str، قابل
بهروزرسانی):
مسیر فایل
به شیدر
سفارشی
درهمآمیزی
چندنمایی
fpack (enum، پیشفرض:
none، قابل
بهروزرسانی):
بستهبندی
فریم
پیشفرض
ویدیوی
ورودی
* none: بدون
بستهبندی
فریم
* top:
بستهبندی
فریم بالا و
پایین
* side:
بستهبندی
در کنار هم
camlay (enum،
پیشفرض: offaxis،
قابل
بهروزرسانی):
چینش
دوربین در
حالتهای
چندنمایی
* straight: دوربین در
امتداد یک
خط مستقیم و
بدون چرخش
حرکت
میکند
* offaxis: از
پروجکشن
خارج از
محور (off-axis)
استفاده
میشود
* linear: دوربین در
امتداد یک
خط مستقیم
همراه با
چرخش حرکت
میکند
* circular: دوربین در
امتداد یک
دایره
همراه با
چرخش حرکت
میکند
iod (flt،
پیشفرض: 6.4،
قابل
بهروزرسانی):
فاصله
میانچشمی
(فاصله بین
چشمها) بر
حسب
سانتیمتر
(فاصله بین
دوربینها).
rview (bool، پیشفرض:
false، قابل
بهروزرسانی):
معکوس کردن
ترتیب
نماها
dbgpack (bool،
پیشفرض: false،
قابل
بهروزرسانی):
مشاهده
ویدیوی
استریوی
بستهبندیشده
به صورت یک
تصویر
منفرد
(نمایش همه)
tvtn (uint، پیشفرض:
30، قابل
بهروزرسانی):
تعداد
نمونهبرداری
نقطه برای
الگوریتم
دیدپذیری
کاشیها
tvtt (uint، پیشفرض:
8، قابل
بهروزرسانی):
تعداد
نقاطی که
اگر بالاتر
از آن باشد،
کاشی
دیدپذیر در
نظر گرفته
میشود
tvtd (enum، پیشفرض:
off، قابل
بهروزرسانی):
اشکالزدایی
کاشیها و SRD
پوشش کامل
* off: رسم عادی
* partial: فقط
کاشیهای
جزئی نمایش
داده
میشوند،
نه ویدیوی
کروی کامل
* full: فقط نمایش
ویدیوی
کروی کامل
tvtf (bool،
پیشفرض: false،
قابل
بهروزرسانی):
اجبار به
دیدپذیر
تلقی شدن
تمام
کاشیها،
صرفنظر از
دیدگاه (viewpoint)
fov (flt، پیشفرض:
1.570796326794897، قابل
بهروزرسانی):
میدان دید
پیشفرض
برای VR
vertshader (str): مسیر
فایل شیدر
رأس (vertex shader)
fragshader (str): مسیر
فایل شیدر
قطعه (fragment shader)
autocal (bool،
پیشفرض: false،
قابل
بهروزرسانی):
کالیبراسیون
خودکار znear/zfar در
حالت رندر
عمق
dispdepth (sint،
پیشفرض: -1،
قابل
بهروزرسانی):
عمق نمایش،
مقدار منفی
از ارتفاع
پیشفرض
صفحه
استفاده
میکند
dispdist (flt،
پیشفرض: 50،
قابل
بهروزرسانی):
فاصله بر
حسب
سانتیمتر
بین دوربین
و صفحه با
عدمانطباق
صفر (zero-disparity plane). در
حال حاضر
هیچ
کالیبراسیون
خودکاری
برای عمق در
GPAC وجود
ندارد
focdist (flt، پیشفرض:
0، قابل
بهروزرسانی):
فاصله نقطه
کانونی
osize (v2di، پیشفرض:
0x0، قابل
بهروزرسانی):
اجبار
اندازه
خروجی. در
صورت عدم
تنظیم،
اندازه از
ورودیها
به دست
میآید
dpi (v2di، پیشفرض:
96x96، قابل
بهروزرسانی):
مقدار dpi
پیشفرض در
صورتی که
توسط خروجی
ویدیو مشخص
نشده باشد
dbgpvr (flt، پیشفرض:
0، قابل
بهروزرسانی):
صحنه
اشکالزدایی
مورد
استفاده
توسط
افزونه PVR
player (enum، پیشفرض:
no): قرار دادن
ترکیبکننده
در حالت
پخشکننده
(player)
* no: حالت عادی
* base: حالت
پخشکننده
* gui: حالت
پخشکننده
با شروع
خودکار
رابط
گرافیکی (GUI)
noaudio (bool،
پیشفرض: false):
غیرفعالسازی
خروجی صوتی
opfmt (pfmt، پیشفرض:
none، Enum:
none|yuv420|yvu420|yuv420_10|yuv422|yuv422_10|yuv444|yuv444_10|uyvy|vyuy|yuyv|yvyu|uyvl|vyul|yuyl|yvyl|nv12|nv21|nv1l|nv2l|yuva|yuvd|yuv444a|yuv444p|v308|yuv444ap|v408|v410|v210|grey|algr|gral|rgb8|rgb4|rgb5|rgb6|rgba|argb|bgra|abgr|rgb|bgr|xrgb|rgbx|xbgr|bgrx|rgbd|rgbds|uncv):
قالب
پیکسلی
مورد
استفاده
برای خروجی.
در حالت .I player
نادیده
گرفته
میشود
drv (enum،
پیشفرض: auto):
مشخص
میکند که
آیا درایور
گرافیک
باید
استفاده
شود یا خیر
* no: هرگز
درایور
گرافیک
بارگذاری
نمیشود،
از blit
نرمافزاری
استفاده
میشود، 3D
ممکن نیست
(در حالت
پخشکننده،
OpenGL را
غیرفعال
میکند)
* yes: همواره
درایور
گرافیک
بارگذاری
میشود،
قالب
پیکسلی
خروجی RGB
خواهد بود
(در حالت
پخشکننده،
مشابه auto)
* auto: بر اساس
محتوای
بارگذاریشده
تصمیم
میگیرد
src (cstr): نشانی (URL)
محتوای
منبع
gaze_x (sint، پیشفرض:
0، قابل
بهروزرسانی):
مختصات
افقی نگاه
(0=چپ، width=راست)
gaze_y (sint، پیشفرض:
0، قابل
بهروزرسانی):
مختصات
عمودی نگاه
(0=بالا،
height=پایین)
gazer_enabled (bool،
پیشفرض: false،
قابل
بهروزرسانی):
فعالسازی
ارسال
رویدادهای
نگاه
subtx (sint، پیشفرض:
0، قابل
بهروزرسانی):
انتقال
افقی بر حسب
پیکسل به
سمت راست
برای
رندرکنندههای
زیرنویس
subty (sint، پیشفرض:
0، قابل
بهروزرسانی):
انتقال
عمودی بر
حسب پیکسل
به سمت بالا
برای
رندرکنندههای
زیرنویس
subfs (uint، پیشفرض:
0، قابل
بهروزرسانی):
اندازه قلم
برای
رندرکنندههای
زیرنویس (۰
به معنای
خودکار است)
subd (sint، پیشفرض:
0، قابل
بهروزرسانی):
تاخیر
زیرنویس بر
حسب
میلیثانیه
برای
رندرکنندههای
زیرنویس
audd (sint، پیشفرض:
0، قابل
بهروزرسانی):
تاخیر صدا
بر حسب
میلیثانیه
clipframe (bool،
پیشفرض: false):
خروجی
دیداری به
مستطیل
محصورکننده
برش
میخورد
توضیحات: تفکیککننده (demultiplexer) برای ISOBMFF/QT
این فیلتر
فایلهای ISOBMF
و QT را
دیمولتیپلکس
میکند.
ورودی ISOBMFF/QT
میتواند
عادی یا
تکهتکه (fragmented)
بوده و به
صورت فایل
یا به عنوان
جریان بایت
خام (raw bytestream) در
دسترس باشد.
انتخاب ترک (Track Selection)
فیلتر
میتواند
از
شناسههای
قطعه (fragment identifiers)
منبع برای
انتخاب یک
ترک واحد
جهت پخش
استفاده
کند.
قطعههای
مجاز
عبارتند از:
* #audio: فقط از
نخستین ترک
صوتی
استفاده
میکند
* #video: فقط از
نخستین ترک
ویدیویی
استفاده
میکند
* #auxv: فقط از
نخستین ترک
ویدیویی
کمکی (auxiliary)
استفاده
میکند
* #pict: فقط از
نخستین ترک
تصویر
استفاده
میکند
* #text: فقط از
نخستین ترک
متنی
استفاده
میکند
* #trackID=VAL: فقط از
ترک با
شناسه (ID)
دادهشده
استفاده
میکند
* #itemID=VAL: فقط از
آیتم با
شناسه
دادهشده
استفاده
میکند
* #ID=VAL: فقط از
ترک/آیتم با
شناسه
دادهشده
استفاده
میکند
* #VAL: فقط از
ترک/آیتم با
شناسه
دادهشده
استفاده
میکند
ترکهای مقیاسپذیر (Scalable Tracks)
هنگامی که
ترکهای
مقیاسپذیر
در یک فایل
وجود
دارند،
خواننده
میتواند
با استفاده
از گزینه .I smode
در ۳ حالت
عمل کند:
* smode=single: تمام
استخراجکنندهها
(extractors) را برای
استخراج یک
جریان بیتی
واحد از یک
مجموعه
مقیاسپذیر
حل میکند.
بالاترین
سطح
استفاده
میشود
در این
حالت، هیچ
پیکربندی
رمزگشای
بهبوددهندهای
وجود
ندارد،
بلکه تنها
یک
پیکربندی
پایه حاصل
از ادغام
پیکربندیهای
لایهها
وجود دارد
* smode=split: تمام
استخراجکنندهها
حذف شده و
تمام
ترکهای
مجموعه
مقیاسپذیر
اعلان
میشوند. در
این حالت،
هر ترک
بهبوددهنده
فاقد
پیکربندی
رمزگشای
پایه
و دارای یک
پیکربندی
رمزگشای
بهبوددهنده
است.
* smode=splitx:
استخراجکنندهها
در جریان
بیتی نگه
داشته
میشوند و
تمام
ترکهای
مجموعه
مقیاسپذیر
اعلان
میشوند. در
این حالت،
هر ترک
بهبوددهنده
دارای یک
پیکربندی
رمزگشای
پایه
(کپیشده از
پایه) و یک
پیکربندی
رمزگشای
بهبوددهنده
است. این
حالت بیشتر
برای تولید
محتوای DASH
استفاده
میشود.
هشدار: smode=splitx
منجر به
باقی ماندن
واحدهای NAL
استخراجکننده
در جریان
بیتی خروجی
میشود، که
این تنها در
صورتی مجاز
است که
خروجی
مبتنی بر ISOBMFF
باشد
گزینهها (پیشرفته) (Options (expert)):
src (cstr): نام
فایل محلی
محتوای
منبع (تنها
هنگام
بارگذاری
صریح فیلتر
استفاده
میشود)
allt (bool, default: false):
بارگذاری
تمام
ترکها حتی
در صورت
ناشناخته
بودن نوع
رسانه
edits (enum, default: auto): عدم
استفاده از
edit listها
(فهرستهای
ویرایش)
* auto: تأخیر ترک
و در صورت
امکان عدم
استفاده از
edit list
* no: نادیده
گرفتن edit list
* strict: استفاده
از edit list حتی اگر
تنها
نشاندهنده
یک تأخیر
باشد
itt (bool, default: false):
تبدیل تمام
آیتمهای root meta
به یک PID واحد
itemid (bool, default: true): حفظ
شناسههای
آیتم در
مشخصههای PID
smode (enum, default: split): حالت
بارگذاری
برای
ترکهای
مقیاسپذیر/کاشی
(scalable/tile)
* split: هر ترک
اعلان
میشود،
استخراجکنندهها
حذف
میشوند
* splitx: هر ترک
اعلان
میشود،
استخراجکنندهها
حفظ
میشوند
* single: یک ترک
واحد اعلان
میشود
(بالاترین
سطح برای
مقیاسپذیر،
پایه کاشی
برای
کاشیکاری)
alltk (bool, default: false):
اعلان
ترکهای
غیرفعالشده
frame_size (uint, default: 1024):
اندازه
فریم برای
نمونههای
صوتی خام
(ارسال frame_size
نمونه در هر
بسته)
expart (bool, default: false): نمایش
تصویر روی
جلد (cover art) به
عنوان یک PID
ویدیویی
اختصاصی
sigfrag (bool, default: false): مشخص
کردن
مرزهای
قطعه (fragment) و
سگمنت منبع
روی
بستههای
خروجی؛ در
صورت
تکهتکه
نبودن منبع
با شکست
مواجه
میشود
tkid (str): اعلان
تنها ترک بر
اساس
پارامتر
دادهشده
* integer value: ترک با
شناسه
دادهشده
را اعلان
میکند
* audio: نخستین
ترک صوتی را
اعلان
میکند
* video: نخستین
ترک
ویدیویی را
اعلان
میکند
* 4CC: نخستین
ترک با 4CC
منطبق برای
نوع
گرداننده (handler
type) را اعلان
میکند
stsd (uint, default: 0): تنها
نمونههای
نگاشتشده
به نمایه
توصیف
نمونه (sample description index)
دادهشده
را استخراج
میکند (۰ به
معنای
استخراج
همه است)
nocrypt (bool): اعلام
ترکهای
رمزنگاریشده
به عنوان
رمزنگارینشده
(بیشتر برای
صادرات/export
استفاده
میشود)
mstore_size (uint, default: 10000000):
اندازه
بافر هدف بر
حسب بایت
هنگام
خواندن از
جریان
حافظه (pipe و
غیره)
mstore_purge (uint, default: 50000): حداقل
اندازه بر
حسب بایت
میان
پاکسازیهای
حافظه
هنگام
خواندن از
جریان
حافظه؛ ۰ به
معنای
پاکسازی در
سریعترین
زمان ممکن
است
mstore_samples (uint, default: 50): حداقل
تعداد
نمونههای
موجود پیش
از پاکسازی
جدولهای
نمونه
هنگام
خواندن از
جریان
حافظه (pipe و
غیره)؛ ۰ به
معنای
پاکسازی در
سریعترین
زمان ممکن
است
strtxt (bool, default: false):
بارگذاری
ترکهای
متنی (apple/tx3g) به
عنوان
ترکهای
متنی
جریانی MPEG-4
xps_check (enum, default: auto): حالت
استخراج
مجموعههای
پارامتر (parameter sets)
از
نمونههای
AVC/HEVC/VVC
* keep: عدم بررسی
نمونه
(هنگام
تولید DASH/HLS/CMAF
فرض را بر
سازگار
بودن فایل
ورودی
میگذارد)
* rem: حذف تمام
xPSهای
درونباندی
(inband) و
اطلاعرسانی
تغییرات
پیکربندی
بر این اساس
* auto: برای smode=splitx
(حالت dasher) روی keep
و در غیر این
صورت روی rem
تنظیم
میشود
nodata (enum, default: no):
کنترل
بارگذاری
دادههای
نمونه
* no: بارگذاری
عادی
* yes: صرفنظر
از
بارگذاری
دادهها
* fake: تخصیص
نمونه بدون
کپی
دادهها
lightp (bool, default: false):
بارگذاری
حداقل
مجموعهای
از
مشخصهها
initseg (str): نام قطعه
مقداردهی
اولیه (init segment)
محلی
هنگامی که
ورودی یک
تکسگمنت ISOBMFF
است
extk (bool, default: true): اجازه
بارگذاری
ترک خارجی
ctso (sint): مقداری که
باید به
افست CTS برای
ترکهایی
با ctts منفی
اضافه شود
- تنظیم روی -1
برای
استفاده از
اطلاعات
جعبه cslg یا
حداقل افست
cts موجود در
ترک
- تنظیم روی -2
برای
استفاده از
حداقل افست
cts موجود در
ترک (cslg
نادیده
گرفته
میشود)
norw (bool, default: false):
صرفنظر از
قالببندی
مجدد
نمونهها -
فقط هنگام
بازنویسی
قطعهها (fragments)
باید
استفاده
شود
keepc (bool, default: true):
نگهداشتن
نمونههای
خراب (تنها
برای منابع
چندپخشی/multicast)
sigfo (bool, default: false): مشخص
کردن
مرزهای
سگمنت روی
بستههای
خروجی برای
منابع DASH یا HLS
(مشابه sigfrag اما
مستقل از
گزینههای
dasher)
drefu (str): جایگزینی
نشانی
اینترنتی (URL)
جعبه dref در
فایل منبع
با مقدار
دادهشده
توضیحات: رمزگشای MPEG-4 BIFS
این فیلتر
فریمهای
دودویی MPEG-4 BIFS
را
مستقیماً
در گراف
صحنه (scene graph)
ترکیبکننده
(compositor)
رمزگشایی
میکند.
نکته: از این
فیلتر
نمیتوان
برای
استخراج
محتوای BIFS به
متن یا xml
استفاده
کرد؛ برای
این منظور
از MP4Box
استفاده
کنید.
بدون گزینه
odfdec
توضیحات: رمزگشای MPEG-4 OD
این فیلتر
فریمهای
دودویی MPEG-4 OD را
مستقیماً
در مدیر
صحنه (scene manager)
ترکیبکننده
(compositor)
رمزگشایی
میکند.
نکته: از این
فیلتر
نمیتوان
برای
استخراج
محتوای OD به
متن یا xml
استفاده
کرد؛ برای
این منظور
از MP4Box
استفاده
کنید.
بدون گزینه
fin
توضیحات: ورودی فایل
این فیلتر
بلوکهای
خام را از
فایل ورودی
به درون یک
زنجیره
فیلتر
توزیع
میکند.
اندازه
بلوک با
استفاده از .I
block_size قابل
تنظیم است.
قالب محتوا
میتواند
از طریق .I mime
اجباری شود
و پسوند
فایل
میتواند
از طریق .I ext
تغییر یابد.
نکته: مگر
اینکه در
سطح نشست
غیرفعال
شده باشد (به
.I -no-probe مراجعه
کنید)،
پسوندهای
فایل
معمولاً
نادیده
گرفته
میشوند و
کاوش قالب
روی اولین
بلوک داده
انجام
میگیرد.
نام فایل
ویژه null برای
ایجاد
فایلی بدون
داده
استفاده
میشود، که
توسط برخی
فیلترها
مانند dasher
مورد نیاز
است.
نام فایل
ویژه rand برای
تولید
دادههای
تصادفی به
کار میرود.
نام فایل
ویژه randsc برای
تولید
دادههای
تصادفی با
پیشوند کد
آغازین 0x000001
استفاده
میشود.
این فیلتر هم از فایلها و هم از اشیاء GF_FileIO به عنوان URL ورودی پشتیبانی میکند.
تزریق بسته (Packet Injecting)
این فیلتر
میتواند
برای تزریق
یک بسته
منفرد به
جای یک فایل
با استفاده
از گزینه .I pck
استفاده
شود.
هیچ ویژگی
خاصی ضمیمه
نمیشود،
مگر یک
مقیاس
زمانی (timescale) در
صورتی که .I ptime
تنظیم شده
باشد.
مثال
gpac fin:pck=str@"My Sample
Text":ptime=2500/100:#CodecID=stxt:#StreamType=text
این دستور PID را به عنوان WebVTT اعلام کرده و یک بسته منفرد با بار داده (payload) «My Sample Text» و مقدار برچسب زمانی (timestamp) ۲۵ ثانیه ارسال میکند.
گزینهها (تخصصی) (OPTIONS (EXPERT))
src (cstr): مکان
فایل منبع
block_size (uint, default: 0):
اندازه
بلوک مورد
استفاده
برای
خواندن
فایل. 0 به
معنای 5000 در
صورت کمتر
بودن فایل
از 500m است، و
در غیر این
صورت 1M
range (lfrac, default: 0-0): محدوده
بایتی
ext (cstr): بازنویسی
و
نادیدهگرفتن
پسوند فایل
mime (cstr): تنظیم نوع
mime فایل
pck (mem): داده برای
استفاده به
جای فایل
ptime (frac, default: 0/0):
زمانبندی
برای بسته
داده؛ اگر den
برابر 0 باشد
نادیده
گرفته
میشود
btplay
توضیحات: رمزگشای BT/XMT/X3D
این فیلتر فایلهای MPEG-4 BIFS (شامل BT و XMT)، VRML97 و X3D (شامل wrl و XML) را مستقیماً در گراف صحنه ترکیبکننده تجزیه میکند.
هنگامی که .I sax_dur روی N تنظیم شده باشد، فیلتر بارگیری تدریجی منبع را انجام میدهد و در صورتی که زمان پردازش بیشتر از N باشد، بارگیری فعلی را لغو میکند.
گزینهها (تخصصی) (OPTIONS (EXPERT))
sax_dur (uint, default: 0): مدت زمان برای تجزیه SAX (در XMT)؛ مقدار 0 تجزیه SAX را غیرفعال میکند
httpin
توضیحات: ورودی HTTP
این فیلتر
بلوکهای
خام را از یک
منبع
دوردست HTTP به
درون یک
زنجیره
فیلتر
توزیع
میکند.
اندازه
بلوک با
استفاده از .I
block_size قابل
تنظیم است و
همچنین
سیاستهای
ذخیرهسازی
موقت (caching) دیسک
میتوانند
تنظیم شوند.
قالب محتوا
میتواند
از طریق .I mime
اجباری شود
و پسوند
فایل
میتواند
از طریق .I ext
تغییر
یابد.
این فیلتر از هر دو طرحواره http و https پشتیبانی میکند و در صورت شکست اتصال TCP، تلاش میکند تا مجدداً به عنوان TLS متصل شود.
نکته: مگر اینکه در سطح نشست غیرفعال شده باشد (به .I -no-probe مراجعه کنید)، پسوندهای فایل معمولاً نادیده گرفته میشوند و کاوش قالب روی اولین بلوک داده انجام میگیرد.
src (cstr): نشانی (URL)
محتوای
منبع
block_size (uint, default: 100000):
اندازه
بلوک مورد
استفاده
برای
خواندن
فایل
cache (enum, default: none): تنظیم
حالت حافظه
موقت (کَش)
* auto: ذخیره
موقت روی
دیسک در
صورت مشخص
بودن طول
محتوا، در
غیر این
صورت بدون
کَش
* disk: ذخیره
موقت روی
دیسک، حذف
پس از پایان
استفاده از
نشست
* keep: ذخیره
موقت روی
دیسک و
نگهداری
آن
* mem: ذخیره در
حافظه، حذف
پس از پایان
استفاده از
نشست
* mem_keep: ذخیره در
حافظه،
نگهداری
پس از تخصیص
مجدد نشست
اما انتقال
به mem پس از
اولین
بارگیری
* none: بدون کَش
* none_keep: ذخیره در
حافظه،
نگهداری
پس از تخصیص
مجدد نشست
اما انتقال
به none پس از
اولین
بارگیری
range (lfrac, default: 0-0):
تنظیم
محدوده
بایتی،
بهصورت
کسر
ext (cstr): جایگزینی
پسوند فایل
mime (cstr): تنظیم نوع
mime فایل
blockio (bool, default: false):
استفاده از
ورودی/خروجی
مسدودکننده
(blocking IO)
idelay (uint, default: 0): به
تأخیر
انداختن
اولین
درخواست به
میزان
میلیثانیه
دادهشده
svgplay
توضیحات: رمزگشای SVG
این فیلتر فایلهای SVG را مستقیماً در نمودار صحنه صفحهبند (compositor) تجزیه میکند.
هنگامی که .I sax_dur بر روی N تنظیم شود، فیلتر بارگیری تدریجی منبع را انجام میدهد و در صورتی که زمان پردازش بیشتر از N باشد، بارگیری فعلی را لغو میکند.
گزینهها (پیشرفته) (Options (expert)):
sax_dur (uint, default: 0): مدتزمان بارگیری برای تجزیه SAX، مقدار 0 تجزیه SAX را غیرفعال میکند
rfimg
توضیحات: بازقاببند (reframer) پروندههای JPG/J2K/PNG/BMP
این فیلتر فایلها/دادههای JPG/J2K/PNG/BMP را تجزیه کرده و PID تصویری و فریمهای متناظر را در خروجی تولید میکند.
پسوندهای
زیر برای PNG
قالب
پیکسلی را
برای
تصاویر RGBA
تغییر
میدهند:
* pngd: استفاده
از قالب
پیکسلی RGB+depth map
* pngds: استفاده
از قالب
پیکسلی RGB+depth(7bits)+shape(MSB
of alpha channel)
بدون گزینه
imgdec
توضیحات: رمزگشای PNG/JPG
این فیلتر تصاویر JPEG و PNG را رمزگشایی میکند.
بدون گزینه
rfadts
توضیحات: بازقاببند (reframer) ADTS
این فیلتر فایلها/دادههای AAC را تجزیه کرده و PID صوتی و فریمهای متناظر را در خروجی تولید میکند.
گزینهها (پیشرفته) (Options (expert)):
frame_size (uint, default: 1024):
اندازه
فریم AAC بر
حسب
نمونههای
صوتی
index (dbl, default: 1.0): طول
پنجره
نمایهگذاری
ovsbr (bool, default: false): اجبار
به
بیشنمونهبرداری
SBR
(مقیاسهای
زمانی را در
۲ ضرب
نمیکند)
sbr (enum, default: no): تنظیم
سیگنالدهی
SBR
* no: بدون
هیچگونه
سیگنالدهی
SBR
* imp:
سیگنالدهی
SBR سازگار با
گذشته (صدا
بهصورت AAC-LC
اعلام
میشود)
* exp:
سیگنالدهی
صریح SBR (صدا
بهصورت AAC-SBR
اعلام
میشود)
ps (enum, default: no): تنظیم
سیگنالدهی
PS
* no: بدون
هیچگونه
سیگنالدهی
PS
* imp:
سیگنالدهی
PS سازگار با
گذشته (صدا
بهصورت AAC-LC
اعلام
میشود)
* exp:
سیگنالدهی
صریح PS (صدا
بهصورت AAC-PS
اعلام
میشود)
expart (bool, default: false):
ارائه
تصاویر
بهصورت یک
PID ویدیویی
اختصاصی
aacchcfg (sint, default: 0): تنظیم
پیکربندی
کانال AAC به
این مقدار
در صورت
مفقود بودن
در سرایند
ADTS؛ از مقدار
منفی برای
جایگزینی
همیشگی
استفاده
کنید
توضیحات: بازفریمساز LATM
این فیلتر AAC را در فایلها/دادههای LATM تجزیه کرده و PID و فریمهای صوتی متناظر را در خروجی ارائه میدهد.
گزینهها (تخصصی) (OPTIONS (expert)):
frame_size (uint, default: 1024):
اندازه
فریم AAC بر
حسب
نمونههای
صوتی
index (dbl, default: 1.0): طول
پنجره
نمایهسازی
rfmp3
توضیحات: بازفریمساز MP3
این فیلتر فایلها/دادههای صوتی MPEG-1/2 را تجزیه کرده و PID و فریمهای صوتی متناظر را در خروجی ارائه میدهد.
گزینهها (تخصصی) (OPTIONS (expert)):
index (dbl, default: 1.0): طول
پنجره
نمایهسازی
expart (bool, default: false): ارائه
تصاویر به
عنوان یک PID
ویدیویی
اختصاصی
forcemp3 (bool, default: true): اجبار
سیگنالدهی
mp3 برای MPEG-2 Audio layer 3
faad
توضیحات: رمزگشای FAAD
این فیلتر جریانهای AAC را از طریق کتابخانه faad رمزگشایی میکند.
بدون گزینه
maddec
توضیحات: رمزگشای MAD
این فیلتر جریانهای صوتی MPEG 1/2 را از طریق کتابخانه libmad رمزگشایی میکند.
بدون گزینه
j2kdec
توضیحات:
رمزگشای OpenJPEG2000
نسخه: 2.x
این فیلتر جریانهای JPEG2000 را از طریق کتابخانه OpenJPEG2000 رمزگشایی میکند.
بدون گزینه
rfac3
توضیحات: بازفریمساز AC3
این فیلتر فایلها/دادههای AC3 و E-AC3 را تجزیه کرده و PID و فریمهای صوتی متناظر را در خروجی ارائه میدهد.
گزینهها (تخصصی) (OPTIONS (expert)):
index (dbl, default: 1.0): طول پنجره نمایهسازی
rfac4
توضیحات: بازفریمساز AC4
این فیلتر فایلها/دادههای AC4 را تجزیه کرده و PID و فریمهای صوتی متناظر را در خروجی ارائه میدهد.
بدون گزینه
توضیحات: نویسندهٔ AC4
این فیلتر جریانهای MPEG-H Audio را به دادههای کپسولهشدهٔ AC4 تبدیل میکند.
گزینههای تخصصی (OPTIONS (EXPERT))
rcfg (bool، پیشفرض: true): اجبار به تکرار پیکربندی رمزگشا در هر I-frame
rfamr
توضیحات: بازفریمبند AMR/EVRC
این فیلتر فایلها/دادههای AMR، AMR Wideband، EVRC و SMV را تجزیه کرده و فریمها و PID صوتی متناظر را در خروجی تولید میکند.
گزینههای تخصصی (OPTIONS (EXPERT))
index (dbl، پیشفرض: 1.0): طول پنجرهٔ نمایهسازی
oggdmx
توضیحات: تفکیککنندهٔ OGG
این فیلتر فایلها/دادههای OGG را به مجموعهای از فریمها و PIDهای رسانهای تفکیک میکند.
گزینههای تخصصی (OPTIONS (EXPERT))
index (dbl،
پیشفرض: 1.0):
طول پنجرهٔ
نمایهسازی
(پیادهسازی
نشده است؛
برای
غیرفعال
کردن بررسی
جریان جهت
تعیین
مدتزمان
از 0 استفاده
کنید)،
expart (bool، پیشفرض:
false): ارائهٔ
تصاویر
بهعنوان
یک PID
ویدیویی
اختصاصی
vorbisdec
توضیحات: رمزگشای Vorbis
این فیلتر جریانهای Vorbis را از طریق کتابخانهٔ libvorbis رمزگشایی میکند.
بدون گزینه
theoradec
توضیحات: رمزگشای Theora
این فیلتر جریانهای Theora را از طریق کتابخانهٔ libtheora رمزگشایی میکند.
بدون گزینه
m2tsdmx
توضیحات: تفکیککنندهٔ MPEG-2 TS
این فیلتر فایلها/دادههای MPEG-2 Transport Stream را به مجموعهای از فریمها و PIDهای رسانهای تفکیک میکند.
گزینههای تخصصی (OPTIONS (EXPERT))
temi_url (cstr): تحمیل
نشانی
اینترنتی (URL)
مربوط به TEMI
dsmcc (bool، پیشفرض:
no):
فعالسازی
گیرندهٔ DSMCC
seeksrc (bool،
پیشفرض: true):
پرش مجدد
فایل منبع
محلی به
مبدا پس از
راهاندازی
تمام
برنامهها
sigfrag (bool،
پیشفرض: false):
اعلان
مرزهای بخش
(segment) در
بستههای
خروجی برای
منابع DASH یا HLS
dvbtxt (bool، پیشفرض:
false): صادر کردن
جریانهای
تلهتکست DVB
upes (enum، پیشفرض:
no):
نگهداشتن
جریانهای
ناشناختهٔ PES
* no: نادیده
گرفتن
جریانها
* info: اعلان
جریان
بهصورت
صوری (عدم
ارسال
دادهها به
جلو)، dvbtxt را
فعال
میکند
* full: اعلان
جریان و
ارسال
دادهها
mappcr (bool،
پیشفرض: true):
نگاشت مجدد
PCR و
برچسبهای
زمانی به یک
خط زمانی
پیوسته
sigfo (bool، پیشفرض:
false): اعلان
مرزهای بخش
در
بستههای
خروجی برای
منابع DASH یا HLS
(مشابه sigfrag،
اما مستقل
از
گزینههای
dasher)
توضیحات: ورودی UDP/TCP
این فیلتر سوکتهای ورودی عمومی TCP و UDP را مدیریت میکند. همچنین میتواند ورودی MPEG-2 TS بر روی RTP را شناسایی کند. شناسایی خودکار MPEG-2 TS بر روی UDP/RTP بهطور پیشفرض فعال است، اما میتوان آن را غیرفعال کرد.
قالب داده را میتوان با تنظیم گزینههای .I ext یا .I mime مشخص کرد. در صورت عدم تنظیم، قالب با بررسی نخستین بستهٔ داده حدس زده خواهد شد.
- سوکتهای
UDP برای URLهای
مبدأ با
قالب udp://NAME
استفاده
میشوند
- سوکتهای TCP
برای URLهای
مبدأ با
قالب tcp://NAME
استفاده
میشوند
- سوکتهای
دامنه
یونیکس UDP
برای URLهای
مبدأ با
قالب udpu://NAME
استفاده
میشوند
- سوکتهای
دامنه
یونیکس TCP
برای URLهای
مبدأ با
قالب tcpu://NAME
استفاده
میشوند
هنگامی که
درگاهها
در URL مشخص
شده باشند و
از
جداکنندههای
پیشفرض
گزینهها
استفاده
شود (رجوع
کنید به gpac -h doc)، URL
باید یکی از
موارد زیر
را رعایت
کند:
- یک '/' در
انتها
داشته
باشد،
مانند udp://localhost:1234/[:opts]
- از
جداکنندهٔ
gpac استفاده
کند، مانند
udp://localhost:1234[:gpac:opts]
هنگامی که
سوکت در
حالت
نگهداشت
اتصال (keep-alive) .I ka
گوش میدهد:
- تنها یک
اتصال مجاز
است و یک PID
خروجی واحد
تولید
خواهد شد
- هر رویداد
بستهشدن
اتصال باعث
تخلیهٔ
خطلوله (pipeline flush)
خواهد شد
در OSX با
بازپخش
بسته در
ماشین
مجازی (VM packet replay)،
باید
مسیریابی
چندپخشی را
اجبار
کنید، برای
نمونه: route add -net 239.255.1.4/32
-interface vboxnet0
تنظیم زمان (TIME REGULATION)
این فیلتر از زمان میان دو بستهٔ آخر دریافتشده برای برآورد اینکه هر چند وقت یکبار باید ورودیها را بررسی کند، استفاده میکند. حداقل و حداکثر زمان انتظار میان دو فراخوانی با گزینهٔ .I mwait تعیین میشود. ممکن است لازم باشد حداکثر زمان برای منابع با نرخ بیت بسیار بالا کاهش یابد.
گزینهها (تخصصی) (OPTIONS)
src (cstr): نشانی
محتوای
مبدأ
block_size (uint،
پیشفرض: 0x60000):
اندازهٔ
بلوک مورد
استفاده
برای
خواندن
سوکت
port (uint، پیشفرض:
1234): درگاه
پیشفرض در
صورت مشخص
نشدن
ifce (cstr): رابط
چندپخشی
پیشفرض
listen (bool، پیشفرض:
false): مشخص
میکند که
سوکت ورودی
در حالت
سرور کار
کند
ka (bool، پیشفرض:
false): زنده
نگهداشتن
سوکت در
صورت نبود
اتصالهای
بیشتر
maxc (uint، پیشفرض:
+I): حداکثر
تعداد
اتصالهای
همزمان
tsprobe (bool،
پیشفرض: true):
پویش برای
دادههای MPEG-2
TS، بهصورت RTP
یا UDP خام. در
صورت مشخص
شدن mime یا ext و
عدم تطابق
آنها با
mimeها/پسوندهای
MPEG-2 TS غیرفعال
میشود
ext (str): مشخص کردن
پسوند فایل
دادههای udp
mime (str): مشخص کردن
نوع mime
دادههای udp
block (bool، پیشفرض:
false): تنظیم
حالت
مسدودکننده
(blocking) برای
سوکت(ها)
timeout (uint،
پیشفرض: 10000):
تنظیم مهلت
زمانی بر
حسب
میلیثانیه
برای
سوکت(های) UDP؛
مقدار 0 برای
غیرفعال
کردن مهلت
زمانی
mwait (v2di، پیشفرض:
1x30): تنظیم
حداقل و
حداکثر
زمان
انتظار بر
حسب
میلیثانیه
برای
جلوگیری از
سرکشی بیش
از حد (polling)
reorder_pck (uint،
پیشفرض: 100):
تأخیر بر
حسب تعداد
بسته برای
بازآرایی RTP
(دادههای M2TS
بر روی RTP)
reorder_delay (uint،
پیشفرض: 10):
میزان
تأخیر بر
حسب
میلیثانیه
برای
بازآرایی RTP
(دادههای M2TS
بر روی RTP)
ssm (strl): فهرست IPها
جهت
گنجاندن در
چندپخشی
مبدأ-خاص (SSM)
ssmx (strl): فهرست IPها
جهت مستثنی
کردن از
چندپخشی
مبدأ-خاص (SSM)
dvbin
توضیحات: DVB برای لینوکس
این فیلتر دادههای خام MPEG-2 TS را از کارتهای DVB-T/T2 و DVB-S/S2 در لینوکس میخواند.
طرحوارهٔ
URL مورد
استفاده dvb://
است که
نحوهای زیر
را دارد:
* `dvb://CHAN`: روی
کانال CHAN در
فایل
پیکربندی
کانالها
تنظیم
میشود (tune
میکند).
* `dvb://+CHAN`: روی
مالتیپلکس
حاوی کانال
CHAN تنظیم
میشود و
همهٔ
برنامهها
را ارائه
میدهد.
* `dvb://=N`: روی
کانال N-اُم
در فایل
پیکربندی
کانالها
تنظیم
میشود.
* `dvb://@FREQ`: روی
فرکانس FREQ
تنظیم
میشود و
تمام
کانالهای
موجود در
مالتیپلکس
را ارائه
میدهد.
* `dvb://@=N`: روی
فرکانس N-اُم
تنظیم
میشود و
تمام
کانالهای
موجود در
مالتیپلکس
را ارائه
میدهد.
* `dvb://@chlist`: گزینهٔ .I chans
را با
کانالهای
موجود در
فایل
پیکربندی
مقداردهی
میکند و
کار دیگری
انجام
نمیدهد.
هنگام تنظیم بر پایهٔ نام کانال CHAN، نخستین مدخل در فایل پیکربندی کانالها که با CHAN آغاز شود استفاده خواهد شد.
فایل
پیکربندی
کانالها
از طریق .I chcfg
تعیین
میشود.
قالب مورد
انتظار VDR به
همان صورت
تولیدشده
توسط w_scan است،
با نحوی
گسترشیافته
برای خطوط
توضیح که با #
آغاز
میشوند.
در یک خط
توضیح،
کلیدواژههای
زیر
میتوانند
برای
بازنویسی
مقادیر
پیشفرض
استفاده
شوند:
* `dev=N`: تنظیم
نمایهٔ
آداپتور (N
عدد صحیح) یا
مسیر کامل (N
رشته).
* `idx=K`: تنظیم
نمایهٔ
فرانتاند K.
* `csidx=S`: تنظیم
نمایهٔ
سوییچ
تثبیتشده
(committed switch) برای DiSEqC.
برای مشاهدهٔ کانالهای پیشفرض، از دستور gpac -hx dvbin استفاده کنید.
src (cstr): نشانی
اینترنتی (URL)
محتوای
منبع
block_size (uint،
پیشفرض: 65536):
اندازه
بلوک مورد
استفاده
برای
خواندن
دستگاه
chcfg (cstr، پیشفرض:
$GCFG/channels.conf): مسیر
فایل
پیکربندی
کانالها
dev (str، پیشفرض: 0):
مسیر
آداپتور DVB -
اگر نویسه
نخست یک عدد
باشد، این
اندیس
دستگاه است
idx (uint، پیشفرض:
0): اندیس frontend
timeout (uint،
پیشفرض: 5000):
زمان
انتظار (timeout) به
میلیثانیه
پیش از شکست
تنظیم
فرکانس (tune)
csleep (uint، پیشفرض:
15): زمان خواب
پیکربندی
به
میلیثانیه
میان
دستورهای DiSEqC
csidx (uint، پیشفرض:
0): اندیس
سوئیچ
اختصاصی (committed switch
index) برای DiSEqC
chans (strl): فهرست
همه
کانالها؛
تنها برای
نشانی dvb://@chlist
مقداردهی
میشود
osvcdec
توضیحات: رمزگشای OpenSVC
این فیلتر جریانهای مقیاسپذیر AVC|H264 را از طریق کتابخانه OpenSVC رمزگشایی میکند.
بدون گزینه
vtbdec
توضیحات: رمزگشای VideoToolBox
این فیلتر جریانهای ویدیویی را از طریق VideoToolBox در OSX/iOS (فرمتهای MPEG-2، H263، AVC|H264، HEVC، ProRes) رمزگشایی میکند. این فیلتر امکان ارسال فریم به GPU یا کپی مستقیم فریم را فراهم میکند.
گزینهها (پیشرفته) (Options (expert)):
reorder (uint،
پیشفرض: 6):
تعداد
فریمها
برای
انتظار جهت
بازآرایی
زمانی (temporal re-ordering)
no_copy (bool،
پیشفرض: true):
ارسال
فریمهای
رمزگشاییشده
بهصورت
بافتهای OpenGL
(مقدار true) یا
بستههای
کپیشده
(مقدار false)
ofmt (pfmt، پیشفرض:
nv12): تنظیم
فرمت
پیشفرض
پیکسل برای
ویدیوی
رمزگشاییشده؛
در صورت
یافت نشدن،
به nv12
برگردانده
میشود
disable_hw (bool،
پیشفرض: false):
غیرفعالسازی
رمزگشایی
سختافزاری
wait_sync (bool،
پیشفرض: false،
قابل
بهروزرسانی):
انتظار
برای فریم
همگامسازی
(sync frame) پیش از
رمزگشایی
mcdec
توضیحات: رمزگشای MediaCodec
این فیلتر جریانهای ویدیویی را با استفاده از رمزگشای سختافزاری در دستگاههای android رمزگشایی میکند.
گزینهها (پیشرفته) (Options (expert)):
disable_gl (bool، پیشفرض: false): غیرفعالسازی انتقال بافت OpenGL
lsrdec
توضیحات: رمزگشای MPEG-4 LASeR
این فیلتر
فریمهای
باینری MPEG-4 LASeR
را
مستقیماً
درون گراف
صحنه (scene graph)
ترکیبکننده
(compositor)
رمزگشایی
میکند.
نکته: از این
فیلتر
نمیتوان
برای
استخراج (dump)
محتوای LASeR به
متن یا xml
استفاده
کرد؛ برای
این منظور
از MP4Box
استفاده
کنید.
بدون گزینه
safdmx
توضیحات: دیمالتیپلکسر SAF
این فیلتر فایلها/دادههای SAF (قالب MPEG-4 Simple Aggregation Format for LASeR) را به مجموعهای از PIDها و فریمهای رسانهای دیمالتیپلکس میکند.
بدون گزینه
dashin
توضیحات: کلاینت DASH و HLS
این فیلتر مانیفستهای MPEG-DASH، HLS و MS Smooth را میخواند.
این حالت
پیشفرض
است که در
آن، فیلتر
شناسههای
رسانه (PIDها) و
فریمها را
از منابع
مشخصشده
در manifest تولید
میکند.
رفتار
پیشفرض،
انجام
انطباق بر
اساس .I algo است،
اما فیلتر
میتواند:
- بدون
انطباق
اجرا شود تا
بیشترین
کیفیت را
دریافت کند.
مثال
gpac -i MANIFEST_URL:algo=none:start_with=max_bw -o dest.mp4
- بدون
انطباق
اجرا شود و
تمام
کیفیتها
را دریافت
کند.
مثال
gpac -i MANIFEST_URL:split_as -o dst=$File$.mp4
حالت فایل (File mode)
هنگامی که
.I forward روی file
تنظیم شود،
کلاینت
فایلهای
رسانه را
بدون demultiplex
کردن
فوروارد
میکند.
این حالت
بیشتر برای
ارائهٔ
نشست DASH به یک
کارساز
فایل مانند
ROUTE یا HTTP
استفاده
میشود.
در این
حالت، manifest
بهصورت یک
PID خروجی
فوروارد
میشود.
هشدار: این
حالت
نمیتواند
از طریق
ارثبری
تنظیم شود،
زیرا
قابلیتهای
پیوند
فیلتر را
تغییر
میدهد.
فیلتر
حتماً باید
بهصورت
صریح تعریف
شود.
برای
ارائهٔ یک
نشست زندهٔ
DASH به route:
gpac -i MANIFEST_URL dashin:forward=file -o route://225.0.0.1:8000/
اگر منبع دارای جریانهای رسانهای وابسته (scalability) باشد و نیاز به ارسال تمام کیفیتها و سگمنتهای مقداردهی اولیه باشد، .I split_as را اضافه کنید.
حالتهای مرز سگمنت (Segment bound modes)
هنگامی که .I forward روی segb یا mani تنظیم شود، کلاینت فریمهای رسانه را (پس از demultiplex کردن) به همراه مرزهای سگمنت و فرگمنت فایلهای منبع فوروارد میکند.
این حالت میتواند برای پردازش دادههای رسانه و تولید مجدد همان manifest یا قطعهبندی (segmentation) به کار رود.
مثال
gpac -i MANIFEST_URL:forward=mani cecrypt:cfile=DRM.xml -o
encrypted/live.mpd:pssh=mv
این دستور یک نشست DASH موجود را رمزنگاری کرده و PSSH را به درون manifest و سگمنتها تزریق میکند.
مثال
gpac -i MANIFEST_URL:forward=segb cecrypt:cfile=DRM.xml -o
encrypted/live.m3u8
این دستور یک نشست DASH موجود را رمزنگاری کرده و با استفاده از همان نامها و مرزهای سگمنت، آن را مجدداً بهصورت HLS منتشر میکند.
این حالت برای اطمینان از کامل بودن اولین سگمنت دریافتشده، مقدار .I noseek=true و برای دریافت تمام کیفیتها، مقدار .I split_as=true را تحمیل میکند.
به هر
بستهٔ نخست
از یک
سگمنت،
ویژگیهای
زیر پیوست
خواهد شد:
* `CueStart`:
نشاندهندهٔ
شروع یک
سگمنت است
* `FileNumber`: شمارهٔ
سگمنت فعلی
* `FileName`: نام فایل
سگمنت فعلی
بدون نشانی
پایهٔ (base URL) manifest
(شامل MPD یا
مستر HLS)
* `DFPStart`: اگر این
نخستین
بسته در
دوره (period) باشد
با مقدار 0
تنظیم
میشود؛ در
غیر این
صورت وجود
ندارد
اگر .I forward روی mani
تنظیم شده
باشد،
نخستین
بسته از
سگمنتی که
پس از
بهروزرسانی
manifest ارسال
میشود نیز
بار دادهٔ (payload)
manifest را
بهعنوان
یک ویژگی به
همراه
خواهد داشت:
* `DFManifest`: شامل manifest
اصلی (MPD،
مستر M3U8) است
* `DFVariant`: شامل
فهرستی از
لیستهای
پخش فرزند HLS
بهصورت
رشته برای
کیفیت
دادهشده
است
* `DFVariantName`: شامل
فهرستی از
نامهای
لیستهای
پخش فرزند
مرتبط HLS، با
همان ترتیب
manifestها در DFVariant
است
به هر PID
خروجی،
ویژگیهای
زیر اختصاص
داده خواهد
شد:
* `DFMode`: برای segb روی 1
و برای mani روی 2
تنظیم
میشود
* `DCue`: روی inband
تنظیم
میشود
* `DFPStart`: روی
مقدار شروع
دورهٔ (period)
فعلی تنظیم
میشود
* `FileName`: روی
سگمنت
مقداردهی
اولیهٔ (init segment)
مرتبط، در
صورت وجود،
تنظیم
میشود
* `Representation`: روی
شناسهٔ representation
مرتبط در manifest
تنظیم
میشود
* `DashDur`: روی
میانگین
مدتزمان
سگمنت طبق
آنچه در manifest
آمده است
تنظیم
میشود
* `source_template`: روی true
تنظیم
میشود تا
نشان دهد
الگوی منبع
شناختهشده
است
* `stl_timescale`: مقیاس
زمانی
استفادهشده
توسط SegmentTimeline، یا 0
در صورت
نبود SegmentTimeline
* `init_url`: نشانی
اینترنتی
مقداردهی
اولیهٔ
حلنشده
(همانطور
که در MPD یا در
لیست پخش variant
آمده است)
* `manifest_url`: نشانی URL
فایل manifest
* `hls_variant_name`: نام
لیست پخش variant
در HLS
(همانطور
که در لیست
پخش مستر HLS
آمده است)
هنگامی که dasher به همراه این حالت استفاده شود، تمام سگمنتهای تولیدشده مجبور خواهند بود دقیقاً همان نام، مدتزمان و ویژگیهای قطعهبندی (fragmentation) سگمنتهای ورودی را داشته باشند. بنابراین برای نشستهایی که روی فضای ذخیرهسازی محلی ذخیره یا تولید میشوند، توصیه نمیشود که خروجی در همان دایرکتوری ایجاد شود.
auto_switch (sint،
پیشفرض: 0):
تعویض
کیفیت در هر N
قطعه
* positive: رفتن به
کیفیت
بالاتر یا
چرخش به
پایینترین
کیفیت
* negative: رفتن به
کیفیت
پایینتر
یا چرخش به
بالاترین
کیفیت
* 0: غیرفعال
segstore (enum،
پیشفرض: mem):
فعالسازی
حافظهٔ
پنهان فایل
* mem: تمام
فایلها در
حافظه
ذخیره
میشوند،
بدون
ورودی/خروجی
دیسک
* disk: فایلها
روی دیسک
ذخیره
میشوند
اما پس از
پخش دور
ریخته
میشوند
* cache: تمام
فایلها
روی دیسک
ذخیره و
نگهداری
میشوند
algo (str،
پیشفرض: gbuf، Enum:
none|grate|gbuf|bba0|bolaf|bolab|bolau|bolao|JS):
الگوریتم
انطباق
مورد
استفاده
* none: بدون منطق
انطباق
* grate: الگوریتم
قدیمی GPAC بر
اساس نرخ در
دسترس
* gbuf: الگوریتم
قدیمی GPAC بر
اساس میزان
پر بودن
بافر
* bba0: BBA-0
* bolaf: BOLA Finite
* bolab: BOLA Basic
* bolau: BOLA-U
* bolao: BOLA-O
* JS: استفاده
از فایل JS (با
مسیر
مشخصشده
یا در $GSHARE/scripts/)
برای
الگوریتم
(پسوند .js
میتواند
حذف شود)
start_with (enum،
پیشفرض: max_bw):
معیارهای
انتخاب
اولیه
* min_q: شروع با
پایینترین
کیفیت
* max_q: شروع با
بالاترین
کیفیت
* min_bw: شروع با
پایینترین
نرخ بیت
* max_bw: شروع با
بالاترین
نرخ بیت؛
اگر از
تایلها
استفاده
شود، برای
تمام
تایلهای
با اولویت
پایین
پهنای باند
کمتر (زیر
حداکثر)
انتخاب
میشود
* max_bw_tiles: شروع با
بالاترین
نرخ بیت؛
اگر از
تایلها
استفاده
شود، برای
تمام
تایلهای
با اولویت
پایین
کمترین
پهنای باند
انتخاب
خواهد شد
max_res (bool،
پیشفرض: true):
استفاده از
بیشترین
تفکیکپذیری
رسانه برای
پیکربندی
نمایشگر
abort (bool، پیشفرض:
false): اجازهٔ
لغو در حین
بارگیری
قطعه
use_bmin (enum،
پیشفرض: auto):
مدیریت
بافر پخش
* no: استفاده
از تنظیمات
پیشفرض
پخشکننده
* auto:
اطلاعرسانی
مدتزمان
قطعه به
پخشکننده
در صورتی که
حالت تأخیر
کم نباشد
* mpd: استفاده
از کمترین
زمان بافر
مشخصشده
در MPD
shift_utc (sint،
پیشفرض: 0):
جابهجایی
ساعت UTC در DASH به
میلیثانیه
spd (sint، پیشفرض:
-I): تأخیر
نمایش
پیشنهادی
به
میلیثانیه
mcast_shift (sint،
پیشفرض: 0):
جابهجایی
زمان
درخواستها
به
میلیثانیه
دادهشده
برای منابع
چندپخشی
server_utc (bool،
پیشفرض: yes):
استفاده از
سرآیندهای
HTTP با نام ServerUTC یا
Date بهجای UTC
محلی
screen_res (bool،
پیشفرض: yes):
استفاده از
تفکیکپذیری
صفحه در
مرحلهٔ
انتخاب
init_timeshift (sint،
پیشفرض: 0):
تنظیم timeshift
اولیه به
میلیثانیه
(اگر >0) یا بر
حسب درصد
بافر timeshift (اگر <0)
tile_mode (enum،
پیشفرض: none):
حالت
انطباق
تایل
* none: نرخ بیت
بهطور
برابر میان
تمام
تایلها
تقسیم
میشود
* rows: نرخ بیت
برای هر سطر
از تایلها
با شروع از
بالا کاهش
مییابد؛
نرخ یکسان
برای هر
تایل در آن
سطر
* rrows: نرخ بیت
برای هر سطر
از تایلها
با شروع از
پایین کاهش
مییابد؛
نرخ یکسان
برای هر
تایل در آن
سطر
* mrows: نرخ بیت
فقط برای
سطرهای
بالا و
پایین کاهش
مییابد؛
نرخ یکسان
برای هر
تایل در آن
سطر
* cols: نرخ بیت
برای هر
ستون از
تایلها با
شروع از چپ
کاهش
مییابد؛
نرخ یکسان
برای هر
تایل در آن
ستون
* rcols: نرخ بیت
برای هر
ستون از
تایلها با
شروع از
راست کاهش
مییابد؛
نرخ یکسان
برای هر
تایل در آن
ستون
* mcols: نرخ بیت
فقط برای
ستونهای
چپ و راست
کاهش
مییابد؛
نرخ یکسان
برای هر
تایل در آن
ستون
* center: کاهش نرخ
بیت برای
تمام
تایلهای
واقع در
لبهٔ تصویر
* edges: کاهش نرخ
بیت برای
تمام
تایلهای
واقع در
مرکز
تصویر
tiles_rate (uint،
پیشفرض: 100):
مقدار
پهنای باند
برای
استفاده در
هر سطح
کیفیت را
مشخص
میکند. نرخ
بهصورت
بازگشتی در
هر سطح
اعمال
میشود،
مثلاً اگر 50%
باشد، سطح ۱
مقدار 50%،
سطح ۲ مقدار
25% و... دریافت
میکند. اگر
100 باشد،
تخصیص
خودکار نرخ
با
بیشینهسازی
کیفیت به
ترتیب
اولویت
انجام
خواهد شد.
اگر 0 باشد،
جریان بیت
میان
تایلها/کیفیتها
هموارسازی
نمیشود و
ممکن است
همزمانی
میان
رسانههای
مختلف رخ
دهد
delay40X (uint،
پیشفرض: 500):
تأخیر بر
حسب
میلیثانیه
برای
انتظار
میان دو
خطای 40X روی
همان قطعه
exp_threshold (uint،
پیشفرض: 100):
تأخیر بر
حسب
میلیثانیه
برای
انتظار پس
از AvailabilityEndDate قطعه
پیش از آنکه
قطعه مفقود
تلقی شود
switch_count (uint،
پیشفرض: 1):
مشخص
میکند که
کلاینت پیش
از افزایش
پهنای باند
باید چند
قطعه منتظر
بماند. اگر 0
باشد،
تعویض به
محض کافی
بودن پهنای
باند رخ
میدهد،
اما این
حالت در
برابر
تغییرات
شبکه
آسیبپذیرتر
است
aggressive (bool،
پیشفرض: no):
در صورت
فعال بودن،
الگوریتم
تعویض
نزدیکترین
پهنای باند
متناسب با
نرخ
بارگیری
موجود را
هدف قرار
میدهد. در
صورت no،
الگوریتم
تعویض
بازنمایی
با کمترین
نرخ بیتی را
که بالاتر
از مورد در
حال پخش
فعلی است
هدف قرار
میدهد
(مثلاً تلاش
نمیکند به
حداکثر
پهنای باند
جهش کند)
debug_as (uintl): تنها
مجموعههای
انطباق
مشخصشده
با
نمایههایشان
(مبتنی بر 0)
در MPD را پخش
میکند
speedadapt (bool،
پیشفرض: no):
فعالسازی
انطباق بر
اساس سرعت
پخش
noxlink (bool،
پیشفرض: no):
غیرفعالسازی
xlink در صورتی
که period هم
دارای xlink و هم
مجموعههای
انطباق
باشد
query (str): تنظیم
رشتهٔ
پرسوجو
(بدون علامت
'?' ابتدایی)
جهت الحاق
به xlink
دورهها (periods)
split_as (bool،
پیشفرض: no):
جداسازی
تمام
کیفیتها
در
مجموعههای
انطباق
مختلف و
جاریسازی
تمام
کیفیتها.
بازنماییهای
وابسته
(مقیاسپذیر)
بهصورت
مستقل در
نظر گرفته
میشوند
noseek (bool، پیشفرض:
no):
غیرفعالسازی
پرش (seeking) به
قطعه(های)
اولیه در
حالت پویا
(کاربردی در
زمان عدم
تطابق
ساعتهای UTC)
bwcheck (uint،
پیشفرض: 5):
حداقل زمان
بر حسب
میلیثانیه
بین دو
بررسی
پهنای باند
هنگام مجاز
بودن لغو
بارگیری
قطعه
lowlat (enum، پیشفرض:
early): سیاست
زمانبندی
قطعه در
حالت تأخیر
کم
* no:
غیرفعالسازی
تأخیر کم
* strict: رعایت
دقیق آفست AST
در حالت
تأخیر کم
* early: اجازهٔ
واکشی
قطعات
زودتر از AST
آنها در
حالت تأخیر
کم هنگامی
که PID ورودی
خالی است
forward (enum،
پیشفرض: none):
حالت
بازفرستادن
قطعه
* none: خواندن
عادی DASH
* file: فایلها
تفکیک (demultiplex)
نمیشوند و
بهصورت
PIDهای فایل
بازفرستاده
میشوند
(مستلزم segstore=mem)
* segb:
فعالسازی .I
split_as،
سیگنالدهی
مرزهای
قطعه و
فرگمنت (sigfrag) در
منابع و درج
نشانههای
DASH
* mani: مشابه segb و
همچنین
بازفرستادن
مانیفستها
fmodefwd (bool،
پیشفرض: yes):
بازفرستادن
بستهها
بهجای
رونوشت
گرفتن از
آنها در
حالت
بازفرستادن
فایل.
رونوشت
بسته ممکن
است عملکرد
را در حالت
تأخیر کم
بهبود بخشد
skip_lqt (bool،
پیشفرض: no):
غیرفعالسازی
رمزگشایی
تایلهای
با بیشترین
نشانههای
افت کیفیت
(غیرقابلمشاهده،
خارج از
میدان دید)
برای اهداف
اشکالزدایی
llhls_merge (bool،
پیشفرض: yes):
ادغام
بخشهای
محدودهٔ
بایتی LL-HLS در
یک درخواست
محدودهٔ
بایتی بازِ
واحد
groupsel (bool،
پیشفرض: no):
انتخاب
گروهها بر
اساس زبان
(بهطور
پیشفرض
تمام
گروههای
قابل پخش
نشان داده
میشوند)
xas (enum، پیشفرض:
codec):
فعالسازی
تعویض بین
مجموعههای
انطباق (در
صورت تنظیم .I
split_as غیرفعال
است)
* no: غیرفعال
* codec: تعویض بین
مجموعهها
تنها برای
همان codec مجاز
است
* all: تعویض بین
مجموعهها
برای انواع
مختلف
بازنمایی
مجاز است
chain_mode (enum،
پیشفرض: on):
حالت
زنجیرهسازی
MPD
* off: عدم
استفاده از
زنجیرهسازی
MPD
* on: استفاده
از
زنجیرهسازی
MPD پس از
پایان،
بازگشت به
حالت قبلی
در صورت
شکست در
بارگیری MPD
* error: استفاده
از
زنجیرهسازی
MPD پس از
پایان یا در
صورت بروز
خطا (در
بارگیری MPD
یا قطعه)
asloop (bool،
پیشفرض: false):
هنگامی که
تعویض
خودکار
فعال است،
بهصورت
رفت و
برگشتی بین
بالاترین و
پایینترین
کیفیتها
پیمایش
میکند
bsmerge (bool،
پیشفرض: true):
مجاز بودن
ادغام
جریانهای
بیت ویدیو
(در حال حاضر
تنها HEVC)
keep_burl (enum،
پیشفرض: strip):
واپایش BaseURL در
مانیفست
* strip: حذف BaseURL
(پیشفرض)
* keep:
نگهداشتن
BaseURL
* inject: تزریق URL
نسبی محلی
پیش از
مقدار BaseURL
مشخصشده
با گزینهٔ
relative_url
relative_url (str، پیشفرض: ./): رشتهٔ نسبی برای تزریق پیش از BaseURL وقتی که keep_base_url روی inject تنظیم شده است
توضیحات: رمزگشای CENC
رمزگشای CENC از رمزگشایی جریانهای CENC، ISMA، HLS Sample-AES (MPEG2 ts) و Adobe پشتیبانی میکند.
برای HLS،
کلید بر
اساس URI کلید
در مانیفست
بازیابی
میشود.
در غیر این
صورت،
فیلتر از یک
فایل
پیکربندی
استفاده
میکند.
نحو نگارش
در https://wiki.gpac.io/xmlformats/Common-Encryption
در دسترس
است.
فایل
پیکربندی DRM
میتواند
به ازای هر PID
با استفاده
از ویژگی DecryptInfo
(بالاترین
اولویت)، CryptInfo
(اولویت
پایینتر)
یا در سطح
فیلتر با
استفاده از .I
cfile
(پایینترین
اولویت)
تنظیم شود.
هنگامی که
فایل به
ازای هر PID
تنظیم شود،
نخستین CryptInfo با
همان شناسه
(ID) استفاده
میشود، در
غیر این
صورت
نخستین CryptInfo به
کار میرود.
هنگامی که
فایل
بهطور
سراسری (نه
به ازای هر PID)
تنظیم شود،
نخستین CrypTrack در
فایل
پیکربندی DRM
با همان
شناسه به
کار
میرود، در
غیر این
صورت
نخستین CrypTrack با
شناسه 0 یا
مشخصنشده
استفاده
میشود.
گزینهها (تخصصی) (OPTIONS (EXPERT))
cfile (str): مکان
فایل crypt
decrypt (enum،
پیشفرض: full):
حالت
رمزگشایی
(تنها CENC)
* full: رمزگشایی
همهچیز،
با صدور خطا
در صورت
پیدا نشدن
کلیدها
* nokey: رمزگشایی
هر آنچه که
کلید برایش
پیدا شود،
در غیر این
صورت
صرفنظر از
رمزگشایی
* skip: عدم
رمزگشایی
هیچچیز
* pad0: عدم
رمزگشایی
هیچچیز و
جایگزینی
تمام
بیتهای
رمزگذاریشده
با 0
* pad1: عدم
رمزگشایی
هیچچیز و
جایگزینی
تمام
بیتهای
رمزگذاریشده
با 1
* padsc: عدم
رمزگشایی
هیچچیز و
جایگزینی
تمام
بایتهای
رمزگذاریشده
با کدهای
شروع (start codes)
drop_keys (uintl):
کلیدهای
دارای
اندیسهای
مبتنی بر ۱ (1-based)
مشخصشده
ناموجود در
نظر گرفته
شوند
(اشکالزدایی
چندکلیدی)
kids (strl): تعریف KIDها.
اگر keys خالی
باشد،
کلیدهای
دارای KID
مشخصشده
(به صورت
رشته هگز)
ناموجود در
نظر گرفته
شوند
(اشکالزدایی)
keys (strl): تعریف
مقادیر
کلید برای
هر یک از
KIDهای
مشخصشده
hls_cenc_patch_iv (bool،
پیشفرض: false):
نادیده
گرفتن
بهروزرسانیهای
IV در برخی
جریانهای
خراب HLS+CENC
cecrypt
توضیحات: رمزنگار CENC
رمزنگار CENC
از
رمزنگاری
CENC، ISMA و Adobe
پشتیبانی
میکند. این
فیلتر از یک
فایل
پیکربندی DRM
برای اعلان
کلیدها
استفاده
میکند.
نحو نگارش
در https://wiki.gpac.io/xmlformats/Common-Encryption
در دسترس
است.
فایل
پیکربندی DRM
میتواند
به ازای هر PID
با استفاده
از ویژگی CryptInfo،
یا در سطح
فیلتر با
استفاده از .I
cfile تنظیم شود.
هنگامی که
فایل
پیکربندی DRM
به ازای هر PID
تنظیم شود،
نخستین CrypTrack در
فایل
پیکربندی DRM
با همان
شناسه (ID)
استفاده
میشود، در
غیر این
صورت
نخستین CrypTrack
استفاده
میشود
(بدون در نظر
گرفتن
شناسه CrypTrack).
هنگامی که
فایل
پیکربندی DRM
بهطور
سراسری (نه
به ازای هر PID)
تنظیم شود،
نخستین CrypTrack در
فایل
پیکربندی DRM
با همان
شناسه به
کار
میرود، در
غیر این
صورت
نخستین CrypTrack با
شناسه 0 یا
مشخصنشده
استفاده
میشود.
اگر هیچ
فایل
پیکربندی DRM
برای یک PID
مشخص تعریف
نشده باشد،
این PID
رمزنگاری
نخواهد شد،
یا در صورت
مشخص شدن .I allc
یک خطا صادر
میشود.
گزینهها (تخصصی) (OPTIONS (EXPERT))
cfile (str): مکان
فایل crypt
allc (bool): صدور خطا
در صورتی که
هیچ فایل
پیکربندی DRM
برای یک PID
پیدا نشود
bk_stats (bool): چاپ
تعداد
بلوکهای
رمزنگاریشده
در stdout هنگام
خروج
bk_skip (bool): صرفنظر
از
رمزنگاری
اما انجام
تمام وظایف
دیگر (حالت
آزمایشی)
mp4mx
توضیحات: مالتیپلکسر ISOBMFF/QT
این فیلتر جریانها را به ISOBMFF (استاندارد 14496-12 و مشخصات مشتقشده) یا QuickTime مالتیپلکس میکند
تراکها و آیتمها (TRACKS AND ITEMS)
بهطور
پیشفرض
تمام PIDهای
ورودی که
ویژگی ItemID
برای آنها
تنظیم شده
باشد، به
عنوان آیتم
مالتیپلکس
میشوند،
در غیر این
صورت به
عنوان تراک
مالتیپلکس
میشوند.
برای
جلوگیری از
مالتیپلکس
شدن
آیتمهای
منبع به
عنوان
آیتم، از
گزینه .I -itemid در
دیمالتیپلکسر
ISOBMFF استفاده
کنید.
مثال
gpac -i source.mp4:itemid=false -o file.mp4
برای
اجبار
جریانهای
غیرآیتمی
به
مالتیپلکس
شدن به
عنوان
آیتم، از
گزینه #ItemID روی
آن PID
استفاده
کنید:
gpac -i source.jpg:#ItemID=1 -o file.mp4
گزینه .I store
امکان
کنترل
قطعهبندی
بودن فایل (frag)
یا نبودن
آن، و در
صورت عدم
قطعهبندی،
نحوه انجام
درهمبافی
(inter) را فراهم
میکند.
برای
مواردی که
محدودیتهای
فضای دیسک
شدید است و
امکان
استفاده از
قطعهبندی
وجود
ندارد،
توصیه
میشود از
حالتهای flat
یا fstart (شروع
سریع یا fast-start)
استفاده
شود.
حالت sfrag
مشابه حالت
frag است اما
قطعهها را
با
نمونههای SAP
تراز
میکند. این
حالت هنگام
استفاده از
sfrag_tolerance بهطور
ضمنی فعال
میشود.
مقدار sfrag_tolerance
بهصورت
درصدی از
مدتزمان
قطعه (cdur) بیان
میشود. این
پارامتر
امکان
تعدیل
مدتزمان
قطعهها را
ضمن حفظ
تعداد
یکسان
قطعهها در
هر سگمنت
فراهم
میکند. این
ویژگی برای
تراز کردن
قطعهها با
نمونههای SAP
که در نقاط
تصادفی
قرار دارند
(معمولاً
برشهای
صحنه یا
رویدادها)
مفید است.
گزینه .I vodcache
امکان
کنترل نحوه
تولید
سگمنتهای
DASH onDemand را فراهم
میکند:
- اگر روی on
تنظیم شود،
دادههای
فایل در یک
فایل موقت
روی دیسک
ذخیره شده و
پس از تکمیل
تخلیه (flush)
میشوند؛
هیچ پدینگی
(padding) وجود
نخواهد
داشت.
- اگر روی insert
تنظیم شود،
SIDX/SSIX پس از
تکمیل فایل
از طریق
جابهجایی
بایتها در
فایل تزریق
میشود. در
این حالت
نیازی به
پدینگ نیست
اما ممکن
است با تمام
مقصدهای
خروجی (output sinks)
سازگار
نباشد و
نوشتن فایل
زمان
بیشتری
ببرد.
- اگر روی replace
تنظیم شود،
اندازه SIDX/SSIX بر
اساس
مدتزمان و
طول سگمنت DASH
تخمین زده
میشود و
پیش از SIDX
نهایی، از
پدینگ در
فایل
استفاده
خواهد شد.
اگر PIDهای
ورودی
ویژگی DSegs را
تنظیم کرده
باشند، این
مقدار
بهعنوان
تعداد
سگمنتها
استفاده
خواهد شد.
حالتهای on و
insert دقیقاً
فایل
یکسانی
تولید
میکنند،
در حالی که
حالت replace ممکن
است یک باکس
free پیش از sidx
تزریق کند.
باکسهای سفارشی (Custom boxes)
باکسهای
سفارشی را
میتوان
بهصورت
وصلههای
باکس (box patches)
تعیین کرد:
برای وصله
در سطح movie،
باید از
گزینه .I boxpatch
فیلتر
استفاده
شود.
وصله باکس
به ازای هر PID
را میتوان
از طریق
ویژگی boxpatch
مربوط به PID
تعیین کرد.
مثال
gpac -i source:#boxpatch=myfile.xml -o mux.mp4
وصله باکس
به ازای هر Item
را میتوان
از طریق
ویژگی boxpatch
مربوط به PID
تعیین کرد.
مثال
gpac -i source:1ItemID=1:#boxpatch=myfile.xml -o mux.mp4
وصله باکس
در حالت
قطعهبندیشده
پیش از
نوشتن باکس
آغازین moov،
یا در غیر
این صورت
هنگام
نوشتن کامل
فایل اعمال
میشود.
وصله باکس
میتواند
نام یک فایل
یا یک رشته
کامل XML باشد.
برچسبگذاری (Tagging)
هنگامی که
برچسبگذاری
فعال باشد،
فیلتر
ویژگی CoverArt و
تمام
ویژگیهای
سفارشی روی
PID ورودی را
زیر نظر
میگیرد.
نام
برچسبهای
توکار با
دستور MP4Box -h tags
مشخص
شدهاند.
برچسبهای QT
را میتوان
با استفاده
از نامهای
ویژگی qtt_NAME
مشخص کرد، و
با
قالببندی
تعیینشده
در MP4Box -h tags اضافه
خواهند شد.
سایر
کلاسهای
برچسب را
میتوان با
استفاده از
نامهای
ویژگی tag_NAME
مشخص کرد، و
در صورتی که
.I itags روی all
تنظیم شده
باشد بر
اساس قواعد
زیر اضافه
خواهند شد:
- مقدار NAME
بهعنوان
یک 4CC باکس،
در صورتی که
طول NAME چهار
نویسه باشد
- مقدار NAME
بهعنوان
یک 4CC باکس،
در صورتی که
طول NAME ۳
نویسه
باشد، و
پیشوند 0xA9 به
آن اضافه
خواهد شد
- مقدار CRC32
مربوط به NAME
بهعنوان
یک 4CC باکس،
در صورتی که
طول NAME چهار
نویسه
نباشد
نامهای ویژگی با قالب cust_NAME@MEAN بهعنوان یک برچسب سفارشی با نام NAME و مفهوم MEAN اضافه میشوند. هر دوی NAME و MEAN میتوانند خالی باشند.
دادههای کاربر (User data)
فیلتر
برای ایجاد
مدخلهای
داده کاربر
(user data)،
ویژگیهای PID
زیر را
بررسی
میکند:
* `udtab`: تنظیم
باکس user-data ترک
روی مقدار
ویژگی که
باید یک blob
آرایه باکس
سریالشده
باشد
* `mudtab`: تنظیم
باکس user-data
مربوط به movie
روی مقدار
ویژگی که
باید یک blob
آرایه باکس
سریالشده
باشد
* `udta_U4CC`: تنظیم
مدخل باکس user-data
ترک از نوع U4CC
روی مقدار
ویژگی
* `mudta_U4CC`: تنظیم
مدخل باکس user-data
مربوط به movie
از نوع U4CC روی
مقدار
ویژگی
* `tkgp_T4CC`:
تنظیم/حذف
عضویت در
گروه ترک با
نوع T4CC و
شناسه
مشخصشده
با مقدار
ویژگی.
مقدار منفی N
عضویت را از
گروه ترک با
شناسه -N حذف
میکند
مثال
gpac -i src.mp4:#udta_tagc='My Awesome Tag' -o tag.mp4
gpac -i src.mp4:#mudtab=data@box.bin -o tag.mp4
شرحهای سفارشی گروه نمونه و اطلاعات کمکی نمونه (Custom sample group descriptions and sample auxiliary info)
فیلتر
ویژگیهای
داده
سفارشی زیر
را روی
بستههای
ورودی زیر
نظر
میگیرد:
* `grp_A4CC`: نگاشت
بسته به شرح
گروه نمونه
از نوع A4CC و
تنظیم مدخل
روی بار
داده (payload)
ویژگی
* `grp_A4CC_param`: همانند
بالا و
تنظیم grouping_type_parameter
نمونه به
گروه روی param
* `sai_A4CC`: اضافه
کردن بار
داده (payload)
ویژگی
بهعنوان
اطلاعات
کمکی نمونه
از نوع A4CC
* `sai_A4CC_param`: همانند
بالا و
تنظیم aux_info_type_parameter
روی param
ویژگی grp_EMSG
شامل یک یا
چند EventMessageBox است،
همانطور
که در MPEG-DASH
تعریف شده
است.
- در حالت
قطعهبندیشده،
وجود این
ویژگی در یک
بسته باعث
شروع یک
قطعه جدید
میشود که
در آن،
باکسها
پیش از moof
نوشته
میشوند
- در حالت
عادی، در
حال حاضر از
یک گروه
نمونه
داخلی از
نوع EMSG برای
ذخیرهسازی
باکس emsg
استفاده
میشود
فیلتر ویژگی FileNumber را روی بستههای ورودی زیر نظر میگیرد تا فایلهای جدید (حالت عادی) یا بخشهای جدید (حالت DASH) ایجاد کند.
فیلتر
ویژگی DSIWrap
(بهصورت 4CC
در قالب int یا
string) را روی PID
ورودی زیر
نظر
میگیرد تا
پیکربندی
رمزگشا را
در باکسی از
نوع
دادهشده
قرار دهد
(بستهبندی
ناشناخته).
مثال
-i unkn.mkv:#ISOMSubtype=VIUK:#DSIWrap=cfgv -o t.mp4
این کار جریان ناشناخته را با استفاده از نقطه کد VIUK در stsd بستهبندی کرده و تمام دادههای پیکربندی رمزگشا را در یک باکس cfgv قرار میدهد.
اگر .I pad_sparse
تنظیم شده
باشد،
فیلتر
ویژگی Sparse را
روی PID ورودی
زیر نظر
میگیرد تا
تصمیم
بگیرد آیا
بستههای
خالی برای
حفظ
اطلاعات
مدتزمان
بسته تزریق
شوند یا خیر.
چنین
بستههایی
تنها زمانی
تزریق
میشوند که
وقفهای در
خط زمانی
شناسایی
شود.
- اگر Sparse وجود
نداشته
باشد، بسته
خالی برای
جریانهای
متنی و
فراداده
ناشناخته
درج میشود
- اگر Sparse برابر
true باشد،
بسته خالی
برای تمام
انواع
جریان درج
میشود
- اگر Sparse برابر
false باشد،
بسته خالی
هرگز تزریق
نمیشود
نوع رسانه
پیشفرض
استفادهشده
برای یک PID را
میتوان با
استفاده از
ویژگی StreamSubtype
بازنویسی
کرد.
مثال
-i src.srt:#StreamSubtype=sbtl [-i ...] -o test.mp4
این کار
جریان متنی
را وادار
میکند تا
بهجای نوع
پیشفرض text،
از نوع
گرداننده sbtl
استفاده
کند.
جریانهای
زیرنویس
میتوانند
با تنظیم
ویژگی IsChap روی PID
دلخواه،
بهعنوان
فصلها
استفاده
شوند.
مثال
-i src.srt:#IsChap [-i ...] -o test.mp4
این کار جریان متنی را وادار میکند تا بهعنوان یک قطعه فصل QT استفاده شود.
گزینهها (تخصصی) (OPTIONS (EXPERT))
m4sys (bool،
پیشفرض: false):
اجبار
قطعهها به
سیگنالدهی
MPEG-4 Systems
dref (bool، پیشفرض:
false): تنها
ارجاع
دادهها از
فایل منبع -
با تمام
منابع
رسانهای
سازگار
نیست
ctmode (enum، پیشفرض:
auto): تنظیم
حالت آفست
ترکیب (composition offset)
برای
قطعههای
ویدیویی
* auto: در صورت
تکهتکه
کردن یک
منبع ISOBMFF، از
تنظیمات
منبع
استفاده
میکند در
غیر این
صورت به edit
تبدیل
میشود
* edit: استفاده
از
فهرستهای
ویرایش (edit lists)
برای
انتقال
فریم اول به
زمان ارائه 0
* noedit:
نادیدهگرفتن
فهرستهای
ویرایش و
عدم انتقال
خط زمانی
* negctts: استفاده
از ctts نسخه 1 با
آفستهای
احتمالاً
منفی و بدون
فهرستهای
ویرایش
dur (frac،
پیشفرض: 0):
تنها
مدتزمان
مشخصشده
را وارد
میکند. در
صورت منفی
بودن،
تعداد
فریمهای
کدگذاریشده
برای وارد
کردن را
مشخص
میکند
pack3gp (uint،
پیشفرض: 1):
بستهبندی
تعداد
مشخصی از
فریمهای
صوتی 3GPP در یک
نمونه (sample)
importer (bool،
پیشفرض: false):
سازگاری با
واردکننده
قدیمی،
پیشرفت
وارد کردن
را نمایش
میدهد
pack_nal (bool،
پیشفرض: false):
بستهبندی
مجدد طول
اندازه NALU به
حداقل
اندازه
ممکن برای
ویدیوهای
مبتنی بر NALU
(مانند AVC/HEVC/...)
xps_inband (enum،
پیشفرض: no):
استفاده از
مجموعه
پارامترهای
درونباندی
(درون
دادههای
نمونه) برای
ویدیوهای
مبتنی بر NALU
(مانند AVC/HEVC/...)
* no:
مجموعههای
پارامتر
درونباندی
نیستند،
ممکن است
چندین شرح
نمونه
ایجاد شود
* pps:
مجموعههای
پارامتر
تصویر
بهصورت
درونباندی
هستند،
سایر
مجموعههای
پارامتر در
شرح نمونه
قرار دارند
* all:
مجموعههای
پارامتر
درونباندی
هستند، هیچ
مجموعه
پارامتری
در شرح
نمونه وجود
ندارد
* both:
مجموعههای
پارامتر
درونباندی
هستند،
بهعنوان
درونباندی
اعلام
شدهاند و
همچنین
اولین
مجموعه در
شرح نمونه
نگه داشته
میشود
* mix: ایجاد
فایلهای
غیر
استاندارد
با استفاده
از یک مدخل
نمونه تکی
با اولین
PSهای
یافتشده،
و انتقال
سایر PSها
بهصورت
درونباندی
* auto: حفظ
پیکربندی
منبع، یا
پیشفرض no
اگر منبع ISOBMFF
نباشد
store (enum،
پیشفرض: inter):
حالت
ذخیرهسازی
فایل
* inter: انجام
درهمبافی
(interleave) دقیق
فایل با
استفاده از .I
cdur (نیازمند
ذخیرهسازی
موقت همه
رسانهها)
* flat: نوشتن
نمونهها
بهمحض
رسیدن و
قرار دادن moov
در انتها
(سریعترین
حالت)
* fstart: نوشتن
نمونهها
بهمحض
رسیدن و
قرار دادن moov
قبل از mdat
* tight: استفاده
از
درهمبافی
نمونهبهنمونه
برای همه
قطعهها
(نیازمند
ذخیرهسازی
موقت همه
رسانهها)
* frag: تکهتکه
کردن فایل
با استفاده
از
مدتزمان cdur
* sfrag: تکهتکه
کردن فایل
با استفاده
از
مدتزمان cdur
اما با
تنظیم برای
شروع با SAP1/3
cdur (frac،
پیشفرض: -1/1):
مدتزمان
قطعه داده (chunk)
برای
حالتهای flat
و
درهمبافی
یا
مدتزمان
قطعه (fragment) برای
حالتهای
تکهتکهسازی
* 0: بدون
درهمبافی
خاص اما moov در
ابتدا
* negative: پیشفرض 1.0
مگر اینکه
توسط نمایه
ذخیرهسازی
بازنویسی
شود
moovts (sint،
پیشفرض: 600):
مقیاس
زمانی (timescale)
برای فیلم.
مقدار منفی
مقیاس
زمانی
رسانه
اولین قطعه
اضافهشده
را انتخاب
میکند
moof_first (bool،
پیشفرض: true):
تولید
قطعات با
شروع از moof و
سپس mdat
abs_offset (bool،
پیشفرض: false):
استفاده از
آفست مطلق
فایل در
قطعات
بهجای
آفستها از
moof
fsap (bool، پیشفرض:
true): تقسیم trunها
در قطعات
ویدیویی در
SAPها جهت
کاهش
اندازه
فایل
subs_sidx (sint،
پیشفرض: -1):
تعداد
زیربخشها
در هر sidx
* 0: یک sidx تکی
* >0: بهصورت sidx
سلسلهمراتبی
یا
زنجیرهای
(daisy-chained)
* <0:
غیرفعالسازی
sidx
* -2: حذف sidx در
صورت وجود
در PID منبع
m4cc (str): کد ۴
نویسهای (4CC)
از باکس
خالی برای
الحاق به
انتهای یک
بخش (حالت DASH)
یا یک قطعه
(حالت غیر DASH)
chain_sidx (bool،
پیشفرض: false):
استفاده از
اتصال
زنجیرهای
SIDX
msn (uint، پیشفرض:
1): شماره
توالی
اولین moof به N
msninc (uint، پیشفرض:
1): افزایش
شماره
توالی بین
باکسهای moof
tfdt (lfrac، پیشفرض:
0): تنظیم
زمان اولیه
رمزگشایی (tfdt)
برای اولین
traf
tfdt_traf (bool،
پیشفرض: false):
اجبار به
وجود باکس tfdt
در هر traf
nofragdef (bool،
پیشفرض: false):
غیرفعالسازی
پرچمهای
پیشفرض
قطعه در moov
اولیه
straf (bool، پیشفرض:
false): استفاده
از یک traf تکی
در هر moof (برای
Smooth Streaming و موارد
مشابه)
strun (bool، پیشفرض:
false): استفاده
از یک trun تکی
در هر traf (برای
Smooth Streaming و موارد
مشابه)
prft (enum، پیشفرض:
sender): تنظیم
حالت باکس
prft، در حالت
غیر
تکهتکه
غیرفعال
است
* off:
غیرفعالسازی
باکس prft
* sender: قرار دادن
زمان ntp پیش
از رمزگذار
* both: قرار دادن
زمان
فرستنده (در
صورت وجود) و
زمان ntp
هنگام
نوشتن moof
psshs (enum،
پیشفرض: moov):
تنظیم حالت
ذخیرهسازی
باکسهای pssh
* moof: در اولین moof
از هر بخش
* moov: در باکس movie
* both: در باکس movie و
در اولین moof
از هر بخش
* none: باکس pssh
نادیده
گرفته
میشود
force_seig (bool،
پیشفرض: false):
اجبار به
نوشتن گروه
نمونه seig
برای
نمونههای
رمزگذاریشده،
حتی زمانی
که همه
نمونهها
از
پیکربندی
تککلیدی
پیشفرض CENC
استفاده
میکنند
sgpd_traf (bool،
پیشفرض: false):
ذخیره
شرحهای
گروه نمونه
در traf
(تکرارشده
برای هر traf). در
صورت عدم
استفاده،
شرحهای
گروه نمونه
در باکس movie
ذخیره
میشوند
vodcache (enum،
پیشفرض: replace):
فعالسازی
حافظه موقت
برای
حالتهای VoD DASH
* on: استفاده
از حافظه
موقت کل
فایل برای
تزریق sidx و ssix
* insert: درج sidx و ssix با
جابهجا
کردن
بایتها در
فایل خروجی
* replace: محاسبه
پیشدستانه
الزامات
فضا برای sidx و ssix
و بازنویسی
محدوده
فایل در
انتها
noinit (bool،
پیشفرض: false):
عدم تولید moov
اولیه،
برای حالت
سوئیچینگ
جریان بیت DASH
استفاده
میشود
tktpl (enum، پیشفرض:
yes): استفاده
از باکس track از
ورودی در
صورت وجود
بهعنوان
الگو برای
ایجاد قطعه
جدید
* no:
غیرفعالسازی
الگو
* yes: همتاسازی
قطعه (بهجز
ویرایشها
و پیکربندی
رمزگشا)
* udta: فقط
بارگذاری udta
mudta (enum،
پیشفرض: yes):
استفاده از
udta و سایر
باکسهای
افزونه moov از
ورودی در
صورت وجود
* no:
غیرفعالسازی
وارد کردن
* yes: همتاسازی
تمام
باکسهای
افزونه
* udta: فقط
بارگذاری udta
mvex (bool،
پیشفرض: false):
قرار دادن
باکسهای mvex
پس از
باکسهای trak
sdtp_traf (enum،
پیشفرض: no):
استفاده از
باکس sdtp در
باکس traf
بهجای
استفاده از
پرچمها در
مدخلهای
نمونه trun
* no: از sdtp
استفاده
نشود
* sdtp: استفاده
از باکس sdtp
برای نشان
دادن
وابستگیهای
نمونه و عدم
نوشتن
اطلاعات در
پرچمهای
نمونه trun
* both: استفاده
از باکس sdtp
برای نشان
دادن
وابستگیهای
نمونه و
همچنین
نوشتن
اطلاعات در
پرچمهای
نمونه trun
trackid (uint،
پیشفرض: 0):
شناسه قطعه
(track ID) ایجادشده
برای
تکقطعه.
مقدار
پیشفرض 0 از
شناسه در
دسترس بعدی
استفاده
میکند
fragdur (bool،
پیشفرض: false):
تکهتکهسازی
بر اساس
مدتزمان
قطعه
بهجای CTS.
بیشتر برای
گزینه -frag در MP4Box
استفاده
میشود
btrt (bool، پیشفرض:
true): تنظیم
باکس btrt در
شرح نمونه
styp (str): تنظیم
برند اصلی styp
بخش (و
اختیاری
نسخه) به 4CC[.version]
دادهشده
lmsg (bool، پیشفرض:
false): تنظیم
برند lmsg برای
آخرین بخش
یا قطعه
mediats (sint،
پیشفرض: 0):
تنظیم
مقیاس
زمانی
رسانه.
مقدار 0 به
معنای
ارثبری از
PID است،
مقدار -1 به
معنای
استخراج از
نرخ
نمونهبرداری
یا نرخ فریم
است
ase (enum، پیشفرض:
v0): تنظیم
حالت مدخل
نمونه صوتی
برای
چیدمانهای
فراتر از
استریو
* v0: استفاده
از
سیگنالدهی
v0 با تعداد
کانال از
جریان
(بهجز (e)AC3/4)،
برای
سازگاری
عقبرو
توصیه
میشود
* v0s: استفاده
از
سیگنالدهی
v0 و اجبار
تعداد
کانال به 2
(استریو) در
صورت وجود
بیش از 2
کانال
* v0bs: استفاده
از
سیگنالدهی
v0 فقط از
طریق جریان
بیت
* v1: استفاده
از
سیگنالدهی
v1، به سبک ISOBMFF
(میکس PCM خام
به سبک ISOBMFF)
* v1qt: استفاده
از
سیگنالدهی
v1، به سبک QTFF
* v2qt: استفاده
از
سیگنالدهی
v2، به سبک QTFF
(نوع مدخل lpcm)
ssix (bool،
پیشفرض: false):
ایجاد باکس
ssix در صورت
حضور باکس
sidx؛ سطح 1
محدودههای
بایتی
فریمهای I و
سطح 0xFF بقیه
را نگاشت
میکند
ccst (bool، پیشفرض:
false): درج باکس
محدودیت
کدگذاری
برای
قطعههای
ویدیویی
maxchunk (uint،
پیشفرض: 0):
تنظیم
حداکثر
اندازه
چانک به
بایت برای
runها (فقط در
حالت غیر
تکهتکهشده
استفاده
میشود). 0
یعنی بدون
محدودیت
noroll (bool، پیشفرض:
false):
غیرفعالسازی
گروهبندی
نمونه roll
norap (bool، پیشفرض:
false):
غیرفعالسازی
گروهبندی
نمونه rap
saio32 (bool، پیشفرض:
false): استفاده
از آفست ۳۲
بیتی برای
مکان
دادههای
جانبی (side data)
بهجای
آفست ۶۴
بیتی
tfdt64 (bool، پیشفرض:
false): استفاده
از tfdt و sidx ۶۴
بیتی حتی
برای
برچسبهای
زمانی ۳۲
بیتی
compress (enum،
پیشفرض: no):
تنظیم حالت
فشردهسازی
باکس سطح
بالا
* no:
غیرفعالسازی
فشردهسازی
باکس
* moov: فقط
فشردهسازی
باکس moov
(استفاده از
cmov برای QT)
* moof: فقط
فشردهسازی
باکسهای moof
* sidx:
فشردهسازی
باکسهای moof
و sidx
* ssix:
فشردهسازی
باکسهای
moof، sidx و ssix
* all:
فشردهسازی
باکسهای
moov، moof، sidx و ssix
fcomp (bool،
پیشفرض: false):
اجبار به
استفاده از
باکس فشرده
حتی زمانی
که اندازه
فشرده
بزرگتر از
غیرفشرده
باشد
otyp (bool، پیشفرض:
false): تزریق نوع
فایل اصلی
هنگام
استفاده از
باکسهای
فشرده
trun_inter (bool،
پیشفرض: false):
درهمبافی
نمونهها
در trun بر اساس
سطح زمانی،
پایینترین
سطوح ابتدا
ذخیره
میشوند
(این کار به
تعداد مورد
نیاز باکس trun
ایجاد
میکند)
truns_first (bool،
پیشفرض: false):
ذخیره track runها
قبل از شرح
گروه نمونه
و اطلاعات
رمزگذاری
نمونه
block_size (uint،
پیشفرض: 10000):
اندازه
بلوک خروجی
هدف، 0 برای
مقدار
پیشفرض
داخلی (10k)
boxpatch (str): اعمال
وصله باکس
پیش از
نوشتن
deps (bool، پیشفرض:
true): افزودن
اطلاعات
وابستگیهای
نمونهها
mfra (bool، پیشفرض:
false):
فعالسازی
دسترسی
تصادفی
قطعه فیلم (MFRA)
هنگام
تکهتکهسازی
(هنگام DASH
نادیده
گرفته
میشود)
forcesync (bool،
پیشفرض: false):
اجبار به
همگام در
نظر گرفتن
تمام انواع
SAP بهعنوان
نمونههای
همگام (ممکن
است
فایلهای
ناسازگار
با
استاندارد
تولید کند)
refrag (bool، پیشفرض:
false): استفاده
از
پیشفرضهای
قطعه قطعه
از فایل
اولیه در
صورت وجود
بهجای
محاسبه
آنها از
ویژگیهای PID
(هنگام
پردازش
بخشها/قطعات
مستقل
استفاده
میشود)
itags (enum، پیشفرض:
strict): حالت
تزریق
برچسب
* none: هیچ
برچسبی
تزریق نشود
* strict: فقط تزریق
برچسبهای
شناختهشده
itunes
* all: تزریق
تمام
برچسبهای
ممکن
keep_utc (bool،
پیشفرض: false):
اجبار تمام
فایلها و
قطعههای
جدید به
نگهداشتن
زمانهای
ایجاد و
تغییر UTC
منبع
pps_inband (bool،
پیشفرض: no):
هنگامی که .I
xps_inband تنظیم شده
باشد،
تزریق PPS در
هر نمونه
غیر از SAP 1/2/3
moovpad (uint،
پیشفرض: 0):
درج باکس free
با اندازه
مشخص پس از moov
برای
ویرایش
درجا در
آینده
cmaf (enum، پیشفرض:
no): استفاده
از
رهنمودهای
CMAF (فعال کردن
mvex، truns_first، strun،
straf، tfdt_traf، chain_sidx و
محدود کردن
subs_sidx به -1 یا 0)
* no: عدم اعمال CMAF
* cmfc: استفاده
از
دستورالعملهای
CMAF cmfc
* cmf2: استفاده
از
دستورالعملهای
CMAF cmf2
(فعالسازی
nofragdef)
pad_sparse (bool،
پیشفرض: true):
تزریق
نمونه بدون
داده
(اندازه 0)
جهت حفظ
مدتزمان
در
قطعههای
متنی
پراکنده و
فراداده
نامشخص
force_dv (bool،
پیشفرض: false):
اجبار به
انواع مدخل
نمونه DV حتی
زمانی که
سازگاری با
AVC/HEVC
سیگنالدهی
شده باشد
dvsingle (bool،
پیشفرض: false):
نادیدهگرفتن
نمایه 8
مربوط به DolbyVision
در حالت xps inband
اگر نمایه 5
از پیش
تنظیم شده
باشد
tsalign (bool،
پیشفرض: true):
فعالسازی
تراز مجدد
خط زمانی به 0
برای نمونه
اول - در صورت
false،
زمانبندی
اصلی با یک
ویرایش
خالی
(احتمالاً
طولانی) در
ابتدا حفظ
میشود
chapm (enum، پیشفرض:
both): حالت
ذخیرهسازی
فصل
* off:
غیرفعالسازی
فصلها
* tk: استفاده
از قطعه فصل
(به سبک QT)
* udta: استفاده
از فصلهای
باکس
دادههای
کاربر (user-data)
* both: استفاده
از هر دو
قطعه فصل و udta
patch_dts (bool،
پیشفرض: false):
اصلاح
مدتزمان
نمونههای
قبلی زمانی
که dts
بهصورت
یکنواخت
افزایش
نمییابد
uncv (enum، پیشفرض:
prof): استفاده
از uncv
(استاندارد
ISO 23001-17) برای
ویدیوی خام
* off: غیرفعال
(همواره در
هنگام میکس
به QT چنین
است)
* gen: فعال، عدم
نوشتن
نمایه
* prof: فعال و
نوشتن
نمایه در
صورت مشخص
بودن
* tiny: فعال و
نوشتن نسخه
کاهشیافته
در صورت
مشخص بودن و
سازگار
بودن
نمایه
trunv1 (bool،
پیشفرض: false):
اجبار به
استفاده از
نسخه 1 در trun
بدون در نظر
گرفتن نوع
رسانه یا
برند CMAF
rsot (bool، پیشفرض:
false): تزریق
اطلاعات
مازاد
زمانبندی
نمونه در
صورت وجود
sfrag_tolerance (uint،
پیشفرض: 0):
شروع قطعه
روی SAP در
صورتی که
قطعه قبلی
کوتاهتر
از درصد
تعیینشده
از cdur نباشد
scte35 (enum، پیشفرض:
auto):
سیگنالدهی
SCTE-35
* auto: مقدار 'xmlbin' یا
'evte' بسته به
ورودی
* xmlbin: جریان
رویداد
برونباندی
(MPD) به همراه xml+bin
(توصیهشده)
* inband: باکسهای
درونباندی
emsg
* all:
سیگنالدهی
در تمام
مکانهای
شناساییشده
* none: بدون EventStream یا
باکسهای emsg
auto_reorder (bool، پیشفرض: false): مرتبسازی مجدد قطعهها در moov (ابتدا ویدیو، سپس صدا، سپس متن و در نهایت سایر موارد)
توضیحات: بازفریمساز QCP
این فیلتر فایلها/دادههای QCP را تجزیه کرده و فریمها و PID صوتی متناظر را خروجی میدهد.
گزینهها (تخصصی) (OPTIONS (EXPERT)):
index (dbl، پیشفرض: 1.0): طول پنجره نمایهسازی
rfh263
توضیحات: بازفریمساز H263
این فیلتر فایلها/دادههای H263 را تجزیه کرده و فریمها و PID تصویری متناظر را خروجی میدهد.
گزینهها (تخصصی) (OPTIONS (EXPERT)):
fps (frac،
پیشفرض: 15000/1000):
نرخ فریم
واردسازی
index (dbl، پیشفرض:
1.0): طول پنجره
نمایهسازی
notime (bool، پیشفرض:
false): نادیده
گرفتن
برچسبهای
زمان
ورودی،
بازسازی از
0
rfmpgvid
توضیحات: بازفریمساز M1V/M2V/M4V
این فیلتر
فایلها/دادههای
ویدیویی MPEG-1/2 و
MPEG-4 part 2 را تجزیه
کرده و
فریمها و PID
ویدیویی
متناظر را
خروجی
میدهد.
نکته: این
فیلتر از
آفستهای
منفی CTS
استفاده
میکند: CTS
صحیح است،
اما ممکن
است DTS در
برخی
فریمها
بزرگتر از
CTS باشد.
گزینهها (تخصصی) (OPTIONS (EXPERT)):
fps (frac،
پیشفرض: 0/1000):
نرخ فریم
واردسازی
(مقدار 0
بهطور
پیشفرض از
FPS جریان بیت
یا 25 هرتز
استفاده
میکند)
index (dbl، پیشفرض:
-1.0): طول پنجره
نمایهسازی.
اگر 0 باشد،
جریان بیت
برای
مدتزمان
بررسی (probe)
نمیشود. یک
مقدار منفی
در صورتی که
فایل منبع
بزرگتر از
20M باشد از
نمایهسازی
صرفنظر
میکند
(سرعت
واردکنندهها
را کاهش
میدهد)،
مگر اینکه
دستوری
برای پخش با
محدوده
شروع > 0 صادر
شود
vfr (bool، پیشفرض:
false): تنظیم
واردسازی
با نرخ فریم
متغیر
importer (bool،
پیشفرض: false):
سازگاری با
واردکننده
قدیمی،
نمایش
نتایج
واردسازی
notime (bool، پیشفرض:
false): نادیده
گرفتن
برچسبهای
زمان
ورودی،
بازسازی از
0
nhntr
توضیحات: خواننده NHNT
این فیلتر
فایلها/دادههای
NHNT را
میخواند
تا فریمها
و PID رسانه
تولید کند.
مستندات NHNT در
نشانی
https://wiki.gpac.io/xmlformats/NHNT-Format در
دسترس است
گزینهها (تخصصی) (OPTIONS (EXPERT)):
reframe (bool،
پیشفرض: false):
اجبار به
تجزیه مجدد
محتوای
ارجاعشده
index (dbl، پیشفرض:
1.0): طول پنجره
نمایهسازی
nhmlr
توضیحات: خواننده NHML
این فیلتر
فایلها/دادههای
NHML را
میخواند
تا فریمها
و PID رسانه
تولید کند.
مستندات NHML در
نشانی
https://wiki.gpac.io/xmlformats/NHML-Format در
دسترس است
گزینهها (تخصصی) (OPTIONS (EXPERT)):
reframe (bool،
پیشفرض: false):
اجبار به
تجزیه مجدد
محتوای
ارجاعشده
index (dbl، پیشفرض:
1.0): طول پنجره
نمایهسازی
rfnalu
توضیحات: بازفریمساز AVC/HEVC
این فیلتر
فایلها/دادههای
AVC|H264 و HEVC را
تجزیه کرده
و فریمها و
PID ویدیویی
متناظر را
خروجی
میدهد.
این فیلتر
خروجی
سازگار با ISOBMFF
تولید
میکند:
کدهای شروع
(start codes) حذف
میشوند،
فیلد طول NALU
اضافه شده و
پیکربندی avcC/hvcC
ایجاد
میشود.
نکته: این
فیلتر از
آفستهای
منفی CTS
استفاده
میکند: CTS
صحیح است،
اما ممکن
است DTS در
برخی
فریمها
بزرگتر از
CTS باشد.
fps (frac،
پیشفرض: 0/1000):
نرخ فریم
واردسازی (0
پیشفرض
نرخ فریم
برگرفته از
bitstream یا 25 Hz است)
index (dbl، پیشفرض:
-1.0): طول پنجره
نمایهسازی
(indexing). اگر 0
باشد، bitstream
برای بررسی
مدتزمان
کاوش
نمیشود.
مقادیر
منفی در
صورتی که
فایل مبدأ
بزرگتر از
20M باشد از
نمایهسازی
صرفنظر
میکنند
(سرعت
واردکنندهها
را کاهش
میدهد)،
مگر اینکه
پخش با
محدوده
شروع > 0 صادر
شود
explicit (bool،
پیشفرض: false):
استفاده از
واردسازی
لایهای
صریح (SVC/LHVC)
force_sync (bool،
پیشفرض: false):
اجبار به
ایجاد نقاط
همگامسازی
روی
نمونههای
غیر IDR با
برشهای I
(غیرمنطبق
با
استاندارد)
strict_poc (enum،
پیشفرض: off):
به تاخیر
انداختن
خروجی فریم
یک GOP کامل به
منظور
اطمینان از
صحت
اطلاعات CTS
هنگام
تغییر
ناگهانی POC
* off:
غیرفعالسازی
بافرینگ GOP
* on: فعالسازی
بافرینگ GOP،
با فرض عدم
وجود خطا در
POC
* error:
فعالسازی
بافرینگ GOP و
تلاش برای
شناسایی
فریمهای
مفقودشده
nosei (bool،
پیشفرض: false):
حذف تمام
پیامهای sei
nosvc (bool، پیشفرض:
false): حذف تمام
دادههای
SVC/MVC/LHVC
novpsext (bool،
پیشفرض: false):
حذف تمام
افزونههای
VPS
importer (bool،
پیشفرض: false):
سازگاری با
واردکننده
قدیمی،
نمایش
نتایج
واردسازی
nal_length (uint،
پیشفرض: 4):
تنظیم
تعداد
بایتهای
مورد
استفاده
برای
کدگذاری
فیلد طول: 1، 2
یا 4
subsamples (bool،
پیشفرض: false):
واردسازی
اطلاعات
زیرنمونهها
(subsamples)
deps (bool، پیشفرض:
false): واردسازی
اطلاعات
وابستگی
نمونهها
refs (bool، پیشفرض:
false): واردسازی
فهرست
تصویر مرجع
نمونه (در
حال حاضر
تنها برای HEVC
و VVC)
seirw (bool، پیشفرض:
true): بازنویسی
پیامهای sei
در AVC برای
محدودیتهای
ISOBMFF
audelim (bool،
پیشفرض: false):
نگهداشتن
جداکننده Access Unit
در بار مفید
(payload)
keepfiller (bool،
پیشفرض: false):
نگهداشتن
واحدهای
پُرکننده NAL
در خروجی
notime (bool، پیشفرض:
false):
نادیدهگرفتن
برچسبهای
زمانی
ورودی،
بازسازی از 0
dv_mode (enum،
پیشفرض: auto):
سیگنالدهی
برای DolbyVision
* none: هرگز
پروفایل DV
سیگنالدهی
نشود
* auto:
سیگنالدهی
پروفایل DV در
صورت یافتن
RPU یا EL
* clean: عدم
سیگنالدهی
و حذف
واحدهای NAL
مربوط به RPU و EL
* single:
سیگنالدهی
پروفایل DV در
صورت یافتن
RPU و حذف
واحدهای NAL
مربوط به EL
dv_profile (uint،
پیشفرض: 0):
پروفایل
برای DolbyVision
(پروفایلهای
تعریفشده
در حال حاضر
4، 5، 7، 8، 9
هستند)،
مقدار 0 برای
تشخیص
خودکار
dv_compatid (enum،
پیشفرض: auto):
شناسه
سازگاری
متقابل
برای DolbyVision
* auto: تشخیص
خودکار
* none: بدون
سازگاری
متقابل
* hdr10:
استاندارد CTA
HDR10، مطابق با
مشخصات EBU TR 03
* bt709:
استاندارد SDR
BT.709
* hlg709: گاموت
رنگی HLG BT.709 در ITU-R BT.2020
* hlg2100: گاموت
رنگی HLG BT.2100 در ITU-R BT.2020
* bt2020:
استاندارد SDR
BT.2020
* brd: دیسک
بلوری
اولترا
اچدی HDR (Ultra HD Blu-ray Disc HDR)
bsdbg (enum،
پیشفرض: off):
اشکالزدایی
تحلیل NAL در
لاگهای media@debug
* off: غیرفعال
* on: فعال
* full: فعال به
همراه
تخلیه
تعداد
بیتها
m2psdmx
توضیحات: تفکیککننده (demultiplexer) MPEG PS
این فیلتر جریانهای برنامه MPEG-2 را برای تولید PIDها و فریمهای رسانهای تفکیک میکند.
بدون گزینه
avidmx
توضیحات: تفکیککننده (demultiplexer) AVI
این فیلتر فایلهای AVI را برای تولید PIDها و فریمهای رسانهای تفکیک میکند.
گزینهها (تخصصی) (Options (expert)):
fps (frac،
پیشفرض: 1/0):
نرخ فریم
واردسازی،
مقدار
پیشفرض
همان نرخ
فریم AVI است
importer (bool،
پیشفرض: false):
سازگاری با
واردکننده
قدیمی،
نمایش
نتایج
واردسازی
noreframe (bool،
پیشفرض: false):
نادیدهگرفتن
بازقاببندیکننده
رسانه (media reframer)
توضیحات: بارگذار زیرنویس
این فیلتر
دادههای
زیرنویس را
از PID ورودی
خوانده تا
فریمهای
زیرنویس را
روی یک PID
واحد تولید
کند.
این فیلتر
از
قالبهای
زیر
پشتیبانی
میکند:
* SRT: https://en.wikipedia.org/wiki/SubRip
* WebVTT: https://www.w3.org/TR/webvtt1
* TTXT: https://wiki.gpac.io/xmlformats/TTXT-Format-Documentation
* QT 3GPP Text XML (TexML): برای Apple QT6،
احتمالاً
منسوخشده
* TTML: https://www.w3.org/TR/ttml2
* SUB: یک
زیرنویس در
هر خط با
قالببندی
{start_frame}{end_frame}text
* SSA (Substation Alpha):
پشتیبانی
اولیه از
تجزیه برای
فایلهای
رایج
فایلهای
ورودی باید
در قالب UTF-8 یا
UTF-16، همراه با
یا بدون BOM
باشند. قالب
فریم داخلی
عبارت است
از:
* WebVTT (و srt در صورت
تمایل): ISO/IEC 14496-30 VTT cues
* TTML:
زیرنویسهای
ISO/IEC 14496-30 XML
* stxt و sbtt: جریان
متنی و
زیرنویسهای
متنی ISO/IEC 14496-30
* سایر موارد:
3GPP/QT Timed Text
پشتیبانی از TTML (TTML Support)
اگر
گزینهٔ .I ttml_split
تنظیم شده
باشد، سند TTML
با بررسی
تمام
زیرنویسهای
دارای
همپوشانی
در body، به
بخشهای
زمانی
مستقل
تقسیم
میشود.
دورههای
خالی در TTML
منجر به
اسناد TTML
خالی
میشوند،
یا اگر
گزینهٔ .I no_empty
تنظیم شده
باشد،
نادیده
گرفته
خواهند شد.
اولین
نمونه
دارای یک CTS
تخصیصیافته
است که توسط
.I ttml_cts مشخص
میشود:
- صورت کسر
برابر با -2
نشان
میدهد که
نخستین CTS
برابر با 0
است
- صورت کسر
برابر با -1
نشان
میدهد که
نخستین CTS
برابر با
اولین زمان
فعال در سند
است
- صورت کسر >= 0
نشاندهندهٔ
CTS مورد
استفاده
برای
نمونهٔ
نخست است
هنگامی که تقسیمبندی TTML غیرفعال باشد، مدتزمان نمونهٔ TTML توسط .I ttml_dur (در صورتی که 0 نباشد) مشخص میشود، یا برابر با مدتزمان سند تنظیم میگردد
بهطور پیشفرض، منابع رسانهای همانگونه که در اسناد TTML2 تعریف شدهاند حفظ میشوند.
میتوان
از .I ttml_embed برای
جاسازی
منابع
موجود در <head>
یا <body> درون
نمونهٔ TTML
استفاده
کرد:
- برای <source>،
<image>، <audio> و <font>،
نشانههای
محلی URI
مشخصشده
در src
بارگذاری
شده و src
بازنویسی
میشود.
- برای <data> با
کدگذاری base64،
داده
رمزگشایی
شده، عنصر
<data> حذف شده و
عنصر والد
<source> با درج
صفت src
بازنویسی
میشود.
دادههای جاسازیشده بهصورت یک زیرنمونه (subsample) به فریم TTML اضافه میشوند و عناصر ارجاعدهنده از src=urn:mpeg:14496-30:N استفاده خواهند کرد که در آن N نمایانگر اندیس زیرنمونه است.
یک
زیرنویس
مبدأ (subtitle zero)
میتواند
با استفاده
از .I ttml_zero مشخص
شود. این کار
تمام
زیرنویسهای
پیش از زمان
دادهشدهٔ T0
را حذف کرده
و زمان
آغاز/پایان T
هر زیرنویس
را با دقت
میلیثانیه
به T-T0
بازنویسی
میکند.
هشدار:
قالببندی
زمان اصلی
(tick، frames/subframe و ...)
هنگام
استفاده از
این گزینه
از دست
خواهد رفت و
به HH:MM:SS.ms تبدیل
میشود.
زمان
زیرنویس
مبدأ در
صورتی که
این گزینه
بهعنوان
یک آرگومان
سراسری
تنظیم نشده
باشد، باید
دارای
پیشوند T
باشد:
gpac -i test.ttml:ttml_zero=T10:00:00 [...]
MP4Box -add test.ttml:sopt:ttml_zero=T10:00:00 [...]
gpac -i test.ttml --ttml_zero=10:00:00 [...]
gpac -i test.ttml --ttml_zero=T10:00:00 [...]
MP4Box -add test.ttml --ttml_zero=10:00:00 [...]
پشتیبانی از متن ساده (Simple Text Support)
بارگذار
متن
میتواند
فایلهای
ورودی را با
اجبار نوع
کدک در
ورودی، به
جریانهای
متنی ساده
متشکل از یک
بستهٔ واحد
تبدیل کند:
gpac -i test.txt:#CodecID=stxt [...]
gpac fin:pck="Text Data":#CodecID=stxt [...]
محتوای
فایل مبدأ،
بار دادهٔ (payload)
نمونهٔ
متنی خواهد
بود. گزینهٔ
.I stxtmod امکان
مشخص کردن
حالتهای
WebVTT، TX3G یا متن
ساده را
برای قالب
خروجی
فراهم
میسازد.
در این
حالت،
گزینهٔ .I stxtdur
برای کنترل
مدتزمان
زیرنویس
تولیدشده
به کار
میرود:
- یک مقدار
مثبت
همواره
مدتزمان
را تحمیل
میکند
- یک مقدار
منفی در
صورتی که
مدتزمان
بستهٔ
ورودی مشخص
نباشد،
مدتزمان
را تحمیل
میکند
هنگام فریمبندی مجدد (reframing) جریانهای متنی ساده از دیماکسرها (مانند زیرنویسهای MKV)، قالب خروجی این جریانها را میتوان با استفاده از .I stxtmod تعیین کرد.
هنگام وارد کردن فایلهای SRT، SUB یا SSA، قالب خروجی PID را میتوان با استفاده از .I stxtmod تعیین کرد.
گزینهها (تخصصی) (OPTIONS (EXPERT))
nodefbox (bool،
پیشفرض: false):
نادیده
گرفتن کادر
متنی
پیشفرض
noflush (bool،
پیشفرض: false):
نادیده
گرفتن
تخلیه
نمونه
نهایی (flush)
برای srt
fontname (str): قلم
پیشفرض
fontsize (uint،
پیشفرض: 18):
اندازه قلم
پیشفرض
lang (str): زبان
پیشفرض
width (uint، پیشفرض:
0): عرض
پیشفرض
ناحیه متن
height (uint، پیشفرض:
0): ارتفاع
پیشفرض
ناحیه متن
txtx (uint، پیشفرض:
0): انحراف
افقی
پیشفرض
ناحیه متن: -1
(چپ)، 0 (مرکز)
یا 1 (راست)
txty (uint، پیشفرض:
0): انحراف
عمودی
پیشفرض
ناحیه متن: -1
(پایین)، 0
(مرکز) یا 1
(بالا)
zorder (sint، پیشفرض:
0): ترتیب z
پیشفرض
برای PID
timescale (uint،
پیشفرض: 1000):
مقیاس
زمانی
پیشفرض
برای PID
ttml_split (bool،
پیشفرض: true):
تقسیم سند ttml
به
نمونههای
بدون
همپوشانی
ttml_cts (lfrac،
پیشفرض: -1/1):
مقدار cts
اولین
نمونه -
راهنمای
فیلتر را
ببینید
ttml_dur (frac،
پیشفرض: 0/1):
مدتزمان
نمونه در
صورت عدم
تقسیمبندی
- راهنمای
فیلتر را
ببینید
ttml_embed (bool،
پیشفرض: false):
اجبار به
جاسازی
منابع TTML
ttml_zero (str): تنظیم
مبدا زمانی
(زمان صفر)
زیرنویس
برای TTML
no_empty (bool،
پیشفرض: false):
عدم ارسال
نمونههای
خالی
stxtdur (frac،
پیشفرض: 1):
مدتزمان
برای متن
ساده
stxtmod (enum،
پیشفرض: tx3g):
حالت جریان
متنی برای
جریانهای
متنی ساده و
ورودیهای SRT
* stxt:
قالببندی PID
خروجی به
صورت جریان
متنی ساده
(حذف
نشانهگذاریها
در
دادههای VTT/SRT)
* sbtt:
قالببندی PID
خروجی به
صورت جریان
متنی
زیرنویس
(حفظ
نشانهگذاریها
در
دادههای VTT/SRT)
* tx3g:
قالببندی PID
خروجی به
صورت جریان
TX3G/Apple
* vtt:
قالببندی PID
خروجی به
صورت جریان
WebVTT
* webvtt: مانند vtt
(برای
سازگاری رو
به عقب)
ttxtdec
توضیحات: رمزگشای TTXT/TX3G
این فیلتر
جریانهای
TTXT/TX3G را به یک
نمودار
صحنه (scene graph) BIFS از
فیلتر compositor
رمزگشایی
میکند.
مستندات TTXT در
https://wiki.gpac.io/xmlformats/TTXT-Format-Documentation
در دسترس
است.
در
رندرینگ
مستقل (بدون
ویدیوی
مرتبط)،
فیلتر از
موارد زیر
استفاده
خواهد کرد:
- ویژگیهای
Width و Height در pid
ورودی (در
صورت وجود)
- در غیر این
صورت،
گزینه osize
فیلتر compositor (در
صورت تنظیم
شدن)
- در غیر این
صورت، .I txtw و .I txth
گزینهها (تخصصی) (OPTIONS (EXPERT))
texture (bool،
پیشفرض: false):
استفاده از
بافتدهی (texturing)
برای متن
خروجی
outline (bool،
پیشفرض: false):
رسم خط دور
متن (outline)
txtw (uint، پیشفرض:
400): عرض
پیشفرض در
رندرینگ
مستقل
txth (uint، پیشفرض:
200): ارتفاع
پیشفرض در
رندرینگ
مستقل
vttdec
توضیحات: رمزگشای WebVTT
این فیلتر
جریانهای
WebVTT را به یک
نمودار
صحنه (scene graph) SVG از
فیلتر compositor
رمزگشایی
میکند.
ایجاد
نمودار
صحنه از
طریق JavaScript
انجام
میشود.
گزینههای
فیلتر برای
بازنویسی
متغیرهای
سراسری JS
رندرکننده
WebVTT استفاده
میشوند.
در رندرینگ
مستقل (بدون
ویدیوی
مرتبط)،
فیلتر از
موارد زیر
استفاده
خواهد کرد:
- ویژگیهای
Width و Height در pid
ورودی (در
صورت وجود)
- در غیر این
صورت،
گزینه osize
فیلتر compositor (در
صورت تنظیم
شدن)
- در غیر این
صورت، .I txtw و .I txth
script (str،
پیشفرض:
$GSHARE/scripts/webvtt-renderer.js): مکان
رندرکننده
WebVTT SVG JS
font (str، پیشفرض:
SANS،
قابلبهروزرسانی):
قلم
fontSize (flt،
پیشفرض: 20،
قابلبهروزرسانی):
اندازه قلم
color (str، پیشفرض:
white،
قابلبهروزرسانی):
رنگ متن
lineSpacing (flt،
پیشفرض: 1.0،
قابلبهروزرسانی):
فاصله خطوط
بهعنوان
ضریب مقیاس
نسبت به
اندازه قلم
txtw (uint، پیشفرض:
400): عرض
پیشفرض در
رندرینگ
مستقل
txth (uint، پیشفرض:
200): ارتفاع
پیشفرض در
رندرینگ
مستقل
ttmldec
شرح: رمزگشای TTML
این فیلتر
جریانهای
TTML را به یک
گراف صحنه SVG
فیلتر compositor
رمزگشایی
میکند.
ایجاد گراف
صحنه از
طریق JavaScript
انجام
میشود.
گزینههای
فیلتر برای
بازنویسی
متغیرهای
سراسری JS
رندرکننده
TTML استفاده
میشوند.
در
رندرینگ
مستقل (بدون
ویدیوی
مرتبط)،
فیلتر از
موارد زیر
استفاده
خواهد کرد:
- ویژگیهای
Width و Height در pid
ورودی در
صورت وجود
- در غیر این
صورت،
گزینه osize
فیلتر compositor در
صورت تنظیم
شدن
- در غیر این
صورت، .I txtw و .I txth
گزینهها (تخصصی) (OPTIONS (EXPERT))
script (str،
پیشفرض:
$GSHARE/scripts/ttml-renderer.js): مکان
رندرکننده
TTML SVG JS
font (str، پیشفرض:
SANS،
قابلبهروزرسانی):
قلم
fontSize (flt،
پیشفرض: 20،
قابلبهروزرسانی):
اندازه قلم
color (str، پیشفرض:
white،
قابلبهروزرسانی):
رنگ متن
valign (enum، پیشفرض:
bottom،
قابلبهروزرسانی):
تراز عمودی
* bottom: تراز کردن
متن در
پایین
ناحیه متنی
* center: تراز کردن
متن در مرکز
ناحیه متنی
* top: تراز کردن
متن در
بالای
ناحیه
متنی
lineSpacing (flt،
پیشفرض: 1.0،
قابلبهروزرسانی):
فاصله خطوط
بهعنوان
ضریب مقیاس
نسبت به
اندازه قلم
txtw (uint، پیشفرض:
400): عرض
پیشفرض در
رندرینگ
مستقل
txth (uint، پیشفرض:
200): ارتفاع
پیشفرض در
رندرینگ
مستقل
rtpin
شرح: ورودی RTP/RTSP/SDP
این فیلتر
خواندن
ورودی SDP/RTSP/RTP را
مدیریت
میکند. این
فیلتر
موارد زیر
را
پشتیبانی
میکند:
- خواندن
فایل SDP
- نشانی
مستقیم (URL)
پروتکل RTP از
طریق طرح
پروتکل rtp://
- پردازش
نشست RTSP از
طریق
طرحهای
پروتکل rtsp:// و
satip://
این فیلتر
یا PIDهایی با
فریمهای
رسانهای
تولید
میکند، یا
PIDهای فایلی
با
دادههای
مالتیپلکسشده
(مانند MPEG-2 TS).
این فیلتر
موارد زیر
را استفاده
خواهد کرد:
- پروتکل RTSP بر
بستر تونل HTTP
اگر درگاه
سرور 80 یا 8080
باشد یا اگر
طرح پروتکل
rtsph:// باشد.
- پروتکل RTSP بر
بستر TLS اگر
درگاه سرور
322 باشد یا
اگر طرح
پروتکل rtsps://
باشد.
- پروتکل RTSP بر
بستر تونل HTTPS
اگر درگاه
سرور 443 باشد
و اگر طرح
پروتکل rtsph://
باشد.
این فیلتر پس از دو شکست متوالی در اتصال اولیه، تلاش خواهد کرد در حالت TLS مجدداً متصل شود.
گزینهها (تخصصی) (OPTIONS (EXPERT))
src (cstr): مکان
محتوای
منبع (URL
مربوط به SDP، RTP
یا RTSP)
firstport (uint،
پیشفرض: 0):
شماره
اولین
درگاه
پیشفرض
مورد
استفاده (0
تصمیمگیری
را به فیلتر
واگذار
میکند)
ifce (str): آدرس IP
رابط
پیشفرض
برای
چندپخشی (multicast).
اگر NULL باشد،
از رابط
پیشفرض
سیستم
استفاده
خواهد شد
ttl (uint، پیشفرض:
127، بازه: 0-127):
مقدار TTL
چندپخشی
reorder_len (uint،
پیشفرض: 1000):
طول
بازآرایی
بر حسب بسته
reorder_delay (uint،
پیشفرض: 50):
حداکثر
تاخیر در
بازآراینده
RTP؛ بستهها
پس از آن
ارسال
خواهند شد
block_size (uint،
پیشفرض: 0x100000):
اندازه
بافر برای RTP/UDP
یا RTSP در حالت
درهمتنیده
(interleaved)
disable_rtcp (bool،
پیشفرض: false):
غیرفعالسازی
گزارشدهی
RTCP
nat_keepalive (uint،
پیشفرض: 0):
تاخیر
نگهداری
زنده NAT بر
حسب
میلیثانیه،
بهطور
پیشفرض
غیرفعال
است (بهجز
برای SatIP که
بهطور
پیشفرض
روی 30 ثانیه
تنظیم شده
است)
force_mcast (str): اجبار به
چندپخشی بر
روی IP
تعیینشده
در
راهاندازی
RTSP
use_client_ports (bool،
پیشفرض: false):
اجبار به
استفاده از
درگاههای
کلاینت
(ترفندی
برای برخی
سرورهای RTSP
که
درگاههای
کلاینت را
نادیده
میگیرند)
bandwidth (uint،
پیشفرض: 0):
تنظیم
پارامتر
پهنای باند
برای
درخواستهای
RTSP
default_port (uint،
پیشفرض: 554،
بازه: 0-65535):
تنظیم
درگاه
پیشفرض RTSP
satip_port (uint،
پیشفرض: 1400،
بازه: 0-65535):
تنظیم
درگاه
پیشفرض
برای SATIP
transport (enum،
پیشفرض: auto):
تنظیم RTP روی RTSP
* auto: فعال کردن
درهمتنیدگی
در صورت
استفاده از
تونل HTTP، در
غیر این
صورت
غیرفعال
کردن آن، و
تلاش مجدد
در حالت
درهمتنیده
در صورت
انقضای
مهلت زمانی
UDP
* tcp:
فعالسازی RTP
روی RTSP
* udp:
غیرفعالسازی
RTP روی RTSP
udp_timeout (uint،
پیشفرض: 10000):
مهلت زمانی
پیشفرض
قبل از
غیرفعال
فرض کردن UDP
rtcp_timeout (uint،
پیشفرض: 5000):
مهلت زمانی
پیشفرض
برای
ترافیک RTCP بر
حسب
میلیثانیه.
پس از این
زمان، پخش
بدون
همگامسازی
آغاز خواهد
شد. اگر 0
باشد همیشه
منتظر RTCP
میماند
first_packet_drop (uint،
پیشفرض: 0،
قابلبهروزرسانی):
تعیین
تعداد
اولین
بستههای RTP
برای دور
انداختن (0 در
صورت عدم
حذف)
frequency_drop (uint،
پیشفرض: 0،
قابلبهروزرسانی):
دور
انداختن ۱
بسته از هر N
بسته (0 دور
انداختن را
غیرفعال
میکند)
loss_rate (sint،
پیشفرض: -1،
قابلبهروزرسانی):
نرخ اتلاف
برای اعلان
در RTCP؛ مقدار -1
به معنای
نرخ اتلاف
واقعی است،
در غیر این
صورت نسبتی
در هزار از
بستههای
از
دسترفته
است
user_agent (str،
پیشفرض: $GUA):
رشته شناسه
کاربر (user agent)،
بهطور
پیشفرض بر
اساس
تنظیمات GPAC
تعیین
میشود
languages (str،
پیشفرض: $GLANG):
زبانهای
کاربر،
بهطور
پیشفرض بر
اساس
تنظیمات GPAC
تعیین
میشود
stats (uint، پیشفرض:
500):
بهروزرسانی
آمار به
کاربر در هر
میلیثانیه
مشخصشده (0
گزارشدهی
را غیرفعال
میکند)
max_sleep (sint،
پیشفرض: 1000):
تنظیم
حداکثر
زمان توقف
بر حسب
میلیثانیه:
- مقدار منفی -N
به این
معناست که
همیشه به
میزان N
میلیثانیه
متوقف شود
- مقدار مثبت N
به این
معناست که
حداکثر N
میلیثانیه
متوقف شود
اما اگر
مدتزمان
فریم
کوتاهتر
باشد کمتر
توقف خواهد
کرد
rtcpsync (bool،
پیشفرض: true):
استفاده از
RTCP برای
تنظیم
همگامسازی
forceagg (bool،
پیشفرض: false):
اجبار به
تجمیع
کنترل RTSP
(وصلهای
برای
سرورهای
معیوب)
ssm (strl): فهرست IPها
برای
گنجاندن در
چندپخشی
مبدأ-خاص (SSM)
ssmx (strl): فهرست IPها
برای
مستثنی
کردن از
چندپخشی
مبدأ-خاص (SSM)
توضیحات: خروجی فایل
این فیلتر
برای نوشتن
دادهها بر
روی دیسک
استفاده
میشود و
هیچ PID خروجی
تولید
نمیکند.
در حالت
عادی، این
فیلتر تنها
PID از نوع file را
میپذیرد.
فیلتر
بستههای
ورودی
(جریان از
نوع file) را در
فایل ذخیره
میکند (dump)، و
برای هر
بستهای که
پرچم frame_start آن
فعال باشد
یک فایل
جدید آغاز
مینماید،
مگر اینکه
در حالت .I cat
کار کند.
اگر نام
فایل خروجی
std یا stdout باشد،
در stdout
مینویسد.
نام فایل
خروجی
میتواند
از سازوکار
الگوسازی gpac
استفاده
کند، به gpac -h doc
مراجعه
کنید. فیلتر
ویژگی FileNumber را
روی
بستههای
ورودی برای
ایجاد
فایلهای
جدید رصد
میکند.
بهطور
پیشفرض،
فایلهای
خروجی
مستقیماً
ایجاد
میشوند که
در صورت
تلاش
برنامههای
همروند
برای
دسترسی به
آنها ممکن
است منجر به
بروز
مشکلاتی
گردد.
با
فعالسازی .I
atomic، فایلها
در پوشه
مقصد نهایی
با پسوند .gftmp
ایجاد شده و
پس از بسته
شدن، به نام
نهایی خود
منتقل
میشوند.
حالت سینک دورریز (Discard sink mode)
هنگامی که
مقصد null
باشد،
فیلتر به
عنوان یک
سینک (sink) عمل
کرده و تمام
بستههای
ورودی را
دور
میریزد.
در این
حالت،
فیلتر هر
نوع PID ورودی
را
میپذیرد،
نه فقط نوع file.
ضبط جاریسازی اچتیتیپی (HTTP streaming recording)
هنگام ضبط
یک نشست DASH یا
HLS، تعداد
قطعهها
برای
نگهداری در
هر کیفیت را
میتوان با
استفاده از .I
max_cache_segs تنظیم
کرد.
- مقدار 0 همه
چیز را نگه
میدارد
(رفتار
پیشفرض)
- یک مقدار
منفی N،
صرفنظر از
مقدار بافر
time-shift، تعداد -N
فایل را نگه
میدارد
- یک مقدار
مثبت N،
تعداد MAX(N, time-shift buffer)
فایل را نگه
خواهد
داشت
مثال
gpac -i LIVE_MPD dashin:forward=file -o rec/$File$:max_cache_segs=3
این دستور نگهداری حداکثر ۳ قطعهٔ رسانهای را هنگام ضبط نشست DASH اجبار میکند.
گزینهها (تخصصی) (Options (expert)):
dst (cstr): مکان
فایل مقصد
append (bool، پیشفرض:
false): باز کردن
در حالت
الحاق (append)
dynext (bool، پیشفرض:
false): مشخص
میکند که
پسوند فایل
توسط
زنجیره
فیلتر
تعیین
میشود، نه
dst
start (dbl، پیشفرض:
0.0): تنظیم
آفست شروع
پخش. یک
مقدار منفی
به معنای
درصدی از
مدتزمان
رسانه است
که در آن -1
برابر با کل
مدتزمان
است
speed (dbl، پیشفرض:
1.0): تنظیم
سرعت پخش
زمانی که vsync
روشن است.
اگر منفی
باشد و start
برابر با 0
باشد،
مقدار start روی -1
تنظیم
میشود
ext (cstr): تنظیم
پسوند برای
تفکیک گراف
(graph resolution)،
صرفنظر از
پسوند فایل
mime (cstr): تنظیم mime type
برای تفکیک
گراف
cat (enum، پیشفرض:
none): الحاق (cat)
کردن هر
فایل از PID
ورودی به
جای ایجاد
یک فایل به
ازای هر نام
فایل
* none: هرگز
فایلها
الحاق
نشوند
* auto: تنها در
صورت یکسان
بودن نام
فایلها
الحاق شوند
* all: همیشه و
صرفنظر از
نام
فایلها
الحاق
شوند
ow (enum،
پیشفرض: yes):
حالت
رونویسی
خروجی
زمانی که از
الحاق
استفاده
نمیشود
* yes: بازنویسی
فایل در
صورت وجود
* no: صادر کردن
خطا در صورت
وجود فایل
* ask: اعلان
تعاملی و
پرسش از
کاربر
mvbk (uint،
پیشفرض: 8192):
اندازه
بلوک مورد
استفاده
هنگام
جابهجایی
بخشهایی
از فایل در
حالت وصله (patch
mode)
redund (bool، پیشفرض:
false): نگهداری
بستههای
زائد (redundant) در
فایل خروجی
max_cache_segs (sint،
پیشفرض: 0):
حداکثر
تعداد
قطعههای
کششده به
ازای هر
کیفیت HAS
هنگام ضبط
نشستهای
زنده (0 به
معنای
نامحدود
است)
force_null (bool،
پیشفرض: false):
اجبار به
عدم تولید
خروجی
صرفنظر از
نام فایل
atomic (bool، پیشفرض:
false): استفاده
از نوشتن
اتمیک (atomic)
فایل برای
حالتهای
غیرالحاقی
uflatm
توضیحات: بازنویس LATM
این فیلتر جریانهای AAC را به دادههای کپسولهشدهٔ LATM تبدیل میکند.
گزینهها (تخصصی) (Options (expert)):
fdsi (frac، پیشفرض: 0): تنظیم تاخیر بین دو پیکربندی صوتی LATM (LATM Audio Config)
توضیحات: بازنویس ADTS
این فیلتر جریانهای AAC را به دادههای کپسولهشدهٔ ADTS تبدیل میکند.
گزینهها (OPTIONS) (حرفهای):
mpeg2 (enum،
پیشفرض: auto):
ارسال
سیگنال
بهصورت MPEG2 AAC
* auto: انتخاب بر
اساس
پروفایل AAC
* no: همواره
بهصورت MPEG-4 AAC
سیگنال
میدهد
* yes: همواره
بهصورت MPEG-2 AAC
سیگنال
میدهد
ufmhas
توضیحات: بازنویس MHAS
این فیلتر جریانهای صوتی MPEG-H Audio را به دادههای کپسولهشدهٔ MHAS تبدیل میکند.
گزینهها (OPTIONS) (حرفهای):
syncp (bool، پیشفرض: false): در صورت تنظیم، بستهٔ همگامسازی (sync packet) در هر فریم درج میشود، در غیر این صورت فقط در SAP درج خواهد شد
reframer
توضیحات: بازفریمبند رسانه (Media reframer)
این فیلتر
ابزارهای
گوناگونی
را روی
ورودیها
ارائه
میدهد:
- اطمینان از
فریمبندی
مجدد (۱ بسته
= ۱ Access Unit)
- اجبار
اختیاری به
رمزگشایی
- تنظیم
بیدرنگ (real-time
regulation)
- فیلترکردن
بستهها بر
اساس انواع
SAP یا
شمارههای
فریم
- استخراج و
تقسیم
بازهٔ
زمانی
این فیلتر
PIDهای ورودی
را مجبور
میکند تا
بهدرستی
فریمبندی
شوند (۱ بسته
= ۱ Access Unit).
این کار
معمولاً
برای اجبار
به
بازمالتیپلکسکردن
(remultiplexing) در
عملیات
فایل به
فایل،
هنگامی که
فایلهای
مبدأ و مقصد
از فرمت
یکسانی
استفاده
میکنند،
مورد نیاز
است.
فیلترکردن SAP (SAP filtering)
این فیلتر
میتواند
با استفاده
از گزینهٔ .I saps
بستهها را
بر اساس
انواع SAP
آنها حذف
کند.
برای
نمونه، این
قابلیت
میتواند
برای
استخراج
تنها
فریمهای
کلیدی (SAP 1,2,3) یک
ویدیو جهت
ایجاد یک
نسخهٔ trick mode
استفاده
شود.
فیلترکردن فریم (Frame filtering)
این فیلتر
میتواند
با استفاده
از گزینهٔ .I frames
تنها Access Unitهای
مشخصی از
مبدأ را نگه
دارد.
برای
نمونه، این
قابلیت
میتواند
برای
استخراج
تنها
تصاویر
کلیدی خاصی
از یک ویدیو
جهت ایجاد
یک مجموعهٔ
HEIF استفاده
شود.
رمزگشایی فریم (Frame decoding)
این فیلتر
میتواند
با استفاده
از گزینهٔ .I raw
جریانهای
رسانهای
ورودی را
وادار به
رمزگشایی
کند.
مثال
gpac -i m.mp4 reframer:raw=av [dst]
تنظیم بیدرنگ (Real-time Regulation)
این فیلتر
میتواند
تنظیم
بیدرنگ
بستههای
ورودی را بر
اساس مقیاس
زمانی (timescale) و
برچسبهای
زمانی (timestamps)
آنها
انجام دهد.
برای نمونه
جهت
شبیهسازی
یک پخش
زندهٔ DASH:
gpac -i m.mp4 reframer:rt=on -o live.mpd:dynamic
استخراج بازه (Range extraction)
این فیلتر
میتواند
با استفاده
از
گزینههای .I
xs و .I xe استخراج
بازهٔ
زمانی از
مبدأ را
انجام دهد.
فرمتهای
مجاز برای
مشخصکنندههای
زمان
عبارتند از:
* 'TC'HH:MM:SS:FF: تعیین
زمان در
قالب timecode
* 'T'H:M:S، 'T'M:S: تعیین
زمان بر حسب
ساعت،
دقیقه،
ثانیه
* 'T'H:M:S.MS، 'T'M:S.MS، 'T'S.MS:
تعیین زمان
بر حسب
ساعت،
دقیقه،
ثانیه و
میلیثانیه
* INT، FLOAT، NUM/DEN: تعیین
زمان بر حسب
ثانیه (عدد
یا کسر)
* 'D'INT، 'D'FLOAT، 'D'NUM/DEN:
تعیین زمان
پایان
بهعنوان
آفست نسبت
به زمان
شروع بر حسب
ثانیه (عدد
یا کسر) - فقط
برای .I xe
معتبر است
* 'F'NUM: تعیین
زمان
بهصورت
شمارهٔ
فریم، که ۱
اولین فریم
است
* XML DateTime: تعیین
زمان مطلق UTC
در این
حالت،
برچسبهای
زمانی
بازنویسی
میشوند تا
یک خط زمانی
پیوسته را
تشکیل
دهند، مگر
اینکه .I xots
تنظیم شده
باشد.
هنگامی که
چندین بازه
مشخص شده
باشد،
فیلتر در
صورت نیاز و
پشتیبانی
توسط مبدأ،
تلاش
میکند تا
پرش (seek) انجام
دهد.
مثال
gpac -i m.mp4 reframer:xs=T00:00:10,T00:01:10,T00:02:00:xe=T00:00:20,T00:01:20
[dst]
این دستور بازههای زمانی [10s,20s]، [1m10s,1m20s] و تمامی رسانه از دقیقهٔ ۲ به بعد را استخراج میکند
اگر برای
یک بازهٔ
شروع مشخص
هیچ بازهٔ
پایانی
یافت نشود:
- اگر بازهٔ
شروع بعدی
تنظیم شده
باشد،
بازهٔ
پایان
برابر با
این شروع
بعدی در نظر
گرفته
میشود
- در غیر این
صورت،
بازهٔ
پایان باز
خواهد
ماند
مثال
gpac -i m.mp4 reframer:xs=0,10,25:xe=5,20 [dst]
این دستور
بازههای
زمانی [0s,5s]، [10s,20s] و
تمامی
رسانه از
ثانیهٔ ۲۵
به بعد را
استخراج
میکند
مثال
gpac -i m.mp4 reframer:xs=0,10,25 [dst]
این دستور بازههای زمانی [0s,10s]، [10s,25s] و تمامی رسانه از ثانیهٔ ۲۵ به بعد را استخراج میکند
میتوان
مرزهای
بازه را در
بستههای
خروجی با
استفاده از .I
splitrange
نشانهگذاری
کرد.
این کار
ویژگیهای
زیر را روی
نخستین
بسته از هر
بازه در هر PID
در دسترس
قرار
میدهد:
* `FileNumber`: شروع از ۱
برای
نخستین
بازه، جهت
استفاده
بهجای $num$ در
الگوها
* `FileSuffix`: متناظر
با StartRange_EndRange یا StartRange
برای
بازههای
باز، جهت
استفاده
بهجای $FS$ در
الگوها
مثال
gpac -i m.mp4 reframer:xs=T00:00:10,T00:01:10:xe=T00:00:20:splitrange -o
dump_$FS$.264 [dst]
این دستور
دو فایل
خروجی dump_T00.00.10_T00.02.00.264
و dump_T00.01.10.264 را
ایجاد
خواهد کرد.
نکته:
نویسههای :
و / در ویژگی
FileSuffix با .
جایگزین
میشوند.
میتوان
ویژگیهای PID
را به ازای
هر بازه با
استفاده از .I
props تغییر داد.
هر مجموعه
از
ویژگیها
باید با
استفاده از
مجموعه
جداکنندههای
فعال مشخص
شود.
هشدار: این
گزینه باید
با
جداکنندههای
دوگانه
گریزدهی (escape)
شود تا
بهدرستی
تجزیه گردد.
مثال
gpac -i m.mp4 reframer:xs=0,30::props=#Period=P1,#Period=P2:#foo=bar [dst]
این دستور
به PIDهای
خروجی
اختصاص
میدهد:
* در طول
بازهٔ [0,30]:
ویژگی Period به P1
* در طول
بازهٔ [30, end]:
ویژگی Period به P2 و
ویژگی foo به bar
برای PIDهای صوتی فشردهنشده، فریم ورودی به نزدیکترین شمارهٔ نمونهٔ صوتی تقسیم خواهد شد.
هنگامی که
.I xround روی seek
تنظیم شده
باشد،
موارد زیر
اعمال
میشود:
- باید تنها
یک بازه
مشخص شود
- اولین I-frame قبل
از شروع
بازه یا
منطبق با آن
بهعنوان
نقطهٔ برش
استفاده
میشود
- تمامی
بستههای
قبل از شروع
بازه
بهعنوان
نقاط پرش (seek points)
علامتگذاری
میشوند
- بستههایی
که با شروع
بازه
همپوشانی
دارند،
همراه با
ویژگی SkipBegin که
مقدار
رسانه برای
نادیدهگرفتن
را مشخص
میکند،
ارسال
میشوند
- بستههایی
که با پایان
بازه
همپوشانی
دارند، با
مدتزمان
تنظیمشده
جهت تطابق
با پایان
بازه ارسال
میشوند
این حالت
معمولاً
برای
استخراج
بازه با دقت
در حد
فریم/نمونه،
بهجای
همترازی
با GOP
استفاده
میشود.
هنگامی که
.I xround روی seek
تنظیم نشده
باشد،
جریانهای
صوتی
فشردهشده
همچنان از
حالت seek
استفاده
خواهند کرد.
در نتیجه،
این
جریانها
در ISOBMFF دارای edit
listهای
تغییریافته
خواهند بود
که ممکن است
توسط
پخشکنندهها
بهدرستی
پشتیبانی
نشوند.
با استفاده
از .I no_audio_seek
میتوان از
این موضوع
جلوگیری
کرد، اما
این کار
باعث ایجاد
تاخیر صوتی
خواهد شد.
فیلتر
میتواند
استخراج
بازه را به
جای زمان
رسانه، بر
اساس زمان UTC
انجام دهد.
در این
حالت، زمان
پایان باید
یکی از
موارد زیر
باشد:
* یک تاریخ UTC:
استخراج
بازه پس از
این تاریخ
متوقف
خواهد شد
* یک زمان بر
حسب ثانیه:
استخراج
بازه پس از
مدتزمان
مشخصشده
متوقف
خواهد شد
مرجع UTC با
استفاده از .I
utc_ref مشخص
میشود.
اگر از
سیگنال UTC
منبع رسانه
استفاده
شود، فیلتر
پیش از
اینکه
منبع را
فاقد
سیگنال UTC در
نظر بگیرد،
به مدت .I utc_probe به
کاوش (probe)
میپردازد.
ویژگیهای
SenderNTP و در صورت
عدم وجود، UTC
مربوط به
بستههای
منبع برای
برقراری
مرجع UTC
بررسی
میشوند.
سایر عملیاتهای تقسیم (Split)
فیلتر
میتواند
تقسیم منبع
را با
استفاده از
گزینهٔ .I xs
انجام دهد.
قالبهای
اضافی مجاز
برای
گزینهٔ .I xs
عبارتند از:
* `SAP`: تقسیم
منبع در هر SAP/RAP
* `D`VAL: تقسیم
منبع به
تکههای VAL
ثانیهای
* `D`NUM/DEN: تقسیم
منبع به
تکههای NUM/DEN
ثانیهای
* `S`VAL: تقسیم
منبع به
تکههایی
با اندازهٔ
تخمینی VAL
بایت (امکان
استفاده از
ضریبهای
ویژگی،
مانند m)
نکته: در این حالتها، .I splitrange و .I xadjust بهطور ضمنی تنظیم میشوند.
مدیریت ناپیوستگیهای جریان (Stream Discontinuities)
ناپیوستگیها
ممکن است در
نشستهای
پخش جاری (streaming)
به دلیل
تغییر
تفکیکپذیری،
تغییر کدک و
غیره به
کرات رخ
دهند...
اگرچه GPAC این
ناپیوستگیها
را در درون
خود مدیریت
میکند،
ممکن است
نادیده
گرفتن
آنها
مطلوب
باشد؛ به
عنوان مثال
زمانی که
مشخص است
منبع
ناپیوستگی
ندارد، اما
GPAC مواردی را
به دلیل
خطاهای
شبکه یا
سایر
ویژگیهای
متغیر که
باید
نادیده
گرفته
شوند،
تشخیص
میدهد.
مقدار منفی
برای
گزینهٔ .I chkdisc
امکان حذف
تمامی
ناپیوستگیها
را پس از
راهاندازی
جریان
فراهم
میکند.
هشدار:
مطمئن شوید
که
میدانید
چه کاری
انجام
میدهید،
زیرا
استفاده از
این گزینه
میتواند
جریان را
غیرقابل
پخش کند
(چشمپوشی
از تغییر
پیکربندی
کدک).
مثال
gpac -i SOMEURL reframer:chkdisc=-1 -o DASH_ORIGIN
در این مثال، فیلتر dasher هرگز یک تغییر دوره (period switch) را به دلیل ناپیوستگی جریان ورودی فعال نمیکند.
مقدار 0 برای گزینهٔ .I chkdisc رفتار فیلتر را تغییر نمیدهد.
یک مقدار
مثبت برای
گزینهٔ .I chkdisc
پیوستگی
مهرزمانی (timestamp)
را در جریان
ورودی
بررسی
میکند.
یک
ناپیوستگی
(Discontinuity) زمانی
برانگیخته
میشود که:
- زمان
رمزگشایی
بستهٔ فعلی
اکیداً
کمتر از
زمان
رمزگشایی
بستهٔ قبلی
باشد
- زمان
رمزگشایی
بستهٔ فعلی
اکیداً
بیشتر از
زمان
رمزگشایی
بستهٔ قبلی
بهعلاوهٔ .I
chkdisc باشد
هنگام برانگیخته شدن، ویژگی PID با نام Discontinuity بهروزرسانی میشود که به فیلترهای بعدی اجازه میدهد دربارهٔ نحوهٔ اقدام تصمیم بگیرند.
گزینهها (تخصصی):
exporter (bool،
پیشفرض: false):
سازگاری با
exporter قدیمی،
نمایش
نتایج
خروجی
گرفتن
rt (enum، پیشفرض:
off،
قابلبهروزرسانی):
حالت تنظیم
بلادرنگ
ورودی
* off:
غیرفعالسازی
تنظیم
بلادرنگ
* on: فعالسازی
تنظیم
بلادرنگ،
یک ساعت (clock) به
ازای هر PID
* sync:
فعالسازی
تنظیم
بلادرنگ،
یک ساعت
مشترک برای
تمام PIDها
* align: ارسال
بستهها با
ترتیب DTS
پیرو یک
ساعت مشترک
برای تمام
PIDها
(خنثیسازی
فوران
بستههای
ورودی)،
بدون تنظیم
بلادرنگ
saps (uintl، نوع شمارشی: 0|1|2|3|4، قابلبهروزرسانی): فهرست انواع SAP (0,1,2,3,4) برای فوروارد، بستههای دیگر دور ریخته میشوند (فوروارد کردن تنها sap 0 فرایند رمزگشایی را مختل میکند)
refs (bool،
پیشفرض: false،
قابلبهروزرسانی):
فوروارد
کردن تنها
فریمهایی
که به عنوان
فریم مرجع
استفاده
میشوند،
در صورت قید
شدن در
جریان
ورودی
speed (dbl، پیشفرض:
0.0،
قابلبهروزرسانی):
سرعت برای
حالت تنظیم
بلادرنگ،
مقدار 0 از
سرعت
دستورهای
پخش
استفاده
میکند
raw (enum، پیشفرض:
no): اجبار
جریانهای AV
ورودی به
قرارگیری
در قالب خام
(raw)
* no: عدم اجبار
به
رمزگشایی
ورودیها
* av: اجبار به
رمزگشایی
ورودیهای
صوتی و
ویدئویی
* a: اجبار به
رمزگشایی
ورودیهای
صوتی
* v: اجبار به
رمزگشایی
ورودیهای
ویدئویی
frames (sintl،
قابلبهروزرسانی):
دور ریختن
تمامی
فریمها به
جز
فریمهای
فهرستشده
(نخستین
فریم 1 است).
یک مقدار
منفی -V تنها
اولین فریم
از هر V فریم
را نگه
میدارد
xs (strl): زمان(های)
شروع
استخراج.
اگر تنظیم
نشود و زمان
پایان
استخراج
مشخص شده
باشد،
مقدار 0
استفاده
میشود
xe (strl): زمان(های)
پایان
استخراج.
اگر تعداد
مقادیر
کمتر از
زمانهای
شروع باشد،
آخرین
بازهٔ
زمانی
استخراجشده
یک بازهٔ
باز خواهد
بود
xround (enum، پیشفرض:
before): تنظیم
زمان شروع
بازهٔ
استخراج به
فریم I
* before: استفاده
از نخستین
فریم I پیش از
یا منطبق با
شروع بازه
* seek: به
راهنمای
فیلتر
مراجعه
کنید
* after: استفاده
از نخستین
فریم I (در
صورت وجود)
پس از یا
منطبق با
شروع بازه
* closest: استفاده
از
نزدیکترین
فریم I به
شروع بازه
xadjust (bool،
پیشفرض: false):
تنظیم زمان
پایان
بازهٔ
استخراج به
گونهای که
پیش از فریم I
بعدی باشد
xots (bool، پیشفرض:
false): حفظ
مهرهای
زمانی اصلی
پس از
استخراج
xdts (bool، پیشفرض:
false): محاسبهٔ
زمانهای
شروع بر
اساس DTS و نه CTS
nosap (bool، پیشفرض:
false): برش نزدن
در SAP هنگام
استخراج
بازه (ممکن
است منجر به
جریانهای
آسیبدیده
شود)
splitrange (bool،
پیشفرض: false):
اعلان مرز
فایل در
نخستین
بستهٔ هر
استخراج
جهت تولید
فایل مبتنی
بر الگو
seeksafe (dbl،
پیشفرض: 10.0):
بازپیچی
درخواستهای
پخش به
میزان
ثانیههای
مشخصشده
(برای
اطمینان از
دریافت
فریم I پیش از
شروع)
tcmdrw (bool، پیشفرض:
true): بازنویسی
نمونههای
TCMD هنگام
تقسیم
props (strl):
ویژگیهای
اضافی PID
خروجی به
ازای هر
بازهٔ
استخراج
no_audio_seek (bool،
پیشفرض: false):
غیرفعالسازی
حالت پرش (seek)
در
جریانهای
صوتی (عدم
تغییر
مدتزمان priming)
probe_ref (bool،
پیشفرض: false):
مجاز
دانستن
طولانیتر
شدن بازهٔ
استخراج در
صورت وجود
فریمهای B
با
فریمهای
مرجعی که
خارج از
بازه ارائه
شدهاند
utc_ref (enum،
پیشفرض: any):
تعیین حالت
مرجع برای
استخراج
بازه بر
اساس UTC
* local: استفاده
از UTC میزبان
محلی
* any: استفاده
از UTC رسانه،
یا UTC میزبان
محلی در
صورت یافت
نشدن در
رسانه پس از
زمان کاوش
* media: استفاده
از UTC رسانه
(در صورت عدم
یافتن، لغو
میشود)
* tc: استفاده
از timecode رسانه
(احتیاط: روز
مدنظر،
امروز در
نظر گرفته
خواهد شد)
utc_probe (uint،
پیشفرض: 5000):
مهلت زمانی
بر حسب
میلیثانیه
برای تلاش
جهت کسب
مرجع UTC از
رسانه
copy (bool، پیشفرض:
false،
قابلبهروزرسانی):
تلاش برای
کپی کردن
رابط فریم
در بستهها
cues (enum، پیشفرض:
no،
قابلبهروزرسانی):
حالت
فیلترسازی cue
* no: عدم فیلتر
فریمها بر
اساس
دادههای cue
* segs: فقط
فوروارد
کردن
فریمهای
علامتگذاریشده
به عنوان
شروع قطعه (segment)
* frags: فقط
فوروارد
کردن
فریمهای
علامتگذاریشده
به عنوان
شروع بخش (fragment)
sapcue (uint،
پیشفرض: 0):
تلقی کردن
SAPهای
کوچکتر یا
مساوی این
مقدار به
عنوان نقاط
cue
rmseek (bool، پیشفرض:
false،
قابلبهروزرسانی):
حذف پرچم seek
از تمامی
بستههای
ارسالشده
chkdisc (frac،
پیشفرض: 0/1،
قابلبهروزرسانی):
تشخیص
ناپیوستگی
بر حسب
میلیثانیه
- به راهنمای
فیلتر
مراجعه
کنید
توضیحات: مبدل جریان به فایل
مبدل
عمومی
تکجریان
به فایل،
مورد
استفاده در
زمان
استخراج یا
تبدیل PIDها.
فیلتر writegen
معمولاً
نباید بدون
مشخص کردن
شناسه منبع
(source ID) بهصورت
صریح
بارگذاری
شود، چرا که
این فیلتر
به احتمال
زیاد با هر
اتصال PID
تطبیق
خواهد
یافت.
گزینهها (پیشرفته) (OPTIONS (EXPERT))
exporter (bool،
پیشفرض: false):
سازگاری با
exporter قدیمی،
نتایج
خروجی را
نمایش
میدهد
pfmt (pfmt، پیشفرض:
none، Enum:
none|yuv420|yvu420|yuv420_10|yuv422|yuv422_10|yuv444|yuv444_10|uyvy|vyuy|yuyv|yvyu|uyvl|vyul|yuyl|yvyl|nv12|nv21|nv1l|nv2l|yuva|yuvd|yuv444a|yuv444p|v308|yuv444ap|v408|v410|v210|grey|algr|gral|rgb8|rgb4|rgb5|rgb6|rgba|argb|bgra|abgr|rgb|bgr|xrgb|rgbx|xbgr|bgrx|rgbd|rgbds|uncv):
قالب پیکسل
برای
استخراج
خام. در صورت
تنظیم
نشدن، از
پسوند فایل
گرفته
میشود
afmt (afmt، پیشفرض: none، Enum: none|u8|s16|s16b|s24|s24b|s32|s32b|flt|fltb|dbl|dblb|u8p|s16p|s24p|s32p|fltp|dblp): قالب صوتی برای استخراج خام. در صورت تنظیم نشدن، از پسوند فایل گرفته میشود
decinfo (enum،
پیشفرض: auto):
حالت درج
پیکربندی
دیکدر (decoder config)
* no: هرگز درج
نمیشود
* first: روی
نخستین
بسته درج
میشود
* sap: در هر SAP درج
میشود
* auto: بر اساس
نوع رسانه
بین no و first
انتخاب
میکند
split (bool،
پیشفرض: false):
اجبار به
ایجاد یک
فایل به
ازای هر
فریم
frame (bool، پیشفرض:
false): اجبار به
تخلیه
تکفریم
بدون
بازنویسی.
در این
حالت، تمام
انواع
کُدکها
پشتیبانی
میشوند
sstart (uint، پیشفرض:
0): شماره
فریم شروع
برای هدایت
به جلو. اگر 0
باشد، تمام
نمونهها
هدایت
میشوند
send (uint، پیشفرض:
0): شماره
فریم پایان
برای هدایت
به جلو. اگر
کمتر از
فریم شروع
باشد، تمام
نمونههای
پس از فریم
شروع هدایت
میشوند
dur (frac، پیشفرض:
0): مدتزمان
رسانه برای
هدایت به
جلو پس از
نخستین
نمونه. اگر 0
باشد، تمام
نمونهها
هدایت
میشوند
merge_region (bool،
پیشفرض: false):
ادغام
نواحی TTML با
شناسه
یکسان
هنگام
بازترکیب
سند TTML
vtth (enum، پیشفرض:
seg): حالت
تزریق هدر vtt
* single: تزریق فقط
در نخستین
فریم جریان
* seg: تزریق در
هر بخش
غیرخالی
* all: تزریق در
هر بخش، حتی
بخشهای
خالی
add_nl (bool،
پیشفرض: false):
افزودن خط
جدید پس از
هر بسته
هنگام
تخلیه
جریانهای
متنی
rawb (bool، پیشفرض:
false): اجبار به
تخلیه
مستقیم
ورودی بدون
بازنویسی
فریمبندی.
در این
حالت، تمام
انواع
کُدکها
پشتیبانی
میشوند
ufnalu
توضیحات: بازنویسنده AVC/HEVC به AnnexB
این فیلتر جریانهای AVC|H264 و HEVC را با مجموعهپارامترهای درونباندی (inband) و کدهای شروع به قالب AnnexB تبدیل میکند.
گزینهها (پیشرفته) (OPTIONS (EXPERT))
rcfg (bool،
پیشفرض: true):
اجبار به
تکرار
پیکربندی
دیکدر در هر
فریم I
extract (enum،
پیشفرض: all):
حالت
استخراج
لایه
* all: تمام
لایهها را
استخراج
میکند
* base: فقط لایه
پایه را
استخراج
میکند
* layer: فقط
لایه(های)
غیرپایه را
استخراج
میکند
delim (bool،
پیشفرض: true):
درج AU Delimiter NAL
pps_inband (bool،
پیشفرض: false):
تزریق PPS در
هر فریم غیر
SAP، در صورت
تنظیم نشدن
rcfg نادیده
گرفته
میشود
writeqcp
توضیحات: نویسنده QCP
این فیلتر یک جریان واحد QCELP، EVRC یا MSV را به یک فایل خروجی QCP تبدیل میکند.
گزینهها (پیشرفته) (OPTIONS (EXPERT))
exporter (bool، پیشفرض: false): سازگاری با exporter قدیمی، نتایج خروجی را نمایش میدهد
ufvtt
توضیحات: بازنویسنده WebVTT
این فیلتر یک جریان واحد ISOBMFF WebVTT را به قالب بدون فریم (unframed) آن تبدیل میکند.
exporter (bool،
پیشفرض: false):
سازگاری با
صادرکننده
قدیمی،
نمایش
نتایج صدور
merge_cues (bool،
پیشفرض: true):
ادغام
نشانههای VTT
(لغو
تقسیمبندی
نشانههای
ISOBMFF)
noempty (bool،
پیشفرض: false):
در صورت
نبود
نشانههای
VTT، فایل
خالی ایجاد
نشود
nhntw
توضیحات: نویسنده NHNT
این فیلتر
یک جریان تک
را به یک
فایل خروجی
NHNT تبدیل
میکند.
مستندات NHNT در
نشانی
https://wiki.gpac.io/xmlformats/NHNT-Format در
دسترس است.
گزینهها (تخصصی) (OPTIONS (EXPERT)):
exporter (bool،
پیشفرض: false):
سازگاری با
صادرکننده
قدیمی،
نمایش
نتایج صدور
large (bool، پیشفرض:
false): استفاده
از حالت
فایل بزرگ
nhmlw
توضیحات: نویسنده NHML
این فیلتر
یک جریان تک
را به یک
فایل خروجی
NHML تبدیل
میکند.
مستندات NHML در
نشانی
https://wiki.gpac.io/xmlformats/NHML-Format در
دسترس است.
گزینهها (تخصصی) (OPTIONS (EXPERT)):
exporter (bool،
پیشفرض: false):
سازگاری با
صادرکننده
قدیمی،
نمایش
نتایج صدور
dims (bool، پیشفرض:
false): استفاده
از حالت DIMS
name (str): تنظیم نام
خروجی
فایلهای
رسانه و
اطلاعات
تولیدشده
nhmlonly (bool،
پیشفرض: false):
فقط
استخراج
اطلاعات NHML،
نه
دادههای
رسانه
pckp (bool، پیشفرض:
false): استخراج
کامل NHML
payload (bool،
پیشفرض: false):
استخراج
بار داده (payload)
(در حال حاضر
فقط scte35)، باید
با nhmlonly ترکیب
شود
chksum (enum، پیشفرض:
none): درج مجموع
مقابلهای
(checksum) فریم
* none: بدون
مجموع
مقابلهای
* crc: مجموع
مقابلهای
CRC32
* sha1: مجموع
مقابلهای
SHA1
vobsubdmx
توضیحات: تفکیککننده VobSub
این فیلتر فایلها/دادههای VobSub را برای تولید PIDها و فریمهای رسانهای تجزیه میکند.
گزینهها (تخصصی) (OPTIONS (EXPERT)):
blankframe (bool،
پیشفرض: true):
اجبار به
درج یک فریم
خالی در
صورتی که
نخستین subpic در 0
نباشد
keepempty (bool،
پیشفرض: false):
اعلان
قطعههای VobSub
فاقد فریم
avimx
توضیحات: چندگانهساز AVI
این فیلتر صدا و تصویر خام یا فشردهشده را برای تولید یک خروجی AVI چندگانهسازی میکند.
برخلاف
سایر
فیلترهای
چندگانهسازی
در GPAC، این یک
فیلتر مقصد
(sink) است و هیچ
PIDای برای
هدایت مجدد
در گراف
تولید
نمیکند.
با این حال،
فیلتر
میتواند
از نامهای
الگویی
برای خروجی
خود
استفاده
کند و از
نخستین PID
ورودی برای
حل نام
نهایی بهره
ببرد.
این فیلتر
مشخصه FileNumber روی
بستههای
ورودی را
برای ایجاد
فایلهای
جدید بررسی
میکند.
این فیلتر
به دنبال
مشخصه AVIType
تنظیمشده
روی جریان
ورودی
میگردد.
این مقدار
میتواند
یک 4CC یا یک
رشته باشد
که قالب
چندگانهسازی
(mux) را برای PID
نشان
میدهد.
اگر این
رشته دارای
پیشوند +
باشد و
پیکربندی
رمزگشا
موجود بوده
و به صورت یک
جعبه (box) ISOBMFF
قالببندی
شده باشد،
سرایند
جعبه حذف
خواهد شد.
dst (cstr): مکان
فایل مقصد
fps (frac, default: 25/1): نرخ
فریم
پیشفرض در
صورت عدم
تعیین در
جریان
noraw (bool, default: false):
غیرفعالسازی
خروجی خام
در AVI، فقط
موارد
فشرده مجاز
است
opendml_size (luint, default: 0): اجبار
به قالب opendml
هنگامی که
تکهها
بزرگتر از
این مقدار
باشند (۰ به
معنای
بیشینه
اندازه ۱٫۹
گیگابایت
در هر riff chunk است)
aout
توضیحات: خروجی صوتی
این فیلتر یک PID ورودی صوتی PCM (فشردهنشده) منفرد را در کارت صدا یا دستگاه خروجی صوتی دیگری مینویسد.
هر چه بافر صوتی bdur طولانیتر باشد، تاخیر صوتی (مکث/ادامه) بیشتر خواهد بود. همچنین کیفیت پخش سریع صدا (fast forward) هنگام استفاده از بافرهای صوتی بزرگ کاهش خواهد یافت.
اگر clock تنظیم شده باشد، فیلتر زمان سیستم (بر حسب میکروثانیه - us) و CTS بستهٔ متناظر را برای استفادهٔ سایر فیلترها جهت همگامسازی صوت و تصویر (AV sync) گزارش میکند.
گزینهها (تخصصی) (OPTIONS (EXPERT)):
drv (cstr): نام
درایور
صوتی
bnum (uint, default: 2): تعداد
بافرهای
صوتی (۰ برای
خودکار)
bdur (uint, default: 100):
مدتزمان
کل همهٔ
بافرها بر
حسب
میلیثانیه
(۰ برای
خودکار)
threaded (bool, default: true): اجبار
به ایجاد نخ
(thread) اختصاصی
در صورتی که
درایور
کارت صدا
چندنخی (threaded)
نباشد
dur (frac, default: 0): تنها
پخش
مدتزمان
مشخصشده
clock (bool, default: true):
پیشنهاد
ساعت صوتی (audio
clock) برای این
جریان
speed (dbl, default: 1.0, updatable): تنظیم
سرعت پخش.
اگر سرعت
منفی باشد و
start برابر با ۰
باشد، start روی
۱- تنظیم
میشود
start (dbl, default: 0.0, updatable): تنظیم
آفست شروع
پخش. مقدار
منفی به
معنای
درصدی از
مدتزمان
رسانه است
که در آن ۱-
برابر با کل
مدتزمان
است
vol (uint, default: 100, minmax: 0-100, updatable):
تنظیم
بلندی صدای
پیشفرض،
به صورت
درصدی بین ۰
تا ۱۰۰
pan (uint, default: 50, minmax: 0-100, updatable):
تنظیم تراز
استریو (pan)،
به صورت
درصدی بین ۰
تا ۱۰۰ که ۵۰
در مرکز
قرار دارد
buffer (uint, default: 100): تنظیم
بافر
بازپخش بر
حسب
میلیثانیه
mbuffer (uint, default: 0): تنظیم
بیشینه
ظرفیت
اشغال بافر
بر حسب
میلیثانیه.
اگر کمتر از
buffer باشد، از
مقدار buffer
استفاده
میشود
rbuffer (uint, default: 0, updatable): محرک
بافرسازی
مجدد (rebuffer) بر
حسب
میلیثانیه.
اگر ۰ یا
بیشتر از buffer
باشد،
بافرسازی
مجدد
غیرفعال
میشود
adelay (frac, default: 0, updatable): تنظیم
تاخیر صوتی
بر حسب
ثانیه
buffer_done (bool): نشانگر
اتمام بافر
(فقطخواندنی،
برای
برنامهٔ
کاربر)
rebuffer (luint): زمان
سیستم بر
حسب
میکروثانیه
(us) در هنگام
شروع آخرین
بافرسازی
مجدد، ۰ در
صورت عدم
بافرسازی
مجدد
(فقطخواندنی،
برای
برنامهٔ
کاربر)
media_offset (dbl, default: 0): آفست
رسانه (کسر
این مقدار
از CTS برای
بهدست
آوردن زمان
رسانه -
فقطخواندنی)
ufm4v
توضیحات: بازنویس M4V
این فیلتر جریانهای تصویری MPEG-4 part 2 را به قالبی قابلنوشتن تبدیل میکند (درج مجدد پیکربندی رمزگشا).
گزینهها (تخصصی) (OPTIONS (EXPERT)):
rcfg (bool, default: true): اجبار به تکرار پیکربندی رمزگشا در هر I-frame
ufvc1
توضیحات: بازنویس VC1
این فیلتر جریانهای تصویری VC1 را به قالبی قابلنوشتن تبدیل میکند (درج مجدد پیکربندی رمزگشا و کدهای شروع در صورت نیاز).
گزینهها (تخصصی) (OPTIONS (EXPERT)):
rcfg (bool, default: true): اجبار به تکرار پیکربندی رمزگشا در هر I-frame
resample
توضیحات: بازنمونهبردار صوتی
این فیلتر صدای خام را به نرخ نمونهبرداری، تعداد کانالها یا قالب صوتی هدف بازنمونهبرداری میکند.
گزینهها (تخصصی) (OPTIONS (EXPERT)):
och (uint, default: 0): تعداد
کانالهای
صوتی خروجی
مورد نظر (۰
برای
خودکار)
osr (uint, default: 0): نرخ
نمونهبرداری
صوتی خروجی
مورد نظر (۰
برای
خودکار)
osfmt (afmt, default: none): قالب
نمونهبرداری
صوتی خروجی
مورد نظر (none
برای
خودکار)
olayout (alay, Enum:
mono|stereo|3/0.0|3/1.0|3/2.0|3/2.1|5/2.1|1+1|2/1.0|2/2.0|3/3.1|3/4.1|11/11.2|5/2.1|5/5.2|5/4.1|6/5.1|6/7.1|5/6.1|7/6.1):
چیدمان CICP
مورد نظر
برای صوت
خروجی (null
برای
خودکار)
توضیحات: خروجی ویدیو
این فیلتر
یک PID ورودی
تصویری
منفرد را در
یک پنجره
نمایش
میدهد.
پنجره
ایجاد
میشود مگر
اینکه یک
دستگیره
پنجره (HWND، xWindow و
غیره) در
فایل
پیکربندی
مشخص شده
باشد ( [Temp]OSWnd=ptr).
خروجی از
ماژول
خروجی
ویدیوی GPAC که
در گزینه .I drv
یا در فایل
پیکربندی
مشخص شده
است
استفاده
میکند
(راهنمای
هسته GPAC را
ببینید).
ماژول
خروجی
ویدیو
میتواند
بیشتر
پیکربندی
شود
(راهنمای
هسته GPAC را
ببینید).
این فیلتر
بسته به
پشتیبانی
سیستمعامل،
میتواند
از OpenGL یا blit
دوبعدی
کارت
گرافیک
استفاده
کند.
این فیلتر
میتواند
برای تخلیه
(dump) فریمها
به همان
صورتی که
توسط کارت
گرافیک
نوشته
شدهاند (GPU read-back)
با استفاده
از .I dumpframes به کار
رود.
در این
حالت،
پنجره قابل
مشاهده
نیست و تنها
فریمهای
فهرستشده
بر روی GPU رسم
میشوند.
قالب
پیکسلی
فریم
تخلیهشده
در OpenGL همواره RGB
است و در
حالت
دوبعدی با
قالب بافر
پشتی (backbuffer)
ویدیو
مطابقت
دارد.
گزینهها (OPTIONS) (تخصصی):
drv (cstr): نام
درایور
ویدیو
vsync (bool، پیشفرض:
true):
فعالسازی
همگامسازی
صفحه ویدیو
(vsync)
drop (bool، پیشفرض:
false، قابل
بهروزرسانی):
فعالسازی
دور
انداختن
فریمهای
دیرهنگام
disp (enum، پیشفرض:
gl): حالت
نمایش
* gl: OpenGL
* pbo: OpenGL همراه با PBO
* blit: انتقال
دوبعدی
سختافزاری
(2D hardware blit)
* soft: انتقال
نرمافزاری
(software blit)
start (dbl،
پیشفرض: 0.0،
قابل
بهروزرسانی):
تنظیم آفست
شروع پخش.
مقدار منفی
به معنای
درصدی از
مدتزمان
رسانه است
که در آن -1
برابر با کل
مدتزمان
است
dur (lfrac، پیشفرض:
0): فقط
مدتزمان
مشخصشده
را پخش
میکند
speed (dbl، پیشفرض:
1.0، قابل
بهروزرسانی):
تنظیم سرعت
پخش هنگامی
که vsync روشن
است. اگر speed
منفی باشد و
start برابر با 0
باشد، start روی -1
تنظیم
میشود
hold (dbl، پیشفرض:
1.0): تعداد
ثانیهها
برای
نگهداشتن
تصویر برای
جریانهای
تکفریم
(مقدار
منفی،
نگهداشتن
روی آخرین
فریم را
برای
جریانهای
تکفریم یا
چندفریم
اجباری
میکند)
linear (bool، پیشفرض:
false): استفاده
از فیلتر
خطی به جای
نزدیکترین
پیکسل برای
حالت GL
back (uint، پیشفرض:
0x808080): رنگ
پسزمینه
برای
تصاویر
شفاف
wsize (v2di، پیشفرض:
-1x-1): اندازه
اولیه
پیشفرض
پنجره
- مقدار 0x0
اندازه
پنجره فریم
نخست را حفظ
میکند
- مقادیر
منفی
نشاندهنده
اندازه
رسانه
ویدیویی
هستند
wpos (v2di،
پیشفرض: -1x-1):
موقعیت
پیشفرض (0,0
بالا-چپ)
vdelay (frac، پیشفرض:
0، قابل
بهروزرسانی):
تنظیم
تأخیر به
ثانیه،
مقدار مثبت
پس از ساعت
صوتی (audio clock)
نمایش داده
میشود
hide (bool، پیشفرض:
false): مخفی کردن
پنجره
خروجی
fullscreen (bool،
پیشفرض: false،
قابل
بهروزرسانی):
استفاده از
حالت
تمامصفحه
buffer (uint، پیشفرض:
100): تنظیم
بافر
بازپخش بر
حسب
میلیثانیه
mbuffer (uint،
پیشفرض: 0):
تنظیم
حداکثر
اشغال بافر
بر حسب
میلیثانیه.
اگر کمتر از
buffer باشد، از
مقدار buffer
استفاده
میشود
rbuffer (uint،
پیشفرض: 0،
قابل
بهروزرسانی):
محرک
بافرسازی
مجدد بر حسب
میلیثانیه.
اگر 0 یا
بیشتر از buffer
باشد،
بافرسازی
مجدد
غیرفعال
میشود
dumpframes (uintl): فهرست
مرتب
فریمها
برای
تخلیه، که 1
فریم اول
است. مقدار
ویژه 0 به
معنای
تخلیه همه
فریمها
است
out (str، پیشفرض:
dump): ریشه نام
فایلهای
فریم
تخلیهشده.
اگر پسوندی
ارائه
نشود،
فریمها به
صورت $OUT_%d.PFMT
صادر
میشوند
async (bool، پیشفرض:
true):
همگامسازی
ویدیو با
خروجی صوتی
(در صورت
وجود)
owsize (v2di): اندازه
پنجره
خروجی
(فقطخواندنی)
buffer_done (bool): نشانگر
اتمام بافر
(فقطخواندنی)
rebuffer (luint): زمان
سیستم بر
حسب
میکروثانیه
(us) که در آن
آخرین
بافرسازی
مجدد آغاز
شد، 0 در صورت
عدم
بافرسازی
مجدد
(فقطخواندنی)
vjs (bool، پیشفرض:
true): استفاده
از اسکریپت JS
پیشفرض
برای کنترل
vout
media_offset (dbl،
پیشفرض: 0):
آفست رسانه
(برای
دریافت
زمان
رسانه، این
مقدار را از
CTS کم کنید -
فقطخواندنی)
wid (uint، پیشفرض:
0): شناسه
پنجره
(فقطخواندنی)
vflip (enum، پیشفرض:
no، قابل
بهروزرسانی):
وارونه
کردن تصویر
ویدیو (فقط
در GL)
* no: بدون
وارونگی
* v: وارونگی
عمودی
* h: وارونگی
افقی
* vh: افقی و
عمودی
* hv: همانند vh
vrot (enum،
پیشفرض: 0،
قابل
بهروزرسانی):
چرخش ویدیو
با زاویه
دادهشده
* 0: بدون چرخش
* 90: چرخش 90 درجه
پادساعتگرد
* 180: چرخش 180 درجه
* 270: چرخش 90 درجه
ساعتگرد
توضیحات: برشدهنده ویدیو
این فیلتر برای برش دادن دادههای خام ویدیو استفاده میشود.
گزینهها (تخصصی) (OPTIONS)
wnd (str): اندازه
خروجی جهت
برش،
مشخصشده
به صورت TxLxWxH.
اگر % پس از
یک عدد درج
شود، مقدار
بر حسب درصد
پهنای منبع
(برای L و W) یا
ارتفاع آن
(برای T و H)
محاسبه
میشود. یک
آفست مطلق
(+x، -x)
میتواند
پس از درصد
اضافه شود
copy (bool، پیشفرض:
false): کپی کردن
پیکسلهای
منبع.
بهطور
پیشفرض در
صورت امکان
(قرارگیری
پنجره درون
فریم)،
فیلتر با
تنظیم
آفستها و
strideهای منبع،
تلاش
میکند
فریمهای
برشخورده
را فوروارد
کند
round (enum، پیشفرض:
up): تنظیم
ابعاد به
گونهای که
مضربی از ۲
باشد
* up: گرد کردن
رو به بالا
* down: گرد کردن
رو به پایین
* allup: گرد کردن
رو به بالا
برای
فرمتهایی
که نیازی به
آن ندارند
(RGB، YUV444)
* alldown: گرد کردن
رو به پایین
برای
فرمتهایی
که نیازی به
آن ندارند
(RGB، YUV444)
vflip
توضیحات: برگرداننده ویدیو
این فیلتر فریمهای ویدیویی فشردهنشده را به صورت عمودی، افقی، در هر دو جهت برمیگرداند یا بدون تغییر عبور میدهد
گزینهها (تخصصی) (OPTIONS)
mode (enum،
پیشفرض: vert،
قابل
بهروزرسانی):
حالت
برگرداندن
* off: بدون
برگرداندن
(عبور
مستقیم / passthrough)
* vert:
برگرداندن
عمودی
* horiz:
برگرداندن
افقی
* both:
برگرداندن
افقی و
عمودی
rfrawvid
توضیحات: فریمبندی مجدد ویدیوی خام (RAW)
این فیلتر فایلها/دادههای خام YUV و RGB را تجزیه کرده و PID و فریمهای متناظر ویدیوی خام را در خروجی تولید میکند.
این فیلتر همچنین فرمت YUV4MPEG را تجزیه میکند.
گزینهها (تخصصی) (OPTIONS)
size (v2di،
پیشفرض: 0x0):
تفکیکپذیری
(رزولوشن)
ویدیوی
منبع
spfmt (pfmt، پیشفرض:
none، Enum:
none|yuv420|yvu420|yuv420_10|yuv422|yuv422_10|yuv444|yuv444_10|uyvy|vyuy|yuyv|yvyu|uyvl|vyul|yuyl|yvyl|nv12|nv21|nv1l|nv2l|yuva|yuvd|yuv444a|yuv444p|v308|yuv444ap|v408|v410|v210|grey|algr|gral|rgb8|rgb4|rgb5|rgb6|rgba|argb|bgra|abgr|rgb|bgr|xrgb|rgbx|xbgr|bgrx|rgbd|rgbds|uncv):
فرمت پیکسل
منبع. در
صورت تعیین
نشدن، از
پسوند فایل
استخراج
میشود
fps (frac،
پیشفرض: 25/1):
تعداد
فریمها در
هر ثانیه
copy (bool، پیشفرض:
false): کپی
بایتهای
منبع در
فریم خروجی.
در صورت
تنظیم
نشدن،
بایتهای
منبع تنها
ارجاع داده
میشوند
rfpcm
توضیحات: فریمبندی مجدد PCM
این فیلتر فایلها/دادههای خام PCM یا فایلهای WAVE را تجزیه کرده و PID و فریمهای صوتی خام متناظر را تولید میکند.
گزینهها (تخصصی) (OPTIONS)
sr (uint،
پیشفرض: 44100):
نرخ
نمونهبرداری
(sample rate)
safmt (afmt، پیشفرض:
none، Enum:
none|u8|s16|s16b|s24|s24b|s32|s32b|flt|fltb|dbl|dblb|u8p|s16p|s24p|s32p|fltp|dblp):
فرمت صوتی
ch (uint،
پیشفرض: 2):
تعداد
کانالها
framelen (uint،
پیشفرض: 1024):
تعداد
نمونهها
برای
قرارگیری
در یک فریم
صوتی. برای
فرمتهای
صفحهای (planar)،
اندازه
صفحه (plane) بر
حسب نمونه
مشخص
میشود
jpgenc
توضیحات: رمزگذار JPG
این فیلتر یک PID ویدیویی فشردهنشده منفرد را با استفاده از libjpeg به JPEG رمزگذاری میکند.
dctmode (enum, default: fast): نوع DCT
مورد
استفاده
* slow: تبدیل DCT عدد
صحیح دقیق
اما کُند
* fast: تبدیل DCT عدد
صحیح با دقت
کمتر اما
سریعتر
* float: تبدیل DCT
ممیز
شناور
quality (uint, default: 100, minmax: 0-100, updatable): کیفیت فشردهسازی
pngenc
توضیحات: رمزگذار PNG
این فیلتر یک تک PID ویدیویی فشردهنشده را با استفاده از libpng به PNG رمزگذاری میکند.
بدون گزینه
rewind
توضیحات: بازگرداننده صوت/ویدیو
این فیلتر
فریمهای
صوتی و
ویدیویی را
در سرعت پخش
منفی معکوس
میکند.
اگر سرعت
مثبت باشد،
فیلتر در
حالت عبور
مستقیم (passthrough)
عمل میکند.
در غیر این
صورت، GOPهای
رمزگشاییشده
را برای
ویدیو
معکوس
میکند، یا
نمونهها
را در فریم
رمزگشاییشده
برای صوت
معکوس
میسازد (که
برای اکثر
کدکها
چندان
مناسب
نیست).
گزینهها (پیشرفته) (Options (expert)):
rbuffer (uint, default: 100): اندازه بافر بازگردانی ویدیو بر حسب فریم. اگر تعداد فریمها بیشتر از این مقدار باشد، تخلیه (flush) انجام میشود
flist
توضیحات: الحاقکننده منابع
از این فیلتر میتوان برای پخش فایلهای فهرست پخش یا فهرستی از منابع استفاده کرد.
این فیلتر
هر منبع
پشتیبانیشده
توسط GPAC را
بارگذاری
میکند:
فایلهای
راه دور یا
محلی، یا
نشستهای
جاریسازی
(TS، RTP، DASH یا
غیره).
فیلتر
ورودیها
را
دیمالتیپلکس
کرده و
برچسبهای
زمانی
ورودی را در
یک خط زمانی
پیوسته
بازحساب
میکند.
در هر منبع
جدید،
فیلتر تلاش
میکند PIDهای
ورودی را به
PIDهای خروجی
از قبل
اعلانشده
از همان نوع
(در صورت
وجود)
مجدداً
نگاشت کند،
در غیر این
صورت PIDهای
خروجی
جدیدی
اعلان
میکند. اگر
هیچ PID ورودی
با نوع
خروجی
مطابقت
نداشته
باشد، هیچ
بستهای
برای آن PID
ارسال
نمیشود.
حالت فهرست منبع (Source list mode)
حالت
فهرست منبع
با استفاده
از flist:srcs=f1[,f2] فعال
میشود، که
در آن f1
میتواند
یک فایل یا
یک
دایرکتوری
برای
پیمایش
باشد.
نحو شمارش
دایرکتوری
به این صورت
است:
* dir، dir/ یا dir/*: همه
چیز را در
دایرکتوری dir
برمیشمارد
* foo/*.png: همه
فایلهای
با پسوند png
در
دایرکتوری foo
را
برمیشمارد
* foo/*.png;*.jpg: همه
فایلهای
با پسوند png
یا jpg در
دایرکتوری foo
را
برمیشمارد
فهرست
فایل حاصل
را میتوان
با استفاده
از .I fsort مرتب
کرد.
اگر حالت
مرتبسازی
datex باشد و
فایلهای
منبع،
تصویر یا
فایلهای
تکفریم
باشند،
موارد زیر
اعمال
میشود:
- گزینههای .I
floop ، .I revert و .I fdur
نادیده
گرفته
میشوند
- فایلها بر
اساس زمان
تغییر مرتب
میشوند
- به اولین
فریم برچسب
زمانی 0
اختصاص
داده
میشود
- به هر فریم
(حاصل از هر
فایل) مدت
زمانی
برابر با
اختلاف
زمان تغییر
بین آن فایل
و فایل بعدی
اختصاص
مییابد
- به آخرین
فریم همان
مدت زمان
فریم قبلی
اختصاص
مییابد
هنگام
مرتبسازی
بر اساس نام:
- نامهای
فایل
کوتاهتر
پیش از
نامهای
فایل
طولانیتر
درج
میشوند
- در صورت
یکسان بودن
طول نام
فایل،
مرتبسازی
الفبایی
اعمال
میشود
حالت فهرست پخش (Playlist mode)
حالت
فهرست پخش
هنگام باز
کردن یک
فایل فهرست
پخش فعال
میشود
(قالب m3u،
کدگذاری utf-8،
بدون BOM،
پسوندهای
پیشفرض m3u، txt
یا pl).
در این
حالت،
دستورالعملها
را میتوان
در یک خط
توضیح،
یعنی خطی که
با # قبل از
خط حاوی نام
فایل شروع
میشود،
مشخص کرد.
خطوطی که با ##
شروع
میشوند
نادیده
گرفته
میشوند.
فایل
فهرست پخش
هر بار که
منبع بعدی
باید
دوباره
بارگذاری
شود
تازهسازی
میشود تا
امکان درج
پویای
منابع در
فهرست پخش
فراهم باشد.
اگر آخرین URL
پخششده در
فهرست پخش
یافت نشود،
اولین URL در
فایل فهرست
پخش
بارگذاری
خواهد شد.
هنگامی که
از .I ka برای
استمرار در
تازهسازی
منظم فهرست
پخش
استفاده
میشود،
فهرست پخش
باید با یک
خط جدید
پایان یابد.
تازهسازی
فهرست پخش
متوقف
خواهد شد:
- اگر فهرست
پخش ورودی
خطی داشته
باشد که به
نویسه LF (0 ختم
نمیشود،
تا از
مشکلات
ناهمگامی
هنگام
خواندن
فهرست پخش
اجتناب شود.
- اگر فهرست
پخش ورودی
به مدت
مقدار
گزینه .I timeout
(بهطور
پیشفرض
بینهایت)
تغییری
نکرده
باشد.
از خط ویژه ##GPACPL میتوان برای شناسایی فایل به عنوان یک فهرست پخش GPAC استفاده کرد، که در صورت نبود محتوای اولیه در حالت keep-alive سودمند است.
نکته: هنگامی که فهرست پخش منبع یک شیء GFIO است، URLهای درون فهرست پخش به اشیاء GFIO تبدیل نمیشوند.
یک سطر
دستورالعمل
فهرست پخش
میتواند
شامل صفر یا
چند
دستورالعمل
باشد که با
فاصله (space) از
هم جدا
شدهاند.
دستورالعملهای
زیر
پشتیبانی
میشوند:
* repeat=N: محتوا را N
بار تکرار
میکند (در
نتیجه N+1 بار
پخش
میشود)، در
صورت منفی
بودن حلقه
بینهایت
خواهد بود.
* start=T: تلاش
میکند
فایل را از
زمان شروع T
ثانیه پخش
کند (تنها
قالب double). این
قابلیت
ممکن است با
برخی
فایلها/قالبهایی
که از جستجو
(seeking) پشتیبانی
نمیکنند
کار نکند.
* stop=T: پخش منبع
را پس از T
ثانیه
متوقف
میکند
(تنها قالب double).
این قابلیت
روی هر
منبعی کار
میکند
(مستقل از
پشتیبانی
جستجو
پیادهسازی
شده است).
* cat: مشخص
میکند که
مدخل بعدی
باید به جای
باز کردن یک
منبع جدید،
به منبع
قبلی الحاق
(concatenate) شود. در
صورت تمایل
میتوان
بهصورت
اختیاری یک
محدوده
بایت (byte range) را
مشخص کرد،
در غیر این
صورت کل
فایل الحاق
میشود.
نکته:
هنگامی که
منابع،
فایلها یا
قطعههای (segments)
ISOBMFF روی حافظه
محلی یا
اشیاء GF_FileIO
باشند،
الحاق
بهطور
خودکار
تشخیص داده
خواهد شد.
* srange=T: زمانی که cat
تنظیم شده
باشد، نقطه
شروع T
(دهدهی ۶۴
بیتی،
پیشفرض 0) از
محدوده
بایت مدخل
بعدی را
برای الحاق
مشخص
میکند.
* send=T: زمانی که cat
تنظیم شده
باشد، نقطه
پایان T
(دهدهی ۶۴
بیتی،
پیشفرض 0) از
محدوده
بایت مدخل
بعدی را
برای الحاق
مشخص
میکند.
* props=STR:
ویژگیهای
شرح
دادهشده
در STR را به
تمام PIDهای
حاصل از
منابع
فهرستشده
در سطر بعدی
اختصاص
میدهد. STR
طبق gpac -h doc با
استفاده از
مجموعه
پارامترهای
پیشفرض
قالببندی
میشود.
* del: مشخص
میکند که
فایل(های)
منبع باید
پس از
پردازش حذف
شوند؛ در
صورتی که .I fdel
تنظیم شده
باشد،
بهطور
پیشفرض true
است.
* out=V: زمان شروع
برش/پیوند (splicing)
را مشخص
میکند (به
زیر مراجعه
کنید).
* in=V: زمان
پایان
برش/پیوند (splicing)
را مشخص
میکند (به
زیر مراجعه
کنید).
* nosync: از تنظیم
برچسبهای
زمانی (timestamp)
هنگام
پیوستن
منابع
جلوگیری
میکند (در
صورت تنظیم
بودن cat،
بهصورت
ضمنی اعمال
میشود).
* keep: دوره
برش/پیوند
دادهشده (spliced
period) را در
خروجی نگه
میدارد (به
زیر مراجعه
کنید).
* mark: تنها
نشانگر را
برای دوره
برش/پیوند
تزریق
میکند و
هیچ محتوای
جایگزینی
را بارگیری
نمیکند (به
زیر مراجعه
کنید).
* sprops=STR: در طول یک
برش/پیوند،
ویژگیهای
شرح
دادهشده
در STR را به
تمام PIDهای
محتوای
اصلی
اختصاص
میدهد (به
زیر مراجعه
کنید). STR طبق gpac -h doc
با استفاده
از مجموعه
پارامترهای
پیشفرض
قالببندی
میشود.
* chap=NAME: نام فصل (chapter)
را در
ابتدای URL
بعدی
اختصاص
میدهد
(فیلتر
همواره
نامهای
فصل منبع را
حذف میکند).
* base_url=PATH: نشانی وب
پایه (base URL) را
برای تمام
مدخلهای
بعدی در
فهرست پخش
بازنویسی (override)
میکند.
برای
بازنشانی،
از یک رشته
خالی
استفاده
کنید.
هنگامی که
فهرست پخش
بهصورت
بستهها (pipes،
sockets و...) منتقل
میشود،
دستورالعملهای
زیر نیز
اعمال
میشوند:
* replace: کل محتوای
فهرست پخش
را با بار
مفید (payload) بسته
جدید
جایگزین
میکند، در
غیر این
صورت الحاق
میکند (بار
مفید باید
با #replace آغاز
شود).
* purge: با حذف
تمام
محتوای
غیرفعال
پیش از
دستورالعمل
قبلی #purge، از
رشد مداوم
فهرست پخش
جلوگیری
میکند؛
این
دستورالعمل
تنها در هر
بسته جدید
ارزیابی
میشود (بار
مفید باید
با #purge آغاز
شود).
گزینههای
عمومی زیر
(که بر فیلتر
اعمال
میشوند،
نه منابع)
نیز
میتوانند
در فهرست
پخش تنظیم
شوند:
* ka=N: گزینه .I ka را
به نوسازی
در N
میلیثانیه
مجبور
میکند.
* floop=N: گزینه .I floop را
از داخل
فهرست پخش
تنظیم
میکند.
* raw: گزینه .I raw را
از داخل
فهرست پخش
تنظیم
میکند.
رفتار
پیشفرض
هنگام
پیوستن
منابع،
همتراز
کردن مجدد
مبدأ خط
زمانی (timeline)
منبع جدید
با حداکثر
زمان در
تمامی PIDهای
منابع قبلی
است.
این امر در
صورتی که
مدتزمان
PIDهای منبع
قبلی برابر
نباشد،
ممکن است
شکافهایی
در خط زمانی
ایجاد کند
(امری که در
اکثر
کدکهای
صوتی بسیار
رایج است).
استفاده از
دستورالعمل
nosync این
همترازی
مجدد را
غیرفعال
کرده و یک خط
زمانی
پیوسته
فراهم
میکند،
اما بسته به
کدگذاری
منبع ممکن
است خطاهای
همگامسازی
ایجاد کند
(با احتیاط
استفاده
شود).
نحو منبع (Source syntax)
سطرهای
منبع از نحو
معمول منبع
پیروی
میکنند، gpac -h
را ببینید.
ویژگیهای
اضافی PID را
میتوان به
ازای هر
منبع اضافه
کرد (به gpac -h doc
مراجعه
کنید)، اما
تنها برای
منبع فعلی
معتبر
هستند و در
منبع بعدی
بازنشانی
میشوند.
منابع
بارگیریشده،
آرگومانها
را از فیلتر
فهرست پخش
والد به ارث
نمیبرند.
URL
ارائهشده
میتواند
یک URL منفرد
یا فهرستی
از URLها باشد
که با " && " از
هم جدا
شدهاند تا
چند منبع را
برای مدخل
فعال
بارگیری
کنند.
هشدار:
نباید هیچ
نویسه
فاصله/تب
دیگری بین
منابع وجود
داشته باشد.
مثال
audio.mp4 && video.mp4
منبع با زنجیرههای فیلتر (Source with filter chains)
هر URL
میتواند
با
زنجیرهای
از یک یا چند
فیلتر
دنبال شود،
با استفاده
از
دستورالعمل
پیوند @
همانطور
که در gpac
استفاده
میشود (به gpac -h
doc مراجعه
کنید).
از یک نمایه
پیوند منفی
(به عنوان
مثال @-1)
میتوان
برای
راهاندازی
یک زنجیره
فیلتر جدید
با شروع از
آخرین منبع
مشخصشده
در سطر
استفاده
کرد.
هشدار: قبل و
بعد از هر
دستورالعمل
پیوند باید
تنها یک
نویسه با
مقدار
فاصله (' ')
وجود داشته
باشد.
مثال
src.mp4 @ reframer:rt=on
این دستور
یک reframer با
تنظیم
بلادرنگ
بین منبع و
فیلتر flist
تزریق
خواهد کرد.
مثال
src.mp4 @ reframer:saps=1 @1 reframer:saps=0,2,3
src.mp4 @ reframer:saps=1 @-1 reframer:saps=0,2,3
این دستور یک reframer که فقط فریمهای SAP1 را فیلتر میکند و یک reframer که فقط فریمهای غیر SAP1 را فیلتر میکند بین منبع و فیلتر flist تزریق خواهد کرد.
گزینههای
پیوند را
میتوان
مشخص کرد (به
gpac -h doc مراجعه
کنید).
مثال
src.mp4 @#video reframer:rt=on
این دستور یک reframer با تنظیم بلادرنگ بین PID ویدیویی منبع و فیلتر flist تزریق خواهد کرد.
هنگام
استفاده از
زنجیرههای
فیلتر،
فیلتر flist
تنها PIDها را
از آخرین
فیلتر
اعلانشده
در زنجیره
میپذیرد.
به منظور
پذیرش سایر
PIDها از
منبع، باید
یک
دستورالعمل
پیوند
نهایی بدون
فیلتر بعدی
مشخص کنید.
مثال
src.mp4 @#video reframer:rt=on @-1#audio
این دستور یک reframer با تنظیم بلادرنگ بین PID ویدیویی منبع و فیلتر flist تزریق خواهد کرد و همچنین به PIDهای صوتی منبع اجازه میدهد تا به فیلتر flist متصل شوند.
دستورالعمل
پیوند خالی
را میتوان
روی آخرین
فیلتر
اعلانشده
نیز
استفاده
کرد.
مثال
src.mp4 @ reframer:rt=on @#audio
این دستور
یک reframer با
تنظیم
بلادرنگ
بین منبع و
فیلتر flist
تزریق
خواهد کرد و
تنها PIDهای
صوتی را به
فیلتر flist
متصل
میکند.
از فهرست
پخش
میتوان
برای پیوند
زدن محتوا
با محتوای
دیگری که پس
از یک رسانه
در فهرست
پخش
میآید،
استفاده
کرد.
یک مورد
منبع تنها و
تنها در
صورتی در یک
عملیات
پیوند به
عنوان
رسانه اصلی
شناخته
میشود که
دستورالعمل
out برای آن
تعیین شده
باشد (که
میتواند
خالی باشد).
میتوان از
دستورالعملها
برای رسانه
اصلی
استفاده
کرد، به جز
دستورالعملهای
الحاق (concatenation).
عملیات پیوند فریمهای رسانه را دستکاری نمیکند و عملیات در دامنه فشردهنشده نظیر محو تدریجی متقابل (cross-fade) یا میکس (mixing) را انجام نمیدهد.
دستورالعمل
out (و به همین
ترتیب in)
زمان شروع (و
به همین
ترتیب
پایان)
پیوند
رسانه را
مشخص
میکند. این
مقدار
میتواند
به
صورتهای
زیر
قالببندی
شود:
* empty: زمان هنوز
اختصاص
نیافته است
* `now`: زمان به
نقطه SAP بعدی
در رسانه
نگاشت
میشود
* integer، float یا fraction:
تنظیم زمان
بر حسب
ثانیه
* `+VAL`: فقط برای in
استفاده
میشود،
نقطه پایان
را به صورت
یک دلتا بر
حسب ثانیه
از نقطه
شروع مشخص
میکند (VAL
میتواند
integer، float یا fraction
باشد)
* DATE: تنظیم
زمان پیوند
بر اساس DATE
ساعت واقعی
(wall clock)،
قالببندیشده
به صورت یک XSD
dateTime
زمانهای
پیوند (به جز
ساعت
دیواری) بر
اساس
زمانبندی
منبع (رسانه
اصلی) بیان
میشوند،
نه محور
زمان
بازسازیشده
خروجی.
هنگامی که
یک پیوند
آغاز
میشود
(زمان out فرا
میرسد)،
موارد منبع
پس از رسانه
اصلی تا
پایان
پیوند یا
پایان
رسانه اصلی
پخش
میشوند.
منابع مورد
استفاده در
طول دوره
پیوند
میتوانند
از
دستورالعملهایی
مانند start، dur یا
repeat استفاده
کنند.
هنگامی که یک پیوند انجام شد (زمان in فرا رسید)، زمان پیوند out رسانه اصلی به مقدار تعریفنشده (undefined) بازنشانی میشود.
هنگامی که
رسانه اصلی
زمانهای
پیوند out یا in
تعریفنشده
دارد،
فهرست پخش
در هر بسته
جدید رسانه
اصلی
بازخوانی
میشود تا
مقادیر
حلشده را
بررسی کند.
- مقدار out
تنها زمانی
میتواند
تغییر یابد
که هیچ
پیوندی
فعال
نباشد، در
غیر این
صورت
نادیده
گرفته
میشود. در
صورت
تغییر،
منبع بعدی
برای پخش را
به منبع پس
از رسانه
اصلی
تغییریافته
بازنشانی
میکند.
- مقدار in تنها
زمانی
میتواند
تغییر یابد
که یک پیوند
با زمان
پایان
تعریفنشده
فعال باشد،
در غیر این
صورت
نادیده
گرفته
میشود.
هنگامی که
رسانه اصلی
تمام
میشود:
- اگر
دستورالعمل
repeat تنظیم شده
باشد،
رسانه اصلی
تکرار
میشود، in و out
به مقادیر
اولیه خود
برمیگردند
و محتوای
پیوند بعدی
همان
محتوای پس
از محتوای
اصلی خواهد
بود،
- در غیر این
صورت، منبع
بعدی که در
صف قرار
میگیرد،
منبع پس از
آخرین منبع
پخششده در
طول آخرین
دوره پیوند
خواهد بود.
تعریف چندین رسانه اصلی در فهرست پخش مجاز است، اما یک رسانه اصلی مجاز نیست به عنوان رسانه برای یک دوره پیوند استفاده شود.
فیلتر
برای DASH
چنددورهای
(multi-period)، به
دنبال
ویژگی Period روی
PIDهای خروجی
رسانه اصلی
میگردد.
در صورت
یافت شدن، N_
به شناسه
دوره (period ID)
اضافه
میشود، به
طوری که N از 1
شروع شده و
با هر بار
ازسرگیری
رسانه اصلی
افزایش
مییابد.
اگر هیچ
ویژگی Period روی
رسانه اصلی
یا رسانه
پیوندزدهشده
تنظیم نشده
باشد،
تعویض دوره
(period switch) همچنان
میتواند
با استفاده
از گزینه DASH
به صورت .I -pswitch
اجبار شود.
اگر
دستورالعمل
mark برای یک
رسانه اصلی
تنظیم شده
باشد، هیچ
جایگزینی
محتوایی
انجام
نمیشود و
مرزهای
پیوند در
رسانه اصلی
سیگنالدهی
خواهند شد.
اگر
دستورالعمل
keep برای یک
رسانه اصلی
تنظیم شده
باشد،
رسانه اصلی
همراه با
محتوای
جایگزین
ارسال
میشود.
هنگامی که
دستورالعملهای
mark یا keep تنظیم
شده باشند،
تغییر
ویژگیهای PID
رسانه اصلی
با استفاده
از
دستورالعمل
sprops
امکانپذیر
است.
مثال:
#out=2 in=4 mark sprops=#xlink=http://foo.bar
src:#Period=main
این کار ویژگی xlink را روی PIDهای خروجی در ناحیه پیوند (متناظر با دوره main_2) تزریق میکند، اما در بقیه بخشهای رسانه اصلی اعمال نمیشود.
دستورالعملهای mark، keep و sprops در پایان دوره پیوند بازنشانی میشوند.
گزینهها (OPTIONS) (تخصصی):
floop (sint, default: 0): تکرار
حلقهای
فهرست
پخش/فهرست
فایلها، 0
برای یک
بار، n برای 1+n
بار، -1 برای
نامحدود
srcs (strl): فهرست
فایلها
برای پخش
fdur (frac, default: 1/25):
مدتزمان
فریم برای
فایلهای
منبع با یک
تکفریم
(کسر 0/NaN به
معنی
استفاده
مجدد از
زمانبندی
منبع است که
معمولاً
تنظیم نشده
است!)
revert (bool, default: false): معکوس
کردن فهرست
فایلها (.I srcs،
نه فهرست
پخش)
timescale (uint, default: 0): اجبار
مقیاس
زمانی (timescale)
خروجی روی
همه PIDها (0 از
مقیاس
زمانی
اولین PID
یافتشده
استفاده
میکند)
ka (uint, default: 0): زنده
نگهداشتن
فهرست پخش
(غیرفعال
کردن حلقه)،
در انتظار
برای اضافه
شدن یک
ورودی جدید
یا
دستورالعمل
#end برای
پایان
فهرست پخش.
این مقدار
نرخ نوسازی
را بر حسب
میلیثانیه
مشخص
میکند
timeout (luint, default: -1): مهلت
زمانی بر
حسب
میلیثانیه
که پس از آن
فهرست پخش
مرده در نظر
گرفته
میشود (-1 به
معنی
نامحدود
است)
fsort (enum, default: no):
مرتبسازی
فهرست
فایلها
* no: بدون
مرتبسازی،
استفاده از
شمارش
پیشفرض
دایرکتوری
در
سیستمعامل
* name:
مرتبسازی
بر اساس نام
الفبایی
* size:
مرتبسازی
بر اساس
اندازه
صعودی
* date:
مرتبسازی
بر اساس
زمان تغییر
صعودی
* datex:
مرتبسازی
بر اساس
زمان تغییر
صعودی
sigcues (bool, default: false):
تزریق
ویژگی CueStart در
آغاز هر
منبع (جدید
یا تکراری)
برای DASHing
sigperiods (bool, default: false):
درخواست یک
Period جدید DASH در
آغاز هر
منبع؛ مفید
هنگامی که
زمانبندی
رسانه باید
در حلقهها
بازنشانی
شود (TTML و ...)
fdel (bool, default: false): حذف
فایلهای
منبع پس از
پردازش در
حالت فهرست
پخش (فهرست
پخش را حذف
نمیکند)
keepts (bool, default: false): حفظ
برچسبهای
زمانی (timestamps)
اولیه بدون
تغییر (بدون
بازنشانی
به 0)
raw (enum, default: no): اجبار
جریانهای
صوتی/تصویری
(AV) ورودی به
قالب خام (raw)
* no: عدم اجبار
در
رمزگشایی
ورودیها
* av: اجبار در
رمزگشایی
ورودیهای
صوتی و
ویدئویی
* a: اجبار در
رمزگشایی
ورودیهای
صوتی
* v: اجبار در
رمزگشایی
ورودیهای
ویدئویی
flush (bool, default: false): ارسال سیگنال تخلیه (flush) پس از اتمام فهرست پخش پیش از ورود به keepalive
توضیحات: مالتیپلکسر MPEG-2 TS
این فیلتر یک یا چند PID ورودی را در یک مالتیپلکس MPEG-2 Transport Stream تسهیم میکند.
انتخاب PID (PID selection)
مالتیپلکسر
MPEG-2 TS برای
جریانهای
رسانهای، PID
مربوط به M2TS
را با
استفاده از
PID جدول PMT
بهعلاوه
نمایه
جریان
تخصیص
میدهد.
برای مثال،
در
پیکربندی
پیشفرض،
نخستین
برنامه با PMT PID
100 ایجاد
میشود و
نخستین
جریان
دارای PID
برابر با 101
خواهد بود.
جریانها
در صورت
وجود، بر
پایه ویژگی
ServiceID در PID ورودی
در
برنامهها
گروهبندی
میشوند. در
صورت عدم
وجود،
جریان به
برنامهای
با شناسه
سرویس
مشخصشده
توسط گزینه .I
sid خواهد رفت.
- گزینه .I name
توسط ویژگی
ServiceName در PID ورودی
بازنویسی
میشود.
- گزینه .I provider
توسط ویژگی
ServiceProvider در PID
ورودی
بازنویسی
میشود.
- گزینه .I pcr_offset
توسط ویژگی
"tsmux:pcr_offset" در PID
ورودی
بازنویسی
میشود.
- گزینه .I first_pts
توسط ویژگی
"tsmux:force_pts" در PID
ورودی
بازنویسی
میشود.
- گزینه .I temi
توسط ویژگی
"tsmux:temi" در PID
ورودی
بازنویسی
میشود.
اطلاعات زمان و رسانه خارجی (TEMI)
گزینه .I temi
امکان
تعیین
فهرستی از
URLها یا
شناسههای
خط زمانی را
برای درج در
جریانهای
یک برنامه
فراهم
میکند.
میتوان یک
یا چند خط
زمانی TEMI را
به ازای هر PID
مشخص کرد.
نحو دستور،
فهرستی
جداشده با
کاما از یک
یا چند
توصیف TEMI است.
هر توصیف TEMI
به قالب ID_OR_URL یا
#OPT1[#OPT2]#ID_OR_URL
قالببندی
میشود.
گزینهها
عبارتند از:
* S`N`: سرویس هدف
با شناسه N را
مشخص
میکند
* T`N`: مقیاس
زمانی (timescale)
مورد
استفاده را
تنظیم
میکند
(پیشفرض:
مقیاس
زمانی PID)
* D`N`: تاخیر بر
حسب
میلیثانیه
بین دو
توصیفگر
نشانی TEMI url را
تعیین
میکند
(پیشفرض 1000)
* O`N`: افست
(حداکثر ۶۴
بیت) برای
افزودن به
کدهای
زمانی TEMI را
تعیین
میکند
(پیشفرض 0).
اگر مقیاس
زمانی مشخص
نشده باشد،
مقدار افست
بر حسب
میلیثانیه
است، در غیر
این صورت بر
حسب
واحدهای
مقیاس
زمانی
خواهد بود.
* I`N`: مقدار
اولیه
(حداکثر ۶۴
بیت) کدهای
زمانی TEMI را
تعیین
میکند. در
صورت عدم
تنظیم،
مقدار
اولیه با CTS
اولین بسته
مطابقت
خواهد داشت.
اگر مقیاس
زمانی مشخص
نشده باشد،
مقدار بر
حسب
واحدهای
مقیاس
زمانی PID
است، در غیر
این صورت بر
حسب
واحدهای
مقیاس
زمانی
مشخصشده
خواهد بود.
* P`N`:
نشاندهنده
PID هدف در
برنامه است.
مقادیر
ممکن
عبارتند از:
* `V`: درج فقط
برای
جریانهای
ویدیویی.
* `A`: درج فقط
برای
جریانهای
صوتی.
* `T`: درج فقط
برای
جریانهای
متنی.
* N: درج فقط
برای جریان
با نمایه N
(مبتنی بر
صفر) در
برنامه.
* L`C`:
سیگنالدهی
کد زمانی ۶۴
بیتی را
تنظیم
میکند.
مقادیر
ممکن برای C
عبارتند از:
* `A`:
جابهجایی
خودکار بین
۳۲ و ۶۴ بیت
بسته به
مقدار کد
زمانی
(پیشفرض در
صورت عدم
تعیین).
* `Y`: استفاده
فقط از
سیگنالدهی
۶۴ بیتی.
* `N`: استفاده
فقط از
سیگنالدهی
۳۲ بیتی و
بازگشت به
ابتدا (wrap around)
مقدار کد
زمانی.
* N: درج برچسب
زمانی NTP در
توصیفگر
خط زمانی TEMI
* n: درج برچسب
زمانی NTP با
استفاده از
NTP برای
نخستین
بسته و سپس
افزایش بر
اساس برچسب
زمانی
رسانه (برای
غیربیدرنگ)
* ID_OR_URL: اگر عدد
باشد،
نشاندهنده
شناسه TEMI ID
مورد
استفاده
برای خط
زمانی
خارجی است؛
در غیر این
صورت،
نشانی URL
برای درج را
مشخص
میکند
مثال
temi="url"
یک URL+timecode
مربوط به TEMI
را در هر
جریان از هر
برنامه درج
میکند.
مثال
temi="#P0#url,#P1#4"
یک URL+timecode
مربوط به TEMI
را در
نخستین
جریان همه
برنامهها
و یک TEMI خارجی
با شناسه 4 را
در دومین
جریان همه
برنامهها
درج میکند.
مثال
temi="#P0#2,#P0#url,#P1#4"
یک TEMI با
شناسه 2 و یک
URL+timecode مربوط به TEMI
را در
نخستین
جریان همه
برنامهها،
و یک TEMI خارجی
با شناسه 4 را
در دومین
جریان همه
برنامهها
درج میکند.
مثال
temi="#S20#4,#S10#URL"
یک TEMI خارجی
با شناسه 4 را
در هر جریان
برنامه با ServiceID
برابر با 20 و
یک TEMI URL را در هر
جریان
برنامه با ServiceID
برابر با 10
درج میکند.
مثال
temi="#N#D500#PV#T30000#4"
یک TEMI خارجی با شناسه 4، مقیاس زمانی 30000، تزریق NTP و چرخه (carousel) ۵۰۰ میلیثانیهای را در جریان ویدیویی تمام برنامهها درج میکند.
هشدار: ضریبها (k,m,g) در گزینههای TEMI پشتیبانی نمیشوند.
هنگامی که ویژگیهای TEMI ورودی یافت شوند، میتوان آنها را با استفاده از گزینه .I temi_fwd حذف کرد. هنگام بازنویسی، هرگونه اطلاعات NTP موجود به NTP فعلی بازنویسی میشود.
در حالت DASH و
HLS:
- مقدار PCR
همیشه روی 0
مقداردهی
اولیه
میشود، و .I
flush_rap بهطور
خودکار
تنظیم
میگردد.
- مگر اینکه nb_pack
مشخص شده
باشد، از 200
بستهٔ TS به
عنوان
خروجی بسته
در حالت DASH
استفاده
خواهد شد.
- مقدار pes_pack=none
اجباری است
زیرا برخی
از
دیمالتیپلکسرها
با ADTS PES
غیرهمتراز
مشکل
دارند.
فیلتر
مشخصهٔ FileNumber را
در
بستههای
ورودی زیر
نظر
میگیرد تا
فایلهای
جدید، یا در
حالت DASH
قطعههای (segments)
جدید ایجاد
کند.
جریانهای سفارشی (Custom streams)
فیلتر به
دنبال
مشخصهٔ M2TSRA
تنظیمشده
روی جریان
ورودی
خواهد گشت.
این مقدار
میتواند
یک 4CC یا یک
رشته باشد
که برچسب
ثبت MP2G-2 TS را
برای انواع
رسانهٔ
ناشناخته
مشخص
میکند.
مقدار SRT
(نامهای
مستعار: srt، SRT)
یک هدر SRT را
با شماره
فریمی که در
هر بسته
افزایش
مییابد و
زمان شروع 0
تزریق
خواهد کرد.
مثال
gpac -i source.srt:#M2TSRA='SRT ' -o mux.ts
این دستور
محتوای SRT
مبدأ را به
عنوان یک
جریان
دادهٔ PES
تزریق کرده
و تمامی
نشانهگذاریها
را حذف
میکند.
مثال
gpac -i source.srt:stxtmod=sbtt:#M2TSRA='SRT ' -o mux.ts
این دستور محتوای SRT مبدأ را به عنوان یک جریان دادهٔ PES تزریق کرده و نشانهگذاریها را حفظ میکند.
نکات (NOTES)
در حالت مالتیپلکس LATM، پیکربندی رمزگشا در .I repeat_rate دادهشده یا مشخصهٔ CarouselRate PID (در صورت تعریف) درج میشود.
بهطور
پیشفرض
جریانهای
متنی با
استفاده از
طرحوارههای
HLS ID3 تعبیه
میشوند؛
برای
استفاده از
PES اختصاصی
خام، از
مشخصهٔ M2TSRA
استفاده
کنید.
هدر WebVTT و
قالببندی
TX3G حذف شده و
تنها
دادههای
متنی تزریق
میشوند.
گزینهها (تخصصی) (Options (expert))
breq (uint،
پیشفرض: 100):
نیازمندیهای
بافر بر حسب
میلیثانیه
برای PIDهای
ورودی
pmt_id (uint، پیشفرض:
100): تعریف
شناسهٔ
اولین PMT
برای
استفاده در
مالتیپلکس
rate (uint، پیشفرض:
0): نرخ بیت
هدف بر حسب bps
برای
مالتیپلکس.
در صورت عدم
تنظیم، از
نرخ متغیر
استفاده
میشود
pmt_rate (uint،
پیشفرض: 200):
فاصله
زمانی بین PMT
بر حسب
میلیثانیه
pat_rate (uint،
پیشفرض: 200):
فاصله
زمانی بین PAT
بر حسب
میلیثانیه
first_pts (luint،
پیشفرض: 0):
تحمیل
مقدار PTS
اولین
بسته، در
مقیاس 90kHz
pcr_offset (luint،
پیشفرض: -1):
آفست دادن
تمام
برچسبهای
زمانی از PCR
به مقدار V،
در مقیاس 90kHz
(مقدار
پیشفرض بر
اساس رسانه
ورودی
محاسبه
میشود)
mpeg4 (enum، پیشفرض:
none): اجبار در
استفاده از
سیگنالینگ
MPEG-4 (پیکربندی IOD
و SL)
* none:
غیرفعالسازی
4on2
* full: ارسال AUها
به عنوان
بستههای SL
روی section برای OD،
و section/pes برای scene
(رجوع شود به
bifs_pes)
* scene: ارسال
تنها
جریانهای
scene به صورت 4on2،
اما
استفاده از
PES معمولی
بدون SL برای
صدا و
ویدیو
pmt_version (uint،
پیشفرض: 200):
تنظیم
شماره
نسخهٔ PMT
disc (bool، پیشفرض:
false): تنظیم
نشانگر
ناپیوستگی
(discontinuity marker) برای
اولین بسته
از هر جریان
repeat_rate (uint،
پیشفرض: 0):
فاصله
زمانی بر
حسب
میلیثانیه
بین دو
ارسال carousel
برای
سیستمهای
MPEG-4 (در صورت
تعریف،
توسط
مشخصهٔ CarouselRate PID
بازنویسی
میشود)
repeat_img (uint،
پیشفرض: 0):
فاصله
زمانی بر
حسب
میلیثانیه
بین
ارسالهای
مجدد (به
صورت PES) برای
جریانهای
تکتصویر
(اگر 0 باشد،
دادههای
تصویر فقط
یک بار
ارسال
میشوند)
max_pcr (uint،
پیشفرض: 100):
تنظیم
حداکثر
فاصله
زمانی بر
حسب
میلیثانیه
بین ۲ PCR
nb_pack (uint،
پیشفرض: 4):
بستهبندی N
بستهٔ TS در
بستههای
خروجی
pes_pack (enum،
پیشفرض: audio):
تنظیم حالت
بستهبندی AU
در PES
* audio: تنها
چندین AU صوتی
را در یک PES
بستهبندی
میکند
* none: دقیقاً یک AU
به ازای هر PES
ایجاد
میکند
* all: چندین AU را
در هر PES برای
تمامی
جریانها
بستهبندی
میکند
realtime (bool،
پیشفرض: false):
استفاده از
خروجی
بیدرنگ (real-time)
bifs_pes (enum،
پیشفرض: off):
انتخاب
نحوهٔ
بستهبندی
جریانهای
BIFS (روش PES در
مقابل sections)
* on: از BIFS PES
استفاده
میکند
* off: از BIFS sections
استفاده
میکند
* copy: از BIFS PES
استفاده
میکند اما
برچسبهای
زمانی را در
BIFS SL حذف کرده و
تنها
برچسبهای
زمانی PES را
منتقل
میکند
flush_rap (bool،
پیشفرض: false):
تخلیه
اجباری
برنامهٔ
مالتیپلکس
هنگام
یافتن RAP روی
ویدیو، و
تزریق PAT و PMT
قبل از شروع
PES ویدیویی
بعدی
pcr_only (bool،
پیشفرض: false):
فعالسازی
بستههای TS
که فقط حاوی
PCR هستند
pcr_init (lsint،
پیشفرض: -1):
تنظیم
مقدار
اولیهٔ PCR
برای
برنامهها.
مقدار -1 یعنی
یک مقدار
تصادفی
انتخاب
میشود،
سایر
مقادیر
منفی به
عنوان آفست
نسبت به
حداکثر
مقدار PCR عمل
میکنند
sid (uint، پیشفرض:
0): تنظیم
شناسه
سرویس (service ID)
برای
برنامه
name (str): تنظیم نام
سرویس برای
برنامه
provider (str): تنظیم
نام
ارائهدهنده
سرویس برای
برنامه
sdt_rate (uint،
پیشفرض: 0):
فاصله
زمانی بر
حسب
میلیثانیه
بین دو جدول
DVB SDT (اگر 0 باشد،
SDT غیرفعال
است)
temi (str): درج کدهای
زمانی TEMI در adaptation
field
log_freq (uint،
پیشفرض: 500):
تاخیر بین
لاگها
برای
مالتیپلکس
بیدرنگ
latm (bool، پیشفرض:
false): استفاده
از
کپسولهسازی
LATM AAC به جای ADTS
معمولی
subs_sidx (sint،
پیشفرض: -1):
تعداد
زیرقطعهها
به ازای هر sidx
(مقدار منفی
sidx را
غیرفعال
میکند)
keepts (bool، پیشفرض:
false):
دستنخورده
نگه داشتن cts/dts
و تنظیم PCR بر
همان اساس،
برای حفظ
بدون تغییر TS
هنگام dash
کردن
استفاده
میشود
temi_fwd (enum،
پیشفرض: fwd):
مشخصات
ورودی TEMI
هنگام
مالتیپلکس
مجدد
* drop: حذف
توصیفگرهای
ورودی
* fwd:
بازفرستادن
توصیفگرهای
ورودی
* ntp:
بازفرستادن
توصیفگرهای
ورودی پس از
بازنویسی NTP
توضیحات: قطعهبندیکننده DASH و HLS
این فیلتر
قابلیت
قطعهبندی
و تولید
مانیفست را
برای
قالبهای MPEG-DASH
و HLS فراهم
میکند.
این
قطعهبندیکننده
در حال حاضر
از موارد
زیر
پشتیبانی
میکند:
- تولید MPD و m3u8
(احتمالاً
بهصورت
همزمان)
- قالبهای
قطعه ISOBMFF، MPEG-2 TS، MKV
و جریان بیت
خام (raw bitstream)
- بازنویسی
پروفایلها
و سطحها در
مانیفست
برای
کدکها
- اکثر
پروفایلهای
MPEG-DASH
- ارائه
مانیفست
ایستا (static) و
پویا/زنده
(dynamic/live)
- ذخیره و
بارگذاری
مجدد زمینه
(context) برای
پردازش
دستهای
نشستهای
زنده/پویا
این فیلتر
تنظیم
بلادرنگ را
برای هر
قطعه با
استفاده از
sreg انجام
میدهد.
اگر برای
ورودیهای
غیربلادرنگ
به تنظیم
بلادرنگ
برای هر
فریم نیاز
دارید، یک reframer
قبل از آن
اضافه کنید
تا تنظیم
بلادرنگ
انجام شود.
مثال
gpac -i file.mp4 reframer:rt=on -o live.mpd:dmode=dynamic
رشتههای الگو (Template strings)
قطعهبندیکننده
صرفنظر از
حالت DASH (حتی
زمانی که از
الگوها
استفاده
نمیشود)،
از الگوها
برای تعیین
نام
فایلها و
پوشه خروجی
استفاده
میکند.
الگوی
پیشفرض
برای
حالتهای ondemand
و تکفایلی
$File$_dash و برای
فایلهای
قطعه مجزا
$File$_$Number$ است.
مثال
template=Great_$File$_$Width$_$Number$
اگر ورودی
foo.mp4 با وضوح
تصویر 640x360
باشد، این
الگو در DASH به
صورت Great_foo_640_$Number$
اعمال
خواهد شد.
مثال
template=Great_$File$_$Width$
اگر ورودی foo.mp4 با وضوح تصویر 640x360 باشد، برای حالت onDemand به Great_foo_640.mp4 تبدیل خواهد شد.
رشتههای
جایگزین
استاندارد
DASH:
* $Number[%%0Nd]$: با شماره
قطعه
جایگزین
میشود،
احتمالاً
همراه با
پیشوند 0
* $RepresentationID$: با نام representation
جایگزین
میشود
* $Time$: با زمان
شروع قطعه
جایگزین
میشود
* $Bandwidth$: با پهنای
باند representation
جایگزین
میشود.
* $SubNumber[%%0Nd]$: با
شماره قطعه
در توالی
قطعات
جایگزین
میشود،
احتمالاً
همراه با
پیشوند 0
نکته: این
رشتهها در
عناصر
الگوی
مانیفست
جایگزین
نمیشوند.
رشتههای
جایگزین
اضافی (مختص
DASH نبوده و
جایگزین
عمومی GPAC نیز
نیستند،
اما ممکن
است چندین
بار در الگو
ظاهر شوند):
* $Init=NAME$: برای
قطعه
مقداردهی
اولیه (init segment) با
NAME جایگزین
میشود، در
غیر این
صورت
نادیده
گرفته
میشود
* $XInit=NAME$:
جایگزینی
کامل با NAME
برای قطعه
مقداردهی
اولیه، در
غیر این
صورت
نادیده
گرفته
میشود
* $InitExt=EXT$: با EXT برای
پسوندهای
فایل قطعه
مقداردهی
اولیه
جایگزین
میشود، در
غیر این
صورت
نادیده
گرفته
میشود
* $Index=NAME$: با NAME برای
قطعات
فهرست (index segments)
جایگزین
میشود، در
غیر این
صورت
نادیده
گرفته
میشود
* $Path=PATH$: هنگام
ایجاد
قطعات با PATH
جایگزین
میشود، در
غیر این
صورت
نادیده
گرفته
میشود
* $Segment=NAME$: برای
قطعات
رسانه با NAME
جایگزین
میشود،
برای قطعات
مقداردهی
اولیه
نادیده
گرفته
میشود
* $SegExt=EXT$: با EXT برای
پسوند فایل
قطعات
رسانه
جایگزین
میشود،
برای قطعات
مقداردهی
اولیه
نادیده
گرفته
میشود
* $FS$ (FileSuffix): در صورتی
که ورودی یک
چندپخشی
صوتی/تصویری
(AV multiplex) باشد با _trackN
جایگزین
میشود، در
غیر این
صورت خالی
میماند
نکته: این
رشتهها در
عناصر
الگوی
مانیفست
جایگزین
میشوند.
سایر ویژگیها نیز قابل تنظیم هستند، بخش زیر را ببینید.
تخصیص PID و پیکربندی (PID assignment and configuration)
برای
تخصیص PIDها
به periodها و adaptation
setها و
همچنین
پیکربندی
نشست،
قطعهبندیکننده
ویژگیهای
زیر را در هر
PID ورودی
بررسی
میکند:
* `Representation`: شناسه representation
را به PID
ورودی
اختصاص
میدهد. در
صورت عدم
تنظیم،
رفتار
پیشفرض
این است که
هر جزء
رسانه در adaptation
setهای
متفاوتی
قرار گیرد.
تنظیم Representation
امکان
مالتیپپلکسسازی
صریح
منبع(ها) را
فراهم
میآورد
* `Period`: شناسه period را
به PID ورودی
اختصاص
میدهد. اگر
تنظیم
نشود،
رفتار
پیشفرض
قرار گرفتن
تمام
رسانهها
در یک period با
زمان شروع
یکسان است
* `PStart`: زمان شروع
period را تعیین
میکند. در
صورت عدم
تنظیم،
مقدار 0 در
نظر گرفته
میشود و
periodها به
ترتیب
اعلان
شناسه Period
نمایش داده
میشوند. در
صورت منفی
بودن، این
مقدار
ترتیب period را
تعیین
میکند (-1
اول، سپس -2 و ...).
در صورت
مثبت بودن،
زمان شروع
واقعی را
تعیین کرده
و فرآیند DASHing
در پایان period
متوقف
میشود
نکته:
هنگامی که
مقادیر
مثبت و منفی
هر دو وجود
داشته
باشند،
periodهای
ترتیبی
(منفی) بعد از
period دارای
زمانبندی
(مثبت) درج
خواهند شد
* `ASID`: شناسه adaptation set
والد را
مشخص
میکند. اگر
مقداری غیر
از 0 باشد،
فقط منابعی
با شناسه AS
یکسان در یک
adaptation set قرار
میگیرند
نکته: اگر
چند استریم
در منبع
وجود داشته
باشد، فقط
به استریم
اول شناسه AS
اختصاص
داده
میشود
* `xlink`: برای periodهای
راه دور،
تنها برای PID
خالی (null)
بررسی
میشود
* `Role`, `PDesc`, `ASDesc`, `ASCDesc`, `RDesc`:
توصیفکنندههای
مختلف برای
تنظیم برای
period، AS یا representation
* `BUrl`: گزینه [-base] در
قطعهبندیکننده
را با
مجموعهای
از BaseURLها برای
استفاده در
PID (به ازای هر
representation)
بازنویسی
میکند
* `Template`: مقدار template
قطعهبندیکننده
را برای این
PID بازنویسی
میکند
* `DashDur`: مدتزمان
قطعه در
قطعهبندیکننده
را برای این
PID بازنویسی
میکند
* `StartNumber`: شماره
شروع اولین
قطعه را در PID
تنظیم
میکند،
مقدار
پیشفرض 1
است
* `IntraOnly`: نشان
میدهد که PID
ورودی از
رهنمودهای HLS
EXT-X-I-FRAMES-ONLY پیروی
میکند
* `CropOrigin`: مختصات x و y
ویدیو را
برای SRD مشخص
میکند
(اندازه،
همان
اندازه
ویدیو است)
* `SRD`: موقعیت و
اندازه
ویدیو را
برای SRD مشخص
میکند؛ در
صورت تنظیم
بودن CropOrigin
نادیده
گرفته
میشود
* `SRDRef`: عرض و
ارتفاع
سراسری SRD را
مشخص
میکند؛ در
صورت تنظیم
بودن CropOrigin
نادیده
گرفته
میشود
* `HLSPL`: نام فهرست
پخش گونه (variant
playlist)، امکان
استفاده از
الگوها
وجود دارد
* `HLSMExt`: فهرستی از
افزونهها
برای اضافه
شدن به
ورودیهای
فهرست پخش
اصلی،
مقادیر ['foo','bar=val']
به صورت ,foo,bar=val
اضافه
میشوند
* `HLSVExt`: فهرستی از
افزونهها
برای اضافه
شدن به
فهرست پخش
گونه،
مقادیر ['#foo','#bar=val']
به صورت #foo 0#bar=val
اضافه
میشوند
* `Discontinuity`: یک
ناپیوستگی
زمانی در
منبع را
نشان
میدهد که
باعث شروع
یک دوره (period)
جدید
میشود
* ویژگیهای
غیر DASH:
مقادیر Bitrate، SAR،
Language، Width، Height، SampleRate،
NumChannels، Language، ID، DependencyID،
FPS، Interlaced، Codec. این
ویژگیها
برای
راهاندازی
هر representation
استفاده
میشوند و
میتوان
آنها را
روی PIDهای
ورودی با
استفاده از
تنظیمات
عمومی
مشخصههای PID
بازنویسی
کرد (به
راهنمای
سراسری
مراجعه
کنید).
مثال
gpac -i test.mp4:#Bitrate=1M -o test.mpd
این دستور
صرفنظر از
نرخ بیت
واقعی
ورودی، نرخ
بیت 1M را
برای representation
اجباری
میکند.
مثال
gpac -i muxav.mp4 -o test.mpd
این دستور
قطعات
غیرمالتیپپلکس
DASH ایجاد
میکند.
مثال
gpac -i muxav.mp4:#Representation=1 -o test.mpd
این دستور
قطعات
مالتیپپلکس
DASH ایجاد
میکند.
مثال
gpac -i m1.mp4 -i m2.mp4:#Period=Yep -o test.mpd
این دستور
منبع m1.mp4 را در
period اول و m2.mp4 را
در period دوم
قرار
میدهد.
مثال
gpac -i m1.mp4:#BUrl=http://foo/bar -o test.mpd
این دستور
یک baseURL به منبع
m1.mp4 اختصاص
میدهد.
مثال
gpac -i m1.mp4:#ASCDesc=<ElemName
val="attval">text</ElemName> -o test.mpd
این دستور
توصیفکننده
XML مشخصشده
را به adaptation set
اختصاص
میدهد.
نکته: از این
روش
میتوان
برای تزریق
اکثر
توصیفکنندههای
DASH که به طور
بومی توسط
قطعهبندیکننده
پشتیبانی
نمیشوند
استفاده
کرد.
قطعهبندیکننده
با
توصیفکننده
XML مانند یک
رشته رفتار
میکند و
تلاشی برای
اعتبارسنجی
آن انجام
نمیدهد.
توصیفکنندهها،
همانند
برخی از
آرگومانهای
فیلتر
قطعهبندیکننده،
فهرستهایی
از رشتهها
(بهطور
پیشفرض
جداشده با
ویرگول)
هستند،
بنابراین
میتوان
چندین
توصیفکننده
اضافه کرد:
gpac -i m1.mp4:#RDesc=<Elem
attribute="1"/>,<Elem2>text</Elem2> -o test.mpd
این دستور
دو
توصیفکننده
را در representation(های)
m1.mp4 درج
میکند.
مثال
gpac -i video.mp4:#Template=foo$Number$ -i audio.mp4:#Template=bar$Number$ -o
test.mpd
این دستور
الگوهای
متفاوتی را
به منابع
صوتی و
تصویری
اختصاص
میدهد.
مثال
gpac -i null:#xlink=http://foo/bar.xml:#PDur=4 -i m.mp4:#PStart=-1 -o
test.mpd
این دستور
یک MPD ایجاد
میکند که
ابتدا شامل
یک period راه دور
و سپس یک period
استاندارد
است.
مثال
gpac -i null:#xlink=http://foo/bar.xml:#PStart=6 -i m.mp4 -o test.mpd
این دستور
یک MPD با یک period
عادی
میسازد (که
تنها ۶
ثانیه از
محتوا را به
DASH تبدیل
میکند) و
سپس یک period راه
دور قرار
میدهد.
مثال
gpac -i v1:#SRD=0x0x1280x360:#SRDRef=1280x720 -i v2:#SRD=0x360x1280x360 -o
test.mpd
این دستور v2 را با استفاده از اندازه کلی SRD معادل 1280x720، در زیر v1 قرار میدهد.
قطعهبندیکننده زنجیرههای فیلتر مالتیپپلکسسازی را برای هر representation ایجاد کرده و شناسههای PID را مجدداً اختصاص میدهد تا هر جزء رسانهای (تصویر، صدا و...) در یک adaptation set شناسه یکسانی داشته باشد.
برای HLS،
مانیفست
خروجی PID
فهرست پخش
اصلی (master playlist) و
فهرستهای
پخش گونه (variant
playlists) را ارائه
میدهد.
فهرستهای
پخش گونه
پیشفرض
بهصورت $NAME_$N.m3u8
هستند که در
آن $NAME ریشه
نام فایل
خروجی و $N
نمایه
مبتنی بر ۱
برای گونه
موردنظر
است.
هنگامی که
حالت HLS فعال
باشد،
الگوی قطعه (
template ) نسبت به
فایل فهرست
پخش گونه
سنجیده
میشود که
آن هم
میتواند
بر اساس
الگو باشد.
مثال
gpac -i av.mp4:#HLSPL=$Type$/index.m3u8 -o
dash/live.m3u8:dual:template='$Number$'
این دستور
قطعات
ویدیو و
فهرست پخش
را در dash/video/ و
قطعات صدا و
فهرست پخش
را در dash/audio/
قرار
میدهد.
رفتار
پیشفرض
قطعهبند (segmenter)
برآورد
زمان شروع
نظری هر
قطعه بر
اساس
مدتزمان
هدف قطعه
است، و
هنگامی که
بستهای با
SAP نوع 1، 2، 3 یا 4
با زمانی
بزرگتر از
زمان نظری
یافت شود،
قطعهٔ
جدیدی آغاز
میشود.
این رفتار
را میتوان
با استفاده
از .I sbound تغییر
داد تا
بهترین
بستهٔ SAP
پیرامون
مرز نظری
قطعه پیدا
شود:
* حالت `closest`: قطعه
در
نزدیکترین
SAP به مرز
نظری آغاز
خواهد شد
* حالت `in`: قطعه
در مرز نظری
یا پیش از آن
آغاز خواهد
شد
هشدار: این
حالتها
باعث ایجاد
تاخیر در
قطعهبند
میشوند
(معمولاً
بافر کردن
یک GOP) و نباید
برای
حالتهای
با تاخیر کم
(low-latency) استفاده
شوند.
قطعهبند
را همچنین
میتوان
طوری
پیکربندی
کرد که:
- هنگام
قطعهبندی
با استفاده
از .I sap بهطور
کامل SAP را
نادیده
بگیرد.
- هنگام
قطعهبندی
با استفاده
از .I strict_sap
بستههای SAP
را در
جریانهای
غیرویدئویی
نادیده
بگیرد.
هنگامی که
.I seg_sync غیرفعال
است،
قطعهبند
بهطور
پیشفرض به
محض مشخص
شدن
اندازه/آفست
یا نام
قطعه،
قطعهٔ جدید
را در
مانیفست(ها)
اعلام
میکند،
اما ممکن
است قطعه (یا
بخش در LL-HLS)
هنوز
بهطور
کامل
نوشته/ارسال
نشده باشد.
این امر
ممکن است
منجر به
ناهمخوانی
موقت میان
اندازهٔ
قطعه/بخشِ
دریافتی
فعلی در
مقایسه با
اندازهٔ
اعلامشده
در مانیفست
شود.
هنگامی که .I seg_sync
فعال است،
قطعهبند
پیش از
اعلام
قطعهٔ جدید
در
مانیفست(ها)،
منتظر
میماند تا
آخرین بایت
فرگمنت/قطعه
ارسال شود.
با این حال،
این کار
میتواند
تاخیر را در
MPEG-DASH با تاخیر
کم اندکی
افزایش
دهد.
هنگامی که .I sflush روی single تنظیم شده باشد، از قطعهبندی صرفنظر میشود و به ازای هر ورودی یک قطعهٔ منفرد تولید میگردد.
حالت پویا (پخش زنده بلادرنگ) (Dynamic (real-time live) Mode)
ابزار dasher
بهطور
پیشفرض
تنظیم
بلادرنگ را
انجام
نمیدهد.
برای
قطعهبندی
معمولی،
اگر منابع
شما
بلادرنگ
نیستند،
باید تنظیم
قطعه .I sreg را
فعال کنید.
مثال
gpac -i source.mp4 -o live.mpd:segdur=2:profile=live:dmode=dynamic:sreg
برای
قطعهبندی
با تاخیر کم
با fMP4، باید
گزینههای
زیر را مشخص
کنید:
* cdur: تنظیم
مدتزمان
فرگمنت fMP4
* asto: تنظیم
آفست زمان
در دسترس
بودن (availability time offset)
برای DASH. این
مقدار باید
برابر یا
کمی بیشتر
از
مدتزمان
قطعه منهای
cdur باشد
* llhls:
فعالسازی
تاخیر کم
برای HLS
نکته: .I llhls برای امکانپذیر ساختن رسانههای مالتیپکسشده در قطعات، حالت cmaf را اجباری نمیکند، اما tfdt_traf را در muxer اجباری میکند.
اگر منابع
شما
بلادرنگ
نیستند، یک
فیلتر reframer با
تنظیم
بلادرنگ
درج کنید
مثال
gpac -i source.mp4 reframer:rt=on -o
live.mpd:segdur=2:cdur=0.2:asto=1.8:profile=live:dmode=dynamic
این دستور
قطعات DASH دو
ثانیهای
تشکیلشده
از
فرگمنتهای
200
میلیثانیهای
میسازد و
به کلاینت
نشان
میدهد که
درخواستها
میتوانند 1.8
ثانیه پیش
از در دسترس
بودن کامل
قطعه روی
سرور ارسال
شوند.
مثال
gpac -i source.mp4 reframer:rt=on -o
live.m3u8:segdur=2:cdur=0.2:llhls=br:dmode=dynamic
این دستور
قطعات DASH دو
ثانیهای
تشکیلشده
از
فرگمنتهای
200
میلیثانیهای
میسازد و
بخشهای با
تاخیر کم HLS
را با
استفاده از
محدودههای
بایتی (byte ranges) در
قطعهٔ
نهایی
تولید
میکند.
مثال
gpac -i source.mp4 reframer:rt=on -o
live.m3u8:segdur=2:cdur=0.2:llhls=sf:dmode=dynamic
این دستور قطعات DASH دو ثانیهای تشکیلشده از فرگمنتهای 200 میلیثانیهای میسازد و بخشهای با تاخیر کم HLS را با استفاده از فایلهای اختصاصی تولید میکند.
میتوانید
تولید LL-HLS و DASH-LL
را ترکیب
کنید:
gpac -i source.mp4 reframer:rt=on -o
live.mpd:dual:segdur=2:cdur=0.2:asto=1.8:llhls=br:profile=live:dmode=dynamic
برای DASH،
فیلتر از
ساعت محلی
برای نقاط
لنگر UTC در DASH
استفاده
خواهد کرد.
فیلتر
میتواند
ساعت را از
روشهای
دیگر با
استفاده از .I
utcs دریافت و
اعلام کند.
مثال
[opts]:utcs=inband
این دستور
از ساعت
محلی
استفاده
کرده و یک
توصیفگر UTCTiming
حاوی ساعت
محلی را در MPD
درج میکند.
مثال
[opts]::utcs=http://time.akamai.com[::opts]
این دستور
زمان را از
http://time.akamai.com دریافت
کرده، از آن
به عنوان
مرجع UTC برای
تولید قطعه
استفاده
میکند و یک
توصیفگر UTCTiming
حاوی URL سرور
زمان را در MPD
درج
مینماید.
نکته: اگر به
عنوان یک
گزینهٔ
سراسری با
استفاده از
--utcs= تنظیم
نشده باشد،
باید URL را با
استفاده از ::
دوگانه
گریز دهید (escape
کنید) یا از
سایر
جداکنندهها
استفاده
نمایید.
قطعهساز (segmenter) میتواند فهرستی از دستورالعملها، یا نشانهها (Cues) را برای فرایند بخشبندی دریافت کند، که در این حالت فقط از آنها برای استخراج مرزهای قطعات استفاده میشود. نشانههای Cue را میتوان از طریق فایلهای XML تنظیم کرد یا در بستههای ورودی تزریق نمود.
فایلهای
Cue را
میتوان
برای کل
قطعهساز
یا به ازای
هر PID با
استفاده از
ویژگی DashCue
مشخص کرد.
نشانههای Cue
در یک فایل XML
با عنصر
ریشهای به
نام <DASHCues>
ارائه
میشوند که
در حال حاضر
هیچ
مشخصهای
برای آن
تعیین نشده
است. عناصر
فرزند آن یک
یا چند عنصر
<Stream> با
مشخصههای
زیر هستند:
* id: عدد صحیح
برای شناسه
جریان/ترک/PID
* timescale: عدد صحیح
مشخصکننده
واحدهای
برچسبهای
زمانیِ پس
از آن
* mode: در صورت
وجود و اگر
مقدار آن edit
باشد،
برچسبهای
زمانی بر
اساس زمان
نمایش (با
اعمال edit list)
هستند؛ در
غیر این
صورت بر
اساس زمان
رسانه (media time)
خواهند بود
* ts_offset: عدد صحیح
مشخصکننده
مقداری (بر
حسب timescale) برای
کسر شدن از
مقادیر DTS/CTS
فهرستشده
فرزندان
عنصر <Stream> یک
یا چند عنصر
<Cue> با
مشخصههای
زیر هستند:
* sample: عدد صحیح
مشخصکننده
شماره
نمونه/فریم
(sample/frame) که باید
تقسیم در آن
رخ دهد
* dts: عدد صحیح
بزرگ (long integer)
مشخصکننده
برچسب
زمانی
رمزگشایی
نمونهای
که باید
تقسیم در آن
رخ دهد
* cts: عدد صحیح
بزرگ (long integer)
مشخصکننده
برچسب
زمانی
ترکیب /
نمایش
نمونهای
که باید
تقسیم در آن
رخ دهد
هشدار:
نشانههای Cue
باید بر
اساس ترتیب
رمزگشایی
فهرست
شوند.
اگر ویژگی
DashCue یک PID برابر
با inband باشد،
آن PID بر اساس
ویژگی CueStart
بستههای
ورودی
بخشبندی
خواهد شد.
این قابلیت
معمولاً با
فهرستی از
فایلها به
عنوان
ورودی
ترکیب
میشود:
gpac -i list.m3u:sigcues -o res/live.mpd
این کار فیلتر flist را در حالت cue بارگذاری میکند، خطوط زمانی پیوستهای از منابع ایجاد کرده و در هر فایل جدید یک ویژگی CueStart تزریق مینماید.
اگر گزینه .I cues برابر با none باشد، ویژگی DashCue مربوط به PIDهای ورودی نادیده گرفته خواهد شد.
حالت صرفاً تولید مانیفست (Manifest Generation only mode)
قطعهساز
میتواند
با استفاده
از .I sigfrag برای
تولید
مانیفستها
از
ورودیهای
از پیش
قطعهبندیشدهی
ISOBMFF به کار رود.
در این
حالت،
مرزهای
قطعات به هر
بستهای که
یک قطعه را
آغاز
میکند
پیوست شده و
برای هدایت
فرایند
بخشبندی
استفاده
میشوند.
این حالت
میتواند
با منابع
تکترک ISOBMFF،
چه تکفایل
یا چندفایل
استفاده
شود.
برای منبع
تکفایل:
- اگر نمایه .I profile
از نوع onDemand
درخواست
شود، منابع
باید به
عنوان یک
قطعه
رسانهای
خود-مقداردهیکننده
(self-initializing) در DASH به
همراه sidx
مناسب
قالببندی
شده باشند.
- الگوها (templates)
غیرفعال
هستند.
- گزینه .I sseg
برای همه
نمایهها
به جز
نمایههای
onDemand اجباری
است.
برای منبع
چندفایلی:
- ورودی باید
یک لیست پخش
شامل فایل
آغازین و به
دنبال آن
فهرست
مرتبشدهی
قطعات باشد.
- اگر هیچ .I template
مشخص نشده
باشد،
نمایه کامل
یا .I profile اصلی (main)
استفاده
خواهد شد
* در صورت
ارائه [-template]()،
باید صحیح
باشد: فیلتر
تلاشی برای
حدس زدن آن
از روی نام
فایلهای
ورودی
نخواهد کرد
و آن را
اعتبارسنجی
نیز
نمیکند.
حالت صرفاً تولید مانیفست، از تولید هر دو مانیفست MPD و HLS پشتیبانی میکند.
مثال
gpac -i ondemand_src.mp4 -o dash.mpd:sigfrag:profile=onDemand
این دستور
بر اساس
فایل
ورودی، یک
مانیفست DASH
برای نمایه
onDemand تولید
میکند.
مثال
gpac -i ondemand_src.mp4 -o dash.m3u8:sigfrag
این دستور
بر اساس
فایل
ورودی، یک
مانیفست HLS
تولید
میکند.
مثال
gpac -i seglist.txt -o dash.mpd:sigfrag
این دستور
بر اساس
فایلهای
ورودی، یک
مانیفست DASH
در نمایه Main
تولید
میکند.
مثال
gpac -i seglist.txt:Template=$XInit=init$$q1/$Number$ -o
dash.mpd:sigfrag:profile=live
این دستور بر اساس فایلهای ورودی، یک مانیفست DASH در نمایه live تولید میکند. فایل ورودی شامل init.mp4، q1/1.m4s، q1/2.m4s... خواهد بود.
حالت صرفاً تولید Cue (Cue Generation only mode)
قطعهساز
را میتوان
با استفاده
از .I gencues صرفاً
برای تولید
مرزهای
قطعات از
مجموعهای
از
ورودیها،
بدون تولید
مانیفستها
یا
فایلهای
خروجی
استفاده
کرد.
در این
حالت، PIDهای
خروجی
مستقیماً
اعلان
میشوند به
جای اینکه
به
فایلهای
قطعات
رسانه
هدایت شوند.
منطق
بخشبندی
تغییر
نمیکند، و
بستهها با
همان
اطلاعات و
زمانبندی
حالت عادی
فوروارد
میشوند.
PIDهای خروجی با ویژگی DashCue=inband فوروارد میشوند تا هر dasher بعدی همان فرایند بخشبندی را دنبال کند (به بالا مراجعه کنید).
نخستین
بسته در یک
قطعه دارای
موارد زیر
است:
- ویژگی FileNumber (و
در صورت
وجود چند
فایل، FileName) طبق
روال
همیشگی
تنظیم شده
است
- ویژگی CueStart
تنظیم شده
است
- ویژگی DFPStart=0
تنظیم شده
است اگر این
نخستین
بسته در یک
دوره (period)
باشد
این حالت
میتواند
برای
پیشبخشبندی
جریانها
جهت
پردازشهای
بعدی که
باید پیش از
dashing نهایی رخ
دهند،
استفاده
شود.
مثال
gpac -i source.mp4 dasher:gencues cecrypt:cfile=roll_seg.xml -o live.mpd
این دستور
به رمزگذار
امکان
میدهد
مرزهای dash را
شناسایی
کرده و
کلیدها را
در مرزهای
قطعات
تعویض (roll) کند.
مثال
gpac -i s1.mp4 -i s2.mp4:#CryptInfo=clear:#Period=2 -i s3.mp4:#Period=3
dasher:gencues cecrypt:cfile=roll_period.xml -o live.mpd
اگر فایل DRM
از keyRoll=period
استفاده
کند، این
پیکربندی
موارد زیر
را تولید
میکند:
- دوره اول
رمزگذاریشده
با یک کلید
- دوره دوم به
صورت شفاف
(واضح یا
غیررمزنگاریشده
/ clear)
- دوره سوم
رمزگذاریشده
با کلیدی
دیگر
هنگامی که
سیگنالدهی
دوره (period signaling)
صریح
نباشد،
میتوان از .I
kpswitch برای
اجبار به
ایجاد یک
دوره جدید
در زمان
تغییر
اطلاعات
کلید CENC
استفاده
کرد.
هنگامی که
.I tpl_force تنظیم
شده باشد،
رشتهی .I template
برای عناصر
مفقود نه
تحلیل
میشود و نه
تغییر
مییابد.
این ویژگی
معمولاً
برای هدایت
سگمنتها
به یک مقصد
معین
صرفنظر از
پروفایل dash
استفاده
میشود.
مثال
gpac -i SRC -o null:ext=mpd:tpl_force --template=pipe://mypipe
این دستور
مانیفست را
دور ریخته و
mypipe را به
عنوان مقصد
نتیجهی muxer
باز میکند.
هشدار:
گزینههای
مربوط به
مقصد سگمنت
از طریق .I template
قابل تنظیم
نیستند؛
باید از
گزینههای
سراسری
استفاده
شود.
رویدادهای درونباندی و برونباندی (Inband and outband events)
نحو
رویدادهای
inband فهرستی از
سهگانههای
{scheme_id_uri,value,stream_type} است که
با '@' از هم
جدا
شدهاند.
مثال
gpac -i SRC -o
dash.mpd::inband_event=https://aomedia.org/emsg/ID3@https://aomedia.org/emsg/ID3@audio,https://aomedia.org/emsg/ID3@www.nielsen.com:id3:v1@audio
از دونقطهی مضاعف (::) برای بینیازی از escape کردن دونقطهها در مقدار nielsen.com استفاده میشود.
عملیات دستهای (Batch Operations)
سگمنتبندی
را میتوان
در چندین
فراخوانی
با استفاده
از یک
زمینهی (context) DASH
تنظیمشده
با .I state انجام
داد.
بین
فراخوانیها،
PIDها با
بررسی
تطابق
شناسهی PID
بین
فراخوانیها
و یکی از
موارد زیر
مجدداً
تخصیص
مییابند:
- تطابق نام
فایلهای
ورودی بین
فراخوانیها
- یا تطابق representation ID
(و در صورت
مشخص بودن،
period ID) بین
فراخوانیها
اگر یک PID تطبیق داده نشود، به یک period جدید تخصیص خواهد یافت.
رفتار
پیشفرض
فرض میکند
که همان
ورودیها
برای
سگمنتبندی
استفاده
میشوند و
در شروع هر
فایل جدید،
یک خط زمانی
پیوسته را
بازسازی
میکند.
اگر
ورودیها
تغییر کنند
اما یک خط
زمانی
پیوسته
تشکیل
دهند، باید
از [-keep_ts])() برای
صرفنظر
کردن از
بازسازی خط
زمانی
استفاده
شود.
ورودیها
در صورت
تنظیم .I subdur به
اندازهی
مدتزمان
آن، و در غیر
این صورت به
مدتزمان
رسانهی
ورودی
سگمنتبندی
میشوند.
هنگامی که
ورودیها
به پایان
میرسند،
در صورت
تنظیم بودن .I
loop مجدداً
راهاندازی
میشوند،
در غیر این
صورت یک period
جدید ایجاد
میشود.
برای
جلوگیری از
این رفتار،
گزینهی .I sflush
باید بر روی
end یا single تنظیم
شود که نشان
میدهد
منابع
بیشتری
برای همان
representationها در
فراخوانیهای
بعدی اضافه
خواهند شد.
هنگامی که .I sflush
روی off
نباشد،
گزینهی .I loop
نادیده
گرفته
میشود.
مثال
gpac -i SRC -o dash.mpd:segdur=2:state=CTX && gpac -i SRC -o
dash.mpd:segdur=2:state=CTX
این دستور
همهی
سگمنتهای
dash را برای SRC
تولید
میکند
(آخرین
سگمنت
احتمالاً
کوتاهتر
خواهد بود) و
در پایان
ورودی یک period
جدید ایجاد
مینماید.
مثال
gpac -i SRC -o dash.mpd:segdur=2:state=CTX:loop && gpac -i SRC -o
dash.mpd:segdur=2:state=CTX:loop
این دستور
همهی
سگمنتهای
dash را برای SRC
تولید کرده
و SRC را
مجدداً
راهاندازی
میکند تا
آخرین
سگمنت را پر
کند.
مثال
gpac -i SRC -o dash.mpd:segdur=2:state=CTX:sflush=end && gpac -i SRC
-o dash.mpd:segdur=2:state=CTX:sflush=end
این دستور
همهی
سگمنتهای
dash را برای SRC
بدون تکرار
حلقه/بستن period
در پایان
ورودی
تولید
میکند.
برچسبهای
زمانی در
فراخوانی
دوم
بازنویسی
میشوند تا
با برچسب
زمانی
انتهای
فراخوانی
اول پیوسته
باشند.
مثال
gpac -i SRC1 -o dash.mpd:segdur=2:state=CTX:sflush=end:keep_ts && gpac
-i SRC2 -o dash.mpd:segdur=2:state=CTX:sflush=end:keep_ts
این دستور همهی سگمنتهای dash را برای SRC1 بدون تکرار حلقه/بستن period در پایان ورودی و سپس برای SRC2 تولید میکند. برچسبهای زمانی منابع بازنویسی نخواهند شد.
نکته: رفتار پیشفرض گزینهی -dash-ctx در MP4Box این است که .I loop را بر روی true تنظیم کند.
تغییر مسیر خروجی (Output redirecting)
هنگامی که
dasher بهصورت
ضمنی در حین
تفکیک
پیوند
بارگذاری
شود،
خروجیهای
خود را فقط
به مقصد (sink)
هدف پیوند
میدهد
مثال
gpac -i SRC -o URL1:OPTS1 -o URL2:OPTS1
این دستور
یک dasher (با
گزینههای
OPTS1) برای URL1 و یک
dasher (با
گزینههای
OPTS1) برای URL2
ایجاد
میکند.
این امکان
اجازه
میدهد
عملیات dash
روی چندین
خروجی با
قالبها،
مدتزمانهای
dash و غیره
متفاوت
انجام شود.
تغییر
مسیر همهی
خروجیهای
فیلتر به
چندین سینک
(sink) میتواند
مفید باشد،
برای مثال
جهت ارسال
همان
سگمنتها
بهصورت
همزمان از
طریق ROUTE و HTTP.
برای این
کار، فیلتر
باید
بهطور
صریح
بارگذاری
شود و همهی
گزینههای
مربوط به dash و MP4
باید یا
بهصورت
سراسری یا
روی فیلتر dasher
تعیین شوند.
مثال
gpac -i SRC dasher:cmfc:segdur=2 -o URL1 -o URL2
این دستور
یک dasher منفرد
ایجاد
میکند که
خروجیهای
آن
(مانیفستها
و سگمنتها)
به URLهای
مشخصشده
هدایت
خواهند شد.
هنگام
بارگذاری
صریح
فیلتر،
گزینهی .I dual
غیرفعال
خواهد بود
مگر اینکه .I mname
به نام
خروجی
جایگزین
تنظیم شده
باشد.
مالتیپلکسرهای
خروجی که
خروجی
قطعهبندیشده
را مجاز
میدانند
باید موارد
زیر را
رعایت کنند:
- بررسی
ویژگیهای
بسته (packet properties)
* FileNumber: در صورت
تنظیم،
نشاندهنده
شروع یک
قطعه DASH جدید
است
* FileName: در صورت
تنظیم، نام
فایل را
نشان
میدهد. در
صورت عدم
وجود،
خروجی باید
یک فایل
واحد باشد.
این ویژگی
فقط برای
بستههای
دارای
ویژگی FileNumber و
تنها روی یک
PID (معمولاً
اولین) برای
خروجیهای
مالتیپلکسشده
تنظیم
میشود
* IDXName: نام
اختیاری
ایندکس را
مشخص
میکند. در
صورت عدم
وجود،
ایندکس
باید در
همان فایل
قطعه dash باشد.
در حال حاضر
فقط برای MPEG-2 TS
استفاده
میشود
* EODS: این ویژگی
روی
بستههای
فاقد payload و
برچسب
زمانی
تنظیم
میشود تا
پایان یک
قطعه DASH را
اعلام کند.
این ویژگی
تنها هنگام
توقف/ازسرگیری
فرآیند
قطعهبندی
استفاده
میشود تا
قطعات بدون
ارسال EOS
تخلیه (flush)
شوند (رجوع
کنید به .I subdur )
- برای هر
قطعه
تکمیلشده،
یک رویداد
پائیندستی
(downstream event) روی
اولین PID
متصل ارسال
شود که
اندازه
قطعه و
اندازه
ایندکس آن
(در صورت
وجود) را
اعلام کند
- برای
مالتیپلکسرهای
دارای
دادههای
راهاندازی
(init data)، یک
رویداد
پائیندستی
ارسال شود
که اندازه init
و اندازه
ایندکس
سراسری (در
صورت وجود)
را اعلام
کند
- گزینههای
فیلتر زیر
به
مالتیپلکسرها
ارسال
میشوند و
آنها باید
این
گزینهها
را به عنوان
آرگومان
اعلام کنند:
* noinit: خروجی
قطعه init را
برای
مالتیپلکسر
غیرفعال
میکند
(برای
مدیریت
تعویض
بیتاستریم
با یک init
منفرد در DASH
استفاده
میشود)
* frag: نشان
میدهد که
مالتیپلکسر
باید از
قالب
قطعهبندیشده
(fragmented) استفاده
کند (عمدتاً
برای ISOBMFF
استفاده
میشود)
* subs_sidx=0: نشان
میدهد که
یک SIDX باید
تولید شود -
تنها در
صورتی
اضافه
میشود که
از قبل توسط
کاربر مشخص
نشده باشد
* xps_inband=all|no|both: نشان
میدهد که
مجموعههای
پارامتر AVC/HEVC/...
باید
بهصورت
درونباندی
(inband)، خارج از
باند (out of band) یا
هر دو ارسال
شوند
* nofragdef: نشان
میدهد که
مقادیر
پیشفرض
فرگمنت
باید در هر
قطعه تنظیم
شوند نه در
قطعه init
قطعهبند
ویژگیهای
زیر را به
PIDهای خروجی
اضافه
میکند:
* DashMode: حالت VoD (تک
فایل با
ایندکس
سراسری) یا
حالت
معمولی DASH
مورد
استفاده
توسط
قطعهبند
را مشخص
میکند
* DashDur: مدتزمان
هدف قطعه DASH
را مشخص
میکند -
برای مثال
میتوان از
این برای
تخمین
اندازه SIDX
استفاده
کرد
* LLHLS: مشخص
میکند که
از LLHLS
استفاده
میشود؛
مالتیپلکسر
باید
رویدادهای
اندازه
فرگمنت را
به dasher
بازگرداند
و LLHLSFragNum را روی
اولین بسته
از هر
فرگمنت
تنظیم کند
* SegSync: نشان
میدهد که
فرگمنتها/قطعات
باید پیش از
بازگرداندن
رویدادهای
اندازه،
بهطور
کامل تخلیه
(flush) شوند
* InitBase64: نشان
میدهد که
قطعه init
کدگذاریشده
با base64 باید در
رویداد
اندازه
قطعه init قرار
گیرد
گزینهها (OPTIONS) (تخصصی):
segdur (frac،
پیشفرض: 0/0):
مدتزمان
هدف قطعه به
ثانیه.
مقدار کمتر
یا مساوی با 0
بهطور
پیشفرض به
1.0 ثانیه
تغییر
مییابد
tpl (bool، پیشفرض:
true): استفاده
از حالت
قالب (چند
قطعه، URLهای
قالب)
stl (bool، پیشفرض:
false): استفاده
از خط زمانی
قطعه (در
حالت on_demand
نادیده
گرفته
میشود)
dmode (enum، پیشفرض:
static، قابل
بهروزرسانی):
حالت
محتوای dash
* static: محتوای
ایستا
* dynamic: تولید
زنده
* dynlast: آخرین
فراخوانی
برای زنده،
MPD را به
ایستا
تبدیل
میکند
* dynauto: تولید
زنده و
انتقال به
مانیفست
ایستا پس از
پایان
جریان
sseg (bool،
پیشفرض: false):
یک قطعه تکی
استفاده
میشود
sfile (bool، پیشفرض:
false): استفاده
از یک فایل
واحد برای
تمام قطعات
(پیشفرض در
on_demand)
align (bool، پیشفرض:
true):
فعالسازی
همترازی
زمانی
قطعات بین
representationها
sap (bool، پیشفرض:
true):
فعالسازی
تقسیم
قطعات در
مرزهای SAP
mix_codecs (bool،
پیشفرض: false):
فعالسازی
ترکیب
کدکهای
مختلف در یک
مجموعه
انطباق (adaptation set)
ntp (enum، پیشفرض:
rem):
درج/بازنویسی
ساعت NTP در
ابتدای هر
قطعه
* rem: ساعت NTP را از
تمام
بستههای
ورودی حذف
میکند
* yes: ساعت NTP را در
ابتدای هر
قطعه درج
میکند
* keep: ساعت NTP بسته
ورودی را
دستنخورده
باقی
میگذارد
no_sar (bool،
پیشفرض: false):
بررسی نسبت
ابعاد
نمونه
یکسان برای
مجموعههای
انطباق را
انجام نده
bs_switch (enum،
پیشفرض: def):
حالت تعویض
بیتاستریم
(قطعه init تکی)
* def: برای onDemand به off و
برای live به inband
تبدیل
میشود
* off: تعویض
بیتاستریم
را غیرفعال
میکند
* on: در صورت
امکانپذیر
بودن
پیکربندی
رمزگشای
یکسان، آن
را فعال
میکند
* inband: پیکربندی
رمزگشا را
در صورت
امکان به
درونباندی
منتقل
میکند
* both:
مجموعههای
پارامتر
درونباندی
و
برونباندی
* pps:
پارامترهای
PPS و APS را به
درونباند
منتقل
میکند، VPS، SPS
و DCI را خارج
از باند نگه
میدارد
(برای VVC RPR
استفاده
میشود)
* force: حتی در
صورت وجود
تنها یک representation
آن را فعال
میکند
* multi: از چندین
مدخل stsd در ISOBMFF
استفاده
میکند
template (str): رشته
قالب مورد
استفاده
برای تولید
نام قطعه
segext (str): پسوند
فایل مورد
استفاده
برای قطعات
initext (str): پسوند
فایل مورد
استفاده
برای قطعه init
muxtype (enum،
پیشفرض: auto):
نوع
مالتیپلکس
مورد
استفاده
برای قطعات
* mp4: از قالب ISOBMFF
استفاده
میکند
* ts: از قالب MPEG-2 TS
استفاده
میکند
* mkv: از قالب Matroska
استفاده
میکند
* webm: از قالب WebM
استفاده
میکند
* ogg: از قالب OGG
استفاده
میکند
* raw: از قالب
رسانه خام
استفاده
میکند
(representationهای
مالتیپلکسشده
را غیرفعال
میکند)
* auto: قالب را بر
اساس پسوند
حدس
میزند، در
صورت عدم
ارائه
پسوند،
پیشفرض mp4
است
rawsub (bool،
پیشفرض: no):
استفاده از
قالب
زیرنویس
خام بهجای
کپسولهسازی
در کانتینر
asto (dbl، پیشفرض:
0): مقدار availabilityTimeOffset
مورد
استفاده به
ثانیه.
مقدار منفی
صرفاً AST را
افزایش
میدهد،
مقدار مثبت
ASToffset را برای
representationها تنظیم
میکند
profile (enum،
پیشفرض: auto):
نمایه هدف DASH.
این گزینه
مقادیر
پیشفرض را
برای
اطمینان از
مطابقت با
نمایه
موردنظر
تنظیم
میکند.
برای MPEG-2 TS، فقط
main و live استفاده
میشوند و
سایر موارد
بهطور
پیشفرض main
هستند
* auto: نمایه را
برای dynamic به live و
برای غیر-dynamic
به full تبدیل
میکند
* live: نمایه DASH live با
استفاده از
قالب قطعه
* onDemand: نمایه MPEG-DASH live
* main: نمایه MPEG-DASH main
با استفاده
از لیست
قطعات
* full: نمایه MPEG-DASH full
* hbbtv1.5.live: نمایه HBBTV 1.5 DASH
* dashavc264.live: نمایه DASH-IF live
* dashavc264.onDemand: نمایه DASH-IF
onDemand
* dashif.ll: نمایه
تاخیر کم DASH IF
(در صورت عدم
تنظیم سرور
UTC، آن را روی
time.akamai.com تنظیم
میکند)- dashif.ingest:
نمایه DASH-IF CMAF ingest
(از dashif.ll
ارثبری
کرده و CMAF، template و
segcts را اعمال
میکند)
profX (str): فهرست
افزونههای
نمایه،
همانطور
که توسط DASH-IF و DVB
استفاده
میشود.
رشته با
دونقطه با
نمایه مورد
استفاده
ادغام
میشود. در
صورت شروع
با +، رشته
نمایه
پیشفرض
پاک شده و از
+ صرفنظر
میشود
query (str):
پارامترهای
query برای
پیوست به
درخواستهای
قطعه (Annex I)
cp (enum، پیشفرض:
set): مکان عنصر
حفاظت از
محتوا
* set: در عنصر adaptation set
* rep: در عنصر representation
* both: در هر دو
عنصر adaptation set و representation
pssh (enum،
پیشفرض: v):
حالت
ذخیرهسازی
برای جعبه PSSH
* f: فقط در movie fragment
ذخیره
میکند
* v: فقط در movie
ذخیره
میکند، یا
در صورت
تشخیص key roll در movie
و
فرگمنتها
ذخیره
میکند
* m: فقط در mpd
ذخیره
میکند
* mf: در mpd و movie fragment
ذخیره
میکند
* mv: در mpd و movie
ذخیره
میکند
* n: جعبه pssh را از
mpd و قطعات
دور
میاندازد
buf (sint،
پیشفرض: -100):
حداقل
مدتزمان
بافر بر حسب
میلیثانیه.
مقدار منفی
به معنای
درصدی از
مدتزمان
قطعه است
(مثلاً -150 = 1.5*seg_dur)
spd (sint، پیشفرض:
0): تاخیر
پیشنهادی
ارائه بر
حسب
میلیثانیه
timescale (sint،
پیشفرض: 0):
تنظیم
مقیاس
زمانی برای
خط زمانی و
لیست/قالب
قطعه. مقدار 0
اولین timescale از
اولین
جریان در یک
مجموعه
انطباق را
برمیگزیند.
مقدار
منفی،
استفاده از
مقیاسهای
زمانی
جریان را
برای هر
عنصر
زماندار
اجبار
میکند
(تکثیر
لیست/قالب/خطهای
زمانی قطعه).
مقدار مثبت
مقیاس
زمانی MPD را
اعمال
میکند
check_dur (bool،
پیشفرض: true):
بررسی
مدتزمان
منابع در
دوره برای
تلاش جهت
داشتن
مدتزمانهای
تقریباً
برابر. هر
زمان که
زمانهای
شروع دوره
استفاده
شوند،
اعمال
میشود
skip_seg (bool،
پیشفرض: false):
افزایش
شماره قطعه
در هر زمان
که یک قطعه
خالی تولید
شود -
غیرمنطبق
با DASH (NOT DASH COMPLIANT)
title (str): عنوان MPD
source (str): منبع MPD
info (str): نشانی URL
اطلاعات MPD
cprt (str): رشته
کپیرایت MPD
lang (str): زبان
اطلاعات MPD
location (strl): تنظیم
مکانهای MPD
روی URL
دادهشده
base (strl): تنظیم
URLهای پایه
برای MPD
refresh (dbl، پیشفرض:
0): نرخ
نوسازی
برای
مانیفستهای
پویا بر حسب
ثانیه
(مقدار منفی
مدتزمان MPD
را تنظیم
میکند،
مقدار 0 از
مدتزمان dash
استفاده
میکند)
tsb (dbl، پیشفرض:
30): عمق بافر
تغییر زمان
بر حسب
ثانیه
(مقدار منفی
به معنای
بینهایت
است)
keep_segs (bool،
پیشفرض: false):
قطعاتی که
دیگر در
بافر تغییر
زمان
نیستند حذف
نشوند
ast (str): تنظیم
تاریخ شروع
(بهصورت xs:date،
مثلاً YYYY-MM-DDTHH:MM:SSZ)
برای حالت
زنده.
پیشفرض
زمان حال
است. !! با
چندین دوره
و همچنین
زمانی که
مدتزمان DASH
مضربی از
اندازه GOP
نیست
استفاده
نشود !!
state (str): مسیر
فایلی که
برای
ذخیره/بارگذاری
مجدد
اطلاعات
وضعیت
هنگام
شبیهسازی
زنده
استفاده
میشود. این
اطلاعات
بهعنوان
یک MPD معتبر
با
افزونههای
GPAC XML ذخیره
میشود
keep_ts (bool،
پیشفرض: false):
هنگام
بارگذاری
مجدد یک
زمینه (context)،
برچسب
زمانی
جابهجا
نشود
loop (bool، پیشفرض:
false): تکرار
حلقهای
منابع
هنگام
اجرای dash با subdur
و state. در صورت
عدم تنظیم،
پس از پایان
منابع یک
دوره جدید
ایجاد
میشود
subdur (dbl، پیشفرض:
0): حداکثر
مدتزمان
فایل ورودی
برای
قطعهبندی.
این گزینه
مدتزمان
قطعه را
تغییر
نمیدهد،
بلکه
قطعهبندی
زمانی
متوقف
میشود که
قطعات
تولیدشده
از این
مدتزمان
فراتر روند
split (bool، پیشفرض:
true):
فعالسازی
شبیهسازی
نمونهها
برای
جریانهای
متن/متاداده/توصیف
صحنه، و
علامتگذاری
نمونههای
بعدی
بهعنوان
زائد
hlsc (bool، پیشفرض:
false): درج مرجع
ساعت در
لیست پخش
متغیر در HLS
زنده
cues (str): تنظیم
فایل cue
strict_cues (bool،
پیشفرض: false):
حالت
سختگیرانه
برای cueها؛
اگر
تقسیمبندی
روی نوع SAP
شماره 1/2/3
نباشد یا cue
استفادهنشدهای
یافت شود،
هشدار
میدهد
strict_sap (enum،
پیشفرض: off):
حالت
سختگیرانه
برای sap
* off: نادیده
گرفتن
انواع SAP
برای PIDهای
غیر از
ویدیو، و
اجبار AdaptationSet@startsWithSAP=1
* sig: همانند off-
اما AdaptationSet@startsWithSAP را
روی مقدار
واقعی SAP نگه
میدارد
* on: در صورت
استفاده هر
PID از SAP 3 یا 4
هشدار داده
و به نمایه FULL
تغییر
وضعیت
میدهد
* intra: انواع SAP
بزرگتر از 3
را در تمام
انواع
رسانه
نادیده
میگیرد
subs_sidx (sint،
پیشفرض: -1):
تعداد
زیرقطعات
در هر sidx.
مقدار منفی
sidx را
غیرفعال
میکند.
تنها برای
به ارث بردن
گزینه sidx
مقصد
استفاده
میشود
cmpd (bool، پیشفرض:
false): صرفنظر
از شکست خط و
فاصلهها
در MPD XML برای
فشردهسازی
styp (str): نشان دادن
4CC مورد
استفاده
برای
جعبههای styp
هنگام
استفاده از
خروجی ISOBMFF
dual (bool): تولید هر
دو فایل MPD و M3U
را مشخص
میکند
segcts (bool): محاسبه
شماره قطعه
با تقسیم
اولین CTS بر .I segdur
sigfrag (bool): استفاده
از حالت
صرفاً
تولید
مانیفست
sbound (enum، پیشفرض:
out): نشان
میدهد
چگونه باید
با TSS شروع
قطعه نظری (=
segment_number * duration) برخورد
شود
* out: تقسیم
قطعه
بهمحض
فراتر رفتن
از TSS انجام
میشود (TSS <= segment_start)
* closest: تقسیم
قطعه در
نزدیکترین
SAP به مرز
نظری
* in: مقدار TSS
همیشه درون
قطعه است (TSS >=
segment_start)
reschedule (bool،
پیشفرض: false):
زمانبندی
مجدد منابع
بدون period ID
اختصاصیافته
پس از پایان
(فقط حالت
پویا)
sreg (bool، پیشفرض:
false): تنظیم
نشست
- هنگام
استفاده از
subdur و زمینه،
فقط قطعات
از گذشته تا
لبه زنده
تولید شوند
- در غیر این
صورت در
حالت پویا
بدون
زمینه،
قطعات
زودتر از
موعد تولید
نشوند
scope_deps (bool،
پیشفرض: true):
محدود کردن
وابستگیهای
PID به درون
منبع. در
صورت
غیرفعال
بودن،
وابستگیهای
PID در میان
تمام PIDهای
ورودی بدون
در نظر
گرفتن منبع
آنها
بررسی
میشوند
utcs (str): نشانی URL
برای
استفاده
بهعنوان
سرور زمان /
منبع UTCTiming.
مقدار ویژه
inband حالت UTC
درونباندی
را فعال
میکند
(مشابه publishTime)،
پیشوند
ویژه xsd@
بهجای ISO از
schemeURI مربوط به
xsDateTime استفاده
میکند
sflush (enum، پیشفرض:
off): حالت
تخلیه قطعه -
راهنمای
فیلتر را
ببینید:
* off: اقدام
خاصی انجام
نمیشود
* single: اجبار به
تولید یک
قطعه تکی
برای هر
ورودی
* end: صرفنظر
از تشخیص
حلقه و مهار
تنظیم
مدتزمان
در انتهای
ورودی،
مورد
استفاده
برای حالت state
last_seg_merge (bool،
پیشفرض: false):
اجبار به
ادغام
آخرین قطعه
در صورتی که
کمتر از نصف
مدتزمان
هدف باشد
mha_compat (enum،
پیشفرض: no):
حالت تولید
مجموعه
انطباق
برای نمایه
سازگار MPEG-H Audio
* no: فقط
مجموعه
انطباق را
برای نمایه
اصلی تولید
میکند
* comp: فقط
مجموعههای
انطباق را
برای تمام
نمایههای
سازگار
تولید
میکند
* all: مجموعه
انطباق را
برای نمایه
اصلی و تمام
نمایههای
سازگار
تولید
میکند
mname (str): نام
مانیفست
خروجی برای
مالتیپلکس
ATSC3 (استفاده
از 'm3u8' فقط
تولید HLS را
فعال
میکند)
llhls (enum، پیشفرض:
off): نوع تاخیر
کم HLS
* off: از LL-HLS
استفاده
نکن
* br: استفاده
از LL-HLS با
محدوده
بایت برای
بخشهای
قطعه، با
اشاره به
قطعه کامل
(سازگار با DASH-LL)
* sf: استفاده
از
فایلهای
مجزا برای
بخشهای
قطعه (با
پسوند 1.، 2. و
غیره)
* brsf: تولید دو
مجموعه
مانیفست،
یکی برای
محدوده
بایت و یکی
برای
فایلها (_IF
قبل از
پسوند
مانیفست
اضافه
میشود)
hlsdrm (str):
اطلاعات
فایل cryp برای
رمزگذاری
کامل قطعه HLS
hlsx (strl): فهرستی از
رشتهها
برای پیوست
به سرآیند
اصلی HLS قبل
از variantها با
['#foo','#bar=val'] که
بهصورت #foo 0#bar=val
افزوده
میشود
hlsiv (bool، پیشفرض:
true): تزریق IV در
لیست پخش
متغیر HLS
ll_preload_hint (bool،
پیشفرض: true):
تزریق preload hint
برای LL-HLS
ll_rend_rep (bool،
پیشفرض: true):
تزریق rendition reportها
برای LL-HLS
ll_part_hb (dbl،
پیشفرض: -1):
مقدار part hold-back
تعریفشده
توسط کاربر
برای LLHLS،
مقدار منفی
به معنای ۳
برابر
حداکثر
مدتزمان
بخش در نشست
است
ckurl (str): تنظیم
نشانی URL
مشترک ClearKey
برای تمام
جریانهای
رمزگذاریشده
(توسط ویژگی
PID با نام CKUrl
بازنویسی
میشود)
hls_absu (enum،
پیشفرض: no):
استفاده از
URL مطلق در
تولید HLS با
استفاده از
اولین URL در base
* no: از URL مطلق
استفاده
نکن
* var: استفاده
از URL مطلق
فقط در
لیستهای
پخش متغیر
* mas: استفاده
از URL مطلق
فقط در لیست
پخش اصلی
* both: استفاده
از URL مطلق در
همهجا
hls_ap (bool،
پیشفرض: false):
استفاده از
صدا
بهعنوان
رسانه اصلی
بهجای
ویدیو
هنگام
تولید
لیستهای
پخش
seg_sync (enum،
پیشفرض: auto):
کنترل
چگونگی
تاثیر
انتظار
برای
نوشتهشدن
آخرین بسته P
از
فرگمنت/قطعه
بر درج قطعه
در مانیفست
* no: منتظر P
نمان
* yes: منتظر P
بمان
* auto: در صورت
استفاده از
HLS منتظر P
بمان
cmaf (enum،
پیشفرض: no):
استفاده از
رهنمودهای
cmaf
* no: استاندارد
CMAF اعمال
نمیشود
* cmfc: استفاده
از
رهنمودهای
CMAF cmfc
* cmf2: استفاده
از
رهنمودهای
CMAF cmf2
pswitch (enum،
پیشفرض: single):
حالت کنترل
تعویض دوره
* single: در صورت
تغییر
پیکربندی PID،
دوره را
تغییر بده
* force: اجبار به
تعویض دوره
در هر
بازپیکربندی
PID بهجای
یکپارچهسازی
بازپیکربندی
PID (برای
پیوند یا
درج آگهی
بدون
استفاده از
periodID)
* stsd: تغییر
دوره در
صورت تغییر
پیکربندی PID،
مگر اینکه
پیکربندی
جدید در
تنظیمات
اولیه
اعلان شده
باشد
kpswitch (bool،
پیشفرض: false):
اجبار به
دوره جدید
هنگام
تغییر
اطلاعات
کلید CENC،
شامل
تغییرات
بین
حالتهای
رمزگذاریشده/رمزگذارینشده
chain (str): نشانی URL
مربوط به MPD
بعدی برای
زنجیرهسازی
معمولی
chain_fbk (str): نشانی URL
مربوط به MPD
پشتیبان
gencues (bool،
پیشفرض: false):
فقط مرزهای
قطعه درج
شوند و
مانیفستها
تولید
نشوند
force_init (bool،
پیشفرض: false):
اجبار به
ایجاد قطعه
init در حالت
تعویض
بیتاستریم
keep_src (bool،
پیشفرض: false):
حفظ URLهای
منبع در
حالت تولید
مانیفست
gxns (bool، پیشفرض:
false): درج برخی
افزونههای
gpac در
مانیفست (در
حال حاضر،
فقط tfdt از
قطعه اول)
dkid (enum، پیشفرض:
auto): کنترل
تزریق KID
پیشفرض در
MPD
* off: مقدار KID
پیشفرض
تزریق
نمیشود
* on: مقدار KID
پیشفرض
همیشه
تزریق
میشود
* auto: مقدار KID
پیشفرض
تنها در
صورتی
تزریق
میشود که
هیچ key roll تشخیص
داده نشود
(مطابق با
رهنمودهای
DASH-IF)
tpl_force (bool،
پیشفرض: false):
استفاده از
رشته قالب
بهصورت
مستقیم
بدون تلاش
برای
افزودن
پسوند یا حل
تعارض در
نامها
inband_event (strl): درج
رویداد
درونباندی
در مانیفست
DASH که
بهصورت
سهتایی
{schemeIdUri,value,streamType} توصیف
شده است
که در آن streamType
میتواند
"audio"، "video"، "text"
یا "all" باشد
ttml_agg (bool،
پیشفرض: false):
اجبار به
تجمیع
نمونههای
TTML یک قطعه DASH در
یک نمونه
واحد
evte_agg (bool،
پیشفرض: false):
اجبار به
تجمیع
نمونههای
Event Track یک قطعه DASH
در یک نمونه
واحد
scte35 (enum، پیشفرض:
auto):
سیگنالدهی
SCTE-35
* auto: بر اساس
ورودی، 'xmlbin' یا
'evte'
* xmlbin: جریان
رویداد
خارج از
باند (MPD) با xml+bin
(توصیهشده)
* inband: جعبههای
emsg
درونباندی
* all: در هر کجا
که تشخیص
داده شود
سیگنال
ارسال کند
* none: بدون EventStream یا
جعبههای emsg
base64 (bool،
پیشفرض: false):
جاسازی
قطعات init در
مانیفستها
بهصورت base64
td_limit (uint،
پیشفرض: 5):
تعداد
ثانیههایی
که کمتر از
آن یک
ناپیوستگی
زمانی
طبیعی در
نظر گرفته
میشود
(مثلاً
اتلاف) -
مقدار 0
بررسی را
غیرفعال
میکند
td_detect (uint،
پیشفرض: 5):
تعداد
ثانیههای
بین DTS که
بیشتر از آن
یک
ناپیوستگی
فعال
میشود -
مقدار 0
بررسی را
غیرفعال
میکند
sigfo (bool): استفاده
از
آفستهای
فرگمنت در
صورت موجود
بودن هنگام
تولید
ایندکس (در
صورت
استفاده از
sigfrag بهصورت
ضمنی فعال
میشود)
توضیحات: تجمیعکننده تایلهای HEVC
این فیلتر مجموعهای از جریانهای تایلبندیشدهی تفکیکشدهی HEVC (شناسههای hvt1 یا hvt2 در ISOBMFF) را در یک جریان تکی HEVC تجمیع میکند.
گزینهها (تخصصی) (OPTIONS (EXPERT))
tiledrop (uintl, updatable): مشخص
کردن
اندیسهای
تایلها
جهت دور
انداختن (drop)
ttimeout (uint, default: 10000, updatable):
مدتزمان
بر حسب
میلیثانیه
برای
انتظار پیش
از مفقود در
نظر گرفتن
یک بسته
تایل،
مقدار 0 تا
ابد منتظر
میماند
tilesplit
توضیحات: تفکیککننده تایلهای HEVC
این فیلتر
یک جریان
تایلبندیشدهی
HEVC را به
جریانهای
تایلبندیشدهی
HEVC
(شناسههای
hvt1 یا hvt2 در ISOBMFF)
تفکیک
میکند.
اگر جریان
بیت (bitstream)
تایلبندی
نشده باشد،
فیلتر به
حالت عبور
مستقیم (passthrough)
تغییر
وضعیت
میدهد.
اگر ویژگی Bitrate
روی PID ورودی
تنظیم شده
باشد، PIDهای
تایل خروجی
دارای نرخ
بیتی
تنظیمشده
روی (Bitrate - 10k)/nb_opids
خواهند بود
که 10
کیلوبیتبرثانیه
برای پایه
رزرو
میشود.
به هر PID
تایل،
ویژگیهای
زیر اختصاص
داده
میشود:
* `ID`: برابر با
شناسه PID
پایه (مشابه
ورودی)
بهعلاوه
اندیس
مبتنی بر 1
تایل در
ترتیب پویش
شطرنجی (raster scan).
* `TileID`: برابر با
اندیس
مبتنی بر 1
تایل در
ترتیب پویش
شطرنجی (raster scan).
هشدار: این فیلتر بررسی نمیکند که آیا تایلها به صورت مستقل کدگذاری شدهاند (MCTS) یا خیر!
هشدار: پشتیبانی از تغییرات پویای شبکه تایلبندی آزمایش نشده است!
گزینهها (تخصصی) (OPTIONS (EXPERT))
tiledrop (uintl, updatable): مشخص کردن اندیسهای تایلها جهت دور انداختن (مبتنی بر 0، در ترتیب پویش شطرنجی تایل)
pin
توضیحات: ورودی پایپ (Pipe input)
این فیلتر
پایپهای
ورودی
عمومی
(یکطرفه) را
در حالت
مسدودکننده
(blocking) یا
غیرمسدودکننده
(non-blocking) مدیریت
میکند.
هشدار:
پایپهای
ورودی
قابلیت پرش
موقعیت (seek)
ندارند.
قالب
دادهی
پایپ ممکن
است با
استفاده از
پسوند (چه در
نام فایل یا
از طریق .I ext ) یا
نوع MIME از
طریق .I mime مشخص
شود.
نکته: مگر
اینکه در
سطح نشست
غیرفعال
شده باشد
(رجوع کنید
به .I -no-probe )،
پسوندهای
فایل
معمولاً
نادیده
گرفته
میشوند و
شناسایی
قالب (probing) روی
اولین بلوک
داده انجام
میگیرد.
پایپ stdin (STDIN PIPE)
فیلتر
میتواند
خواندن از stdin
را با
استفاده از -
یا stdin به
عنوان نام
فایل ورودی
مدیریت کند.
مثال
gpac -i - vout
gpac -i stdin vout
هنگام خواندن از stdin، مهلت زمانی (timeout) پیشفرض ۱۰ ثانیه است.
پایپهای نامگذاریشده (NAMED PIPES)
این فیلتر
میتواند
خواندن از
پایپهای
نامگذاریشده
را مدیریت
کند.
طرحوارهی
پروتکل
مرتبط
هنگامی که
به عنوان یک
ورودی
عمومی
بارگذاری
شود pipe:// است (به
عنوان مثال -i
pipe://URL که در آن URL
نام نسبی یا
مطلق پایپ
است).
در
میزبانهای
Windows، اگر
پیشوندی
تعیین نشده
باشد،
پیشوند
پیشفرض
پایپ \.ipeac است.
dst=mypipe به \.ipeacpipe
منتهی
میشود
dst=\.ipeapppipe
به \.ipeapppipe
منتهی
میشود
هر نام
مقصدی که با \
شروع شود
همانطور
که هست
استفاده
میشود، و
به / تبدیل
میگردد.
پایپهای ورودی به صورت پیشفرض در حالت غیرمسدودکننده (non-blocking) ایجاد میشوند.
فیلتر در
صورت پیدا
نشدن پایپ
میتواند
آن را با
استفاده از .I
mkp بسازد. در
میزبانهای
Windows، این کار
یک سرور
پایپ ایجاد
خواهد کرد.
در
میزبانهای
غیر
ویندوزی،
پایپ
ساختهشده
پس از
نابودی
فیلتر،
فایل پایپ
را حذف
خواهد کرد.
پایپهای
ورودی را
میتوان با
استفاده از .I
ka طوری تنظیم
کرد که تا
ابد اجرا
شوند. در این
حالت:
- هرگونه
بسته شدن
احتمالی
پایپ در سمت
نوشتن
نادیده
گرفته
خواهد شد
- در صورت
تنظیم .I sigflush ،
تخلیه خط
لوله (pipeline flushing) پس
از بسته شدن
پایپ آغاز
خواهد شد
- پایان
نهایی
جریان
هنگام بسته
شدن نشست
فعال
میشود.
این
قابلیت
میتواند
برای ارسال
جریانی (pipe
کردن)
دادههای
خام از
فرایندهای
مختلف به gpac
مفید باشد:
* سمت گیرنده:
gpac -i pipe://mypipe:ext=.264:mkp:ka
* سمت
فرستنده: cat raw1.264 >
mypipe && gpac -i raw2.264 -o pipe://mypipe:ext=.264
تخلیه خط
لوله در عین
فعال نگه
داشتن
جریان، به
عنوان EOS
اعلام
میشود.
این قابلیت
معمولاً
برای
فیلترهای mux
که در
انتظار
دریافت EOS
جهت تخلیه
دادههای
خود هستند،
مورد نیاز
است.
اگر .I marker تنظیم شده باشد، رشتههای زیر (همگی ۸ بایتی با
src (cstr): نام pipe
مبدأ
block_size (uint،
پیشفرض: 5000):
اندازه
بافر
استفادهشده
برای
خواندن pipe
ext (str): مشخص کردن
پسوند فایل
دادههای pipe
mime (str): مشخص کردن
نوع MIME
دادههای pipe
blk (bool، پیشفرض:
false): باز کردن pipe
در حالت
مسدودکننده
(blocking)
ka (bool، پیشفرض:
false):
زندهنگهداشتن
pipe هنگام
تشخیص
پایان
ورودی
mkp (bool، پیشفرض:
false): ایجاد pipe در
صورت پیدا
نشدن
sigflush (bool،
پیشفرض: false):
ارسال
سیگنال
پایان
جریان با
بسته شدن pipe -
به راهنمای
فیلتر
مراجعه
کنید
marker (bool، پیشفرض:
false): بررسی بار
داده (payload) برای
سیگنالهای
flush و
پیکربندی
مجدد - به
راهنمای
فیلتر
مراجعه
کنید
bpcnt (uint، پیشفرض:
0): تعداد
مجاز قطعی pipe
پیش از
خروج؛ 0 یعنی
نامحدود
timeout (uint،
پیشفرض: 0):
مهلت زمانی
به
میلیثانیه
پیش از
پایانیافته
تلقی کردن
جریان
ورودی (0:
بدون مهلت
زمانی)
pout
توضیحات: خروجی pipe
این فیلتر
pipeهای خروجی
عمومی
(یکطرفه) را
فقط در حالت
مسدودکننده
(blocking) مدیریت
میکند.
هشدار: pipeهای
خروجی در
حال حاضر از
حالت
غیرمسدودکننده
(non-blocking)
پشتیبانی
نمیکنند.
طرح پروتکل
مرتبط
هنگام
بارگذاری
بهعنوان
یک خروجی
عمومی pipe:// است
(برای مثال -o
pipe://URL که در آن URL
یک نام نسبی
یا مطلق
برای pipe است).
قالب
دادههای pipe
باید با
استفاده از
پسوند (یا در
نام فایل یا
از طریق
گزینه .I ext) یا
نوع MIME از
طریق .I mime مشخص
شود.
نام pipe
مشخصشده
در .I dst
میتواند
از
سازوکارهای
الگوی gpac
استفاده
کند، مانند
dst=pipe_$ServiceID$
در
میزبانهای
Windows، در صورت
عدم تعیین
پیشوند،
پیشوند
پیشفرض pipe
عبارت است
از \.ipeac
عبارت dst=mypipe به
\.ipeacpipe
تبدیل
میشود
عبارت dst=\.ipeapppipe
به \.ipeapppipe
تبدیل
میشود
هر نام
مقصدی که با \
آغاز شود
همانگونه
که هست
استفاده
میشود و
به / تبدیل
میگردد
ورودی pipe
میتواند
در صورت
پیدا نشدن pipe
با استفاده
از .I mkp آن را
ایجاد کند.
در
میزبانهای
Windows، این کار
یک سرور pipe
ایجاد
خواهد کرد.
در
میزبانهای
غیر Windows، پایپ
ایجادشده
پس از
نابودی
فیلتر،
فایل pipe را
حذف خواهد
کرد.
با استفاده
از .I ka
میتوان pipe
را پس از
تشخیص قطع
ارتباط pipe
زنده نگه
داشت. این
ویژگی
معمولاً
زمانی
استفاده
میشود که
کلاینتها
با خطا
متوقف (crash) یا
خارج شده و
مجدداً
ادامه
مییابند.
هنگامی که
یک pipe
زندهنگهداشتهشده
قطع
میشود،
دادههای
ورودی دور
ریخته شده و
فیلتر تا
جای ممکن با
حداکثر
سرعت به حذف
دادهها
ادامه
میدهد.
بنابراین
توصیه
میشود از
این حالت
برای
ورودیهای
بلادرنگ (real-time)
استفاده
شود (در صورت
نیاز از یک reframer
استفاده
کنید).
اگر .I marker تنظیم
شده باشد،
رشته GPACPIF (۸
بایت شامل
پایاندهنده
صفر) در هر
بار تخلیه
خط لوله (pipeline flush)
شناساییشده
در pipe نوشته
خواهد شد.
تخلیه خط
لوله در حال
حاضر با
پایان قطعه
DASH یا پایان
بخش ISOBMF فعال
میشود.
گزینهها (تخصصی) (Options (expert)):
dst (cstr): نام pipe
مقصد
ext (str): مشخص کردن
پسوند فایل
دادههای pipe
mime (str): مشخص کردن
نوع MIME
دادههای pipe
dynext (bool، پیشفرض:
false): مشخص کردن
اینکه
پسوند فایل
توسط
زنجیره
فیلتر
تنظیم
میشود نه dst
start (dbl، پیشفرض:
0.0): تنظیم
آفست شروع
پخش. مقدار
منفی به
معنای
درصدی از
مدتزمان
رسانه است و
-1 برابر با
کل
مدتزمان
است
speed (dbl، پیشفرض:
1.0): تنظیم
سرعت پخش.
اگر منفی
باشد و start
برابر 0
باشد، start روی -1
تنظیم
میشود
mkp (bool، پیشفرض:
false): ایجاد pipe در
صورت پیدا
نشدن
block_size (uint،
پیشفرض: 5000):
اندازه
بافر
استفادهشده
برای نوشتن
در pipe، فقط Windows
ka (bool، پیشفرض:
false):
زندهنگهداشتن
pipe هنگام
تشخیص قطع
ارتباط (broken pipe)
marker (bool، پیشفرض:
false): تزریق
نشانگر (marker)
هنگام
رویدادهای
تخلیه خط
لوله (pipeline flush)
gsfmx
توضیحات: مالتیپلکسر GSF
این فیلتر
مالتیپلکسینگ
GSF (فرمت
سریالیشده
GPAC یا GPAC Serialized Format) را
فراهم
میکند.
این فیلتر
وضعیتهای
جریان (config/reconfig/info
update/remove/eos) و
بستههای
PIDهای ورودی
را
سریالسازی
میکند. این
امر امکان
ذخیره یک
نشست در
فایل یا
ارسال
وضعیت/دادههای
جریانها
به نمونه
دیگری از GPAC
را با
استفاده از
pipeها یا
سوکتها
ممکن
میسازد.
رویدادهای
بالادستی (upstream)
سریالسازی
نمیشوند.
رفتار
پیشفرض،
شمارههای
توالی (sequence numbers) را
درج
نمیکند.
هنگام اجرا
روی
پروتکلهای
عمومی که
ترتیب
بستهها را
تضمین
نمیکنند،
این
شمارهها
باید درج
شوند.
سریالساز،
بستههای
هماهنگسازی
(tune-in) را
(بهصورت
سراسری و به
ازای هر PID) با
نرخ چرخشی (carousel
rate) درخواستی
ارسال
میکند - اگر
0 باشد، هیچ
چرخشی وجود
ندارد. این
بستهها
بهعنوان
مازاد
علامتگذاری
میشوند تا
در صورت
نیاز توسط
فیلترهای
خروجی دور
ریخته
شوند.
رمزنگاری (Encryption)
قالب
جریان
میتواند
در حالت AES 128 CBC
رمزنگاری
شود. برای
تمامی
بستهها،
سرآیند
بسته
(سرآیند،
اندازه،
اندازه
فریم/آفست
بلوک و
شماره
توالی
اختیاری)
بهصورت
شفاف
(رمزنگارینشده)
بوده و
بایتهای
پس از آن تا
آخرین بایت
از آخرین
مضرب
اندازه
بلوک (16) که در
بار داده (payload)
جا
میگیرد،
رمزنگاری
میشوند.
برای
بستههای
داده، هر
قطعه (fragment)
بهطور
جداگانه
رمزنگاری
میشود تا
از انتشار
خطا در صورت
مفقود شدن
بستهها
جلوگیری
شود.
برای سایر
بستهها،
کل بسته قبل
از
قطعهقطعهسازی
(fragmentation)
رمزنگاری
میشود
(قطعات
نمیتوانند
بهصورت
جداگانه
پردازش
شوند).
برای
بستههای
سرآیند/tunein،
مقدار ۲۵
بایت نخست
پس از
سرآیند
بهصورت
شفاف
(رمزنگارینشده)
است (signature، version، IV و
pattern).
مقدار .I IV
برای
جلوگیری از
سربار بسته
ثابت است؛
اگر تنظیم
نشود
بهصورت
تصادفی
تولید شده و
در سرآیند
اولیه
جریان
فرستاده
میشود. از
حالت الگو (Pattern
mode) میتوان
برای
رمزنگاری K
بلوک و باقی
گذاشتن N
بلوک
بهصورت
شفاف
استفاده
کرد (به CENC cbcs
مراجعه
کنید).
هنگامی که
تمام
ویژگیهای PID
نگهداشته
شوند،
بستهٔ
سرایند/tunein
ممکن است
بسیار حجیم
شود. برای
کمک به کاهش
اندازهٔ
آن،
میتوان از
گزینهٔ .I minp
استفاده
کرد: این کار
تمام
ویژگیهای
توکار
علامتگذاریشده
بهعنوان
قابل حذف (رک.
راهنمای
مشخصهها) و
همچنین
تمام
ویژگیهای
غیر توکار
را حذف
میکند.
همچنین
میتوان از
گزینهٔ .I skp
برای مشخص
کردن
ویژگیهایی
که باید حذف
شوند
استفاده
کرد:
skp="4CC1,Name2
این کار ویژگیهایی از نوع 4CC1 و ویژگیهای (توکار یا غیر آن) با نام Name2 را حذف خواهد کرد.
حالت فایل (File mode)
بهطور
پیشفرض
این فیلتر
فقط
جریانهای
رسانهای
فریمبندیشده
را به عنوان
PID ورودی
میپذیرد،
نه فایلها
را. این
رفتار را
میتوان با
بارگذاری
صریح فیلتر
همراه با
تنظیم .I ext یا .I dst
تغییر داد.
مثال:
gpac -i source.mp4 gsfmx:dst=manifest.mpd -o dump.gsf
این دستور
منبع را DASH
کرده و تمام
فایلهای
تولیدشده
را به صورت PID
در
تسهیمکنندهٔ
GSF ذخیره
میکند.
برای تفکیک
(demultiplex) چنین
فایلی،
احتمالاً
لازم است gsfdmxfilter
بهطور
صریح
بارگذاری
شود:
gpac -i mux.gsf gsfdmx -o dump/$File$:dynext
این دستور تمام فایلها را از GSF mux استخراج خواهد کرد.
بهطور
پیشفرض
هنگام کار
در حالت
فایل،
فیلتر فقط
PIDهایی از
نوع فایل را
به عنوان
ورودی
میپذیرد.
برای مجاز
کردن
ترکیبی از
فایلها و
جریانها،
از .I mixed
استفاده
کنید:
gpac -i source.mp4 gsfmx:dst=manifest.mpd:mixed -o dump.gsf
این دستور منبع را DASH کرده، فایل مانیفست و جریانهای رسانهای را همراه با ویژگیهای بستههایشان در GSF mux ذخیره میکند.
گزینهها (تخصصی) (OPTIONS)
sigsn (bool, default: false):
اعلام
شماره
توالی بسته
پس از فیلد
سرایند و
پیش از فیلد
اندازه.
شماره
توالی به
ازای هر PID
است و به
صورت ۱۶
بیتی
کدگذاری
میشود.
بستهٔ
سرایند
فاقد SN است
sigdur (bool, default: true): اعلام
مدتزمان
sigbo (bool, default: false): اعلام
آفست بایت
sigdts (bool, default: true): اعلام
برچسب
زمانی
رمزگشایی (DTS)
dbg (enum, default: no): تنظیم
حالت
اشکالزدایی
* no:
غیرفعالسازی
اشکالزدایی
* nodata: اجبار
اندازهٔ
بسته به ۰
* nopck: نادیده
گرفتن
بسته
key (mem):
رمزنگاری
بستهها با
استفاده از
کلید
دادهشده
IV (mem): تنظیم IV
برای
رمزنگاری -
یک IV ثابت
برای پایین
نگهداشتن
بار اضافی (overhead)
بسته
استفاده
میشود
(مشابه cbcs)
pattern (frac, default: 1/0): تنظیم
الگوی بلوک
nb_crypt / nb_skip. مقدار
پیشفرض،
همگی
رمزنگاریشده
است
mpck (uint, default: 0): تنظیم
حداکثر
اندازهٔ
بسته. مقدار
۰ به معنی
عدم
قطعهبندی
است (هر AU در
یک بسته
ارسال
میشود)
magic (str): رشتهٔ
جادویی جهت
الحاق در
بستهٔ
راهاندازی
(setup)
skp (str): فهرست
نامهای
ویژگیهای PID
جداشده با
ویرگول
برای
نادیده
گرفتن
minp (bool, default: false):
گنجاندن
تنها حداقل
مجموعهای
از
ویژگیهای
لازم برای
پردازش
جریان
crate (dbl, default: 0): دورهٔ
زمانی
تکرار
چرخشی (carousel)
برای
اطلاعات tune-in
بر حسب
ثانیه
ext (str): پسوند
فایل برای
حالت فایل
dst (str): نشانی URL
مقصد در
حالت فایل
mixed (bool, default: false): مجاز
کردن GSF برای
در بر گرفتن
هر دو مورد
فایلها و
جریانهای
رسانهای
gsfdmx
توضیحات: تفکیککنندهٔ (demultiplexer) GSF
این فیلتر
قابلیت
تفکیک قالب
ترتیبی
جیپک (GSF - GPAC Serialized Format)
را فراهم
میکند.
این فیلتر
وضعیتهای
جریان (config/reconfig/info
update/remove/eos) و
بستهها را
در جریان
بایتی GSF
بازنشانی
(de-serialize) میکند.
این ویژگی
امکان
خواندن یک
نشست
ذخیرهشده
در فایل یا
دریافت
وضعیت/دادههای
جریانها
را از
نمونهای
دیگر از GPAC با
استفاده از
لولهها (pipes)
یا سوکتها
فراهم
میسازد.
قالب جریان میتواند در حالت AES 128 CBC رمزنگاری شود، که در این صورت باید یک کلید ۱۲۸ بیتی به فیلتر تفکیککننده داده شود.
گزینهها (تخصصی) (OPTIONS)
key (mem): کلید
برای
رمزگشایی
بستهها
magic (str): رشتهٔ
جادویی جهت
بررسی در
بستهٔ
راهاندازی
(setup)
mq (uint, default: 4): تنظیم
حداکثر طول
صف بسته
برای تشخیص
بستههای
از دست رفته.
مقدار ۰ با
شروع یک
بسته جدید،
بستهٔ ناقص
را تخلیه (flush)
میکند
pad (uint, default: 0, minmax: 0-255):
مقدار بایت
استفادهشده
برای پر
کردن (pad)
بستههای
از دست
رفته
توضیحات: خروجی UDP/TCP
این فیلتر
سوکتهای
خروجی
عمومی
(تکجهته) را
تنها در
حالت
مسدودکننده
(blocking mode) مدیریت
میکند.
این فیلتر
میتواند
در حالت
سرور کار
کند و منتظر
اتصالات
منبع
بماند، یا
در حالت
کلاینت که
مستقیماً
به یک سرور
متصل
میشود.
در حالت
سرور،
میتوان
فیلتر را
طوری تنظیم
کرد که در
پایان
جریان (stream) به
کار خود
ادامه دهد.
در حالت
سرور،
رفتار
پیشفرض
این است که
در صورت قطع
اتصال همهٔ
کلاینتها،
بستههای
ورودی حفظ
شوند؛ این
مورد از
طریق
گزینهٔ .I kp
قابل تنظیم
است، با این
حال هیچ
تنظیم
بلادرنگی
برای سرعت
دور ریختن
بستهها
وجود ندارد.
اگر منابع
شما
بلادرنگ
نیستند،
افزودن یک
زمانبند
بلادرنگ در
زنجیره را
در نظر
بگیرید (ر.ک
به فیلتر reframer)،
یا گزینهٔ
ارسال .I rate را
تنظیم
کنید.
- سوکتهای
UDP برای
نشانیهای URL
مقصد با
قالب udp://NAME به
کار
میروند
- سوکتهای TCP
برای
نشانیهای URL
مقصد با
قالب tcp://NAME به
کار
میروند
- سوکتهای
یونیکس
دامین UDP
برای
نشانیهای URL
مقصد با
قالب udpu://NAME به
کار
میروند
- سوکتهای
یونیکس
دامین TCP
برای
نشانیهای URL
مقصد با
قالب tcpu://NAME به
کار
میروند
هنگامی که
پورتها در
URL مشخص شده
باشند و از
جداکنندههای
پیشفرض
گزینهها
استفاده
شود (به gpac -h doc
مراجعه
کنید)، URL
باید یکی از
موارد زیر
باشد:
- یک '/' در
انتها
داشته
باشد،
مانند udp://localhost:1234/[:opts]
- از گریز (escape)
مربوط به gpac
استفاده
کند، مانند
udp://localhost:1234[:gpac:opts]
خروجی
سوکت را
میتوان به
منظور
آزمایش
طوری
پیکربندی
کرد که
بستهها را
دور
بیندازد یا
ترتیب
آنها را
معکوس کند.
اندازهٔ
پنجره بر
حسب بسته به
عنوان مخرج
کسر دور
انداختن/معکوس
کردن تعیین
میشود، و
اندیس
بستهای که
باید دور
انداخته/معکوس
شود به
عنوان صورت
کسر مشخص
میگردد.
اگر صورت
کسر ۰ باشد،
بستهای به
صورت
تصادفی در
آن پنجره
انتخاب
میشود.
مثال
:pckd=4/10
این حالت
چهارمین
بسته از هر
پنجرهٔ ۱۰
بستهای را
دور
میاندازد.
مثال
:pckr=0/100
این حالت ترتیب ارسال یک بستهٔ تصادفی را در هر پنجرهٔ ۱۰۰ بستهای معکوس میکند.
گزینهها (تخصصی) (Options (expert)):
dst (cstr): نشانی URL
مقصد
sockbuf (uint, پیشفرض:
65536): اندازهٔ
بلوک مورد
استفاده
برای
خواندن
فایل
port (uint, پیشفرض: 1234):
پورت
پیشفرض در
صورت عدم
تعیین
ifce (cstr): رابط
چندپخشی (multicast)
پیشفرض
ext (str): پسوند
فایل
دادههای
پایپ (pipe)
mime (str): نوع MIME
دادههای
پایپ (pipe)
listen (bool, پیشفرض:
false): مشخص
میکند که
سوکت خروجی
در حالت
سرور کار
میکند
maxc (uint, پیشفرض: +I):
حداکثر
تعداد
اتصالات
همزمان
ka (bool, پیشفرض: false):
زنده نگه
داشتن سوکت
در صورت
نبود اتصال
دیگر
kp (bool, پیشفرض: true):
نگهداشتن
بستهها در
صف در صورت
نبود
کلاینت
دیگر
start (dbl, پیشفرض: 0.0):
تنظیم آفست
شروع پخش.
مقدار منفی
به معنای
درصدی از
مدتزمان
رسانه است
که در آن 1-
برابر با کل
مدتزمان
است
speed (dbl, پیشفرض: 1.0):
تنظیم سرعت
پخش. اگر
منفی باشد و
start برابر ۰
باشد،
مقدار start روی 1-
تنظیم
میشود
rate (uint, پیشفرض: 0):
تنظیم نرخ
ارسال بر
حسب bps، به
صورت
پیشفرض
غیرفعال
است (در
سریعترین
حالت ممکن)
pckr (frac, پیشفرض: 0/0):
معکوس کردن
بسته در هر N
بسته
pckd (frac, پیشفرض: 0/0):
دور
انداختن
بسته در هر N
بسته
ttl (uint, پیشفرض: 0,
minmax: 0-127): مقدار TTL
چندپخشی
rfav1
توضیحات: بازفریمبند (reframer) قالبهای AV1/IVF/VP9/IAMF
این فیلتر فایلها/دادههای AV1 OBU، AV1 AnnexB یا IVF حاوی AV1 یا VP9 را تجزیه کرده و PID و فریمهای تصویری متناظر را در خروجی میدهد. همچنین IAMF OBU را تجزیه کرده و واحدهای زمانی متناظر حاوی فریمهای صوتی و بلوکهای پارامتر را خروجی میدهد.
گزینهها (تخصصی) (Options (expert)):
fps (frac,
پیشفرض: 0/1000):
نرخ فریم
واردسازی
(مقدار ۰ به
طور
پیشفرض به
FPS برگرفته
از bitstream یا ۲۵
هرتز تنظیم
میشود)
index (dbl, پیشفرض: -1.0):
طول پنجرهٔ
نمایهسازی.
اگر ۰ باشد،
bitstream برای
تعیین
مدتزمان
بررسی
نمیشود.
مقدار منفی
در صورتی که
فایل منبع
بزرگتر از
20M باشد (سرعت
واردکنندهها
را کاهش
میدهد)، از
نمایهسازی
صرفنظر
میکند مگر
اینکه
درخواستی
برای پخش با
محدودهٔ
شروع
بزرگتر از
۰ صادر شود
importer (bool, پیشفرض:
false): سازگاری
با
واردکنندهٔ
قدیمی
deps (bool, پیشفرض: false):
وارد کردن
اطلاعات
وابستگی
نمونهها (sample)
notime (bool, پیشفرض:
false): نادیده
گرفتن
برچسبهای
زمانی
ورودی،
بازسازی از
۰
temporal_delim (bool,
پیشفرض: false):
حفظ
جداکنندههای
زمانی در
فریمهای
بازسازیشده
bsdbg (enum, پیشفرض: off):
اشکالزدایی
تجزیهٔ OBU در
گزارشهای
media@debug
* off: غیرفعال
است
* on: فعال است
* full: فعال با
تخلیهٔ (dump)
تعداد
بیتها
توضیحات: بازنویسنده IVF/OBU/annexB
این
فیلتر،
جریانهای
بیتی (bitstreams) VPx یا AV1
را به یک
دنباله IVF، annexB
یا OBU
بازنویسی
میکند.
جداکننده
زمانی OBU (یا temporal
delimiter OBU) مجدداً
در annexB
(فایلهای .av1
و .av1b، با
تنظیم obu_size) و
دنبالههای
OBU (فایلهای
.obu، بدون obu_size)
درج میشود.
متادیتای timecode
به صورت
اختیاری
درج میشود
نکته:
کدکهای VP8/9
فقط از
خروجی IVF
استفاده
خواهند کرد
(معادل
پسوند فایل
.ivf یا تنظیم :ext=ivf
در خروجی).
گزینهها (تخصصی) (OPTIONS)
rcfg (bool، پیشفرض: true): اجبار به تکرار پیکربندی رمزگشا (decoder config) در هر I-frame
routein
توضیحات: ورودی MABR و ROUTE
این فیلتر
یک گیرنده
برای تحویل
فایل از
طریق
چندپخشی (multicast)
است. این
فیلتر در
حال حاضر از
ATSC 3.0، ROUTE عمومی و
DVB-MABR flute
پشتیبانی
میکند.
- حالت ATSC 3.0 با URL atsc://
شناسایی
میشود.
- حالت ROUTE
عمومی با URL
route://IP:PORT شناسایی
میشود.
- حالت DVB-MABR با URL
mabr://IP:PORT که به
کانال
راهانداز
(bootstrap) FLUTE حامل
پیکربندی gateway
چندپخشی
اشاره دارد
شناسایی
میشود.
این فیلتر میتواند در حالت کَششده (cached mode)، حالت منبع (source mode) یا حالت مستقل (standalone mode) کار کند.
حالت کَش (Cached mode)
حالت کَش،
رفتار
پیشفرض
فیلتر است.
این حالت GPAC HTTP Cache
را با
فایلهای
دریافتشده
پر میکند،
و از http://gmcast/serviceN به
عنوان ریشه
سرویس
استفاده
مینماید
که در آن N
شناسه
سرویس
چندپخشی (multicast service
ID) است.
در حالت
کَش،
فایلهای
تکراری
همیشه به
کَش
فرستاده
میشوند.
حداکثر
تعداد
اشیاء قطعه
چندرسانهای
(media segment) در کَش به
ازای هر
سرویس توسط .I
nbcached تعریف
میشود؛
این یک
سازوکار
ایمنی است
که برای
اجبار به
حذف اشیاء
در صورتی که
زمانبندی
کلاینت DASH
نادرست
باشد و برخی
فایلها
هرگز در سطح
کَش
درخواست
نشوند، به
کار
میرود.
به MPD
کَششده
هدرهای زیر
اختصاص
داده
میشود:
* `x-mcast`: مقدار
بولی (boolean)، در
صورت yes نشان
میدهد که
فایل از یک
چندپخشی
آمده است.
* `x-mcast-first-seg`: مقدار
رشتهای (string)،
نام اولین
قطعهای را
که (به طور
کامل یا در
حال حاضر) از
پخش دریافت
شده است
مشخص
میکند.
* `x-mcast-ll`: مقدار
بولی (boolean)، در
صورت yes نشان
میدهد که
اولین
قطعهٔ
مشخصشده
در حال حاضر
در حال
دریافت است
(سیگنالدهی
با تأخیر کم
یا low latency signaling).
* `x-mcast-loop`: مقدار
بولی (boolean)، در
صورت yes نشان
میدهد که
یک حلقه
(مانند
بازپخش pcap) در
سرویس
شناسایی
شده است -
تنها در
صورتی
بررسی
میشود که .I cloop
تنظیم شده
باشد.
به
فایلهای
کَششده
هدرهای زیر
اختصاص
داده
میشود:
* `x-mcast`: مقدار
بولی (boolean)، در
صورت yes نشان
میدهد که
فایل از یک
چندپخشی
آمده است.
اگر .I max_segs تنظیم شده باشد، رویداد حذف فایل در زنجیره فیلتر فعال خواهد شد.
حالت منبع (Source mode)
در حالت
منبع،
فیلتر
فایلها را
روی یک PID
خروجی تکی
از نوع file
ارسال
میکند.
فایلها پس
از دریافت
کامل
مخابره
میشوند، و
PID خروجی
دنبالهای
از
فایلهای
کامل را حمل
میکند.
فایلهای
تکراری
ارسال
نمیشوند
مگر اینکه
درخواست
شده باشند.
مثال
gpac -i atsc://gcache=false -o $ServiceID$/$File$:dynext
این دستور فایلها را گرفته و آنها را به صورت PIDهای خروجی که توسط فیلتر fout مصرف میشوند فوروارد میکند.
در صورت
نیاز،
میتوان با
استفاده از .I
stsi به جای یک PID
تکی، یک PID به
ازای هر TSI به
کار برد. این
کار از
ترکیب
فایلهایی
با mime typeهای
متفاوت روی
همان PID
(مانند HAS manifest و ISOBMFF)
جلوگیری
میکند.
در این
حالت، هر
بستهای که
یک فایل
جدید را
آغاز
میکند نام
فایل را به
عنوان یک
مشخصه (property) حمل
میکند. اگر
.I repair در این
حالت فعال
باشد،
ارسال
تدریجی (progressive dispatch)
فایلها
انجام
خواهد شد.
اگر .I max_segs
تنظیم شده
باشد،
رویداد حذف
فایل در
زنجیره
فیلتر فعال
خواهد شد.
نکته: گزینه .I
nbcached در این
حالت
نادیده
گرفته
میشود.
حالت مستقل (Standalone mode)
در حالت
مستقل،
فیلتر هیچ PID
خروجی
تولید
نمیکند و
فایلهای
دریافتشده
را در
دایرکتوری .I
odir مینویسد.
مثال
gpac -i atsc://:odir=output
این دستور فایلها را دریافت کرده و آنها را در دایرکتوری خروجی مینویسد.
در این حالت، فایلها صرفنظر از گزینه .I repair همیشه پس از دریافت کامل نوشته میشوند.
اگر .I max_segs
تنظیم شده
باشد،
فایلهای
قدیمی حذف
خواهند شد.
نکته: گزینه .I
nbcached در این
حالت
نادیده
گرفته
میشود.
در صورت
اتلاف یا
دریافت
ناقص سگمنت
(هنگام tune-in یا
ترمیم جزئی
HTTP)، فایلها
بهصورت
زیر وصله (patch)
میشوند:
* MPEG-2 TS: تمام
محدودههای
از دست رفته
بر روی
مرزهای ۱۸۸
بایتی
تنظیم شده و
به
بستههای NULL TS
تبدیل
میشوند.
* ISOBMFF: تمام
باکسهای
سطحبالا (top-level)
پویش
میشوند و
باکسهای
ناقص به
باکسهای free
تبدیل
میشوند،
بهجز mdat:
- اگر repair=simple
باشد، mdat در
صورت ناقص
بودن
نگهداری
میشود
(فایل خراب)،
- اگر repair=strict
باشد، mdat در
صورت ناقص
بودن به free
منتقل شده و
moof پیشین نیز
به free منتقل
میشود.
اگر گزینهٔ .I kc تنظیم شده باشد، فایلهای آسیبدیده نگهداری خواهند شد. اگر .I fullseg تنظیم نشده باشد و فایلها تنها بهصورت جزئی دریافت شوند، نگهداری خواهند شد.
نکته: سگمنتی که بهطور جزئی وصله شده باشد دیگر آسیبدیده در نظر گرفته نمیشود و بدون توجه به .I kc ارسال خواهد شد.
پیکربندی رابط (Interface setup)
در برخی
سیستمها
(OSX)، هنگام
استفاده از
بازپخش
بستههای
ماشین
مجازی (VM packet replay)،
ممکن است
لازم باشد
مسیریابی
چندپخشی (multicast)
را روی رابط
محلی خود
اجبار کنید.
برای ATSC، باید
این کار را
برای
چندپخشی
سیگنالینگ
پایه (224.0.23.60)
انجام دهید:
route add -net 224.0.23.60/32 -interface vboxnet0
سپس برای
هر سرویس
چندپخشی
درون
ترافیک
چندپخشی:
route add -net 239.255.1.4/32 -interface vboxnet0
گزینهها (تخصصی) (Options (expert)):
src (cstr): نشانی
اینترنتی (URL)
محتوای
منبع
ifce (str): رابط
پیشفرض
مورد
استفاده
برای
چندپخشی. در
صورت NULL
بودن، رابط
پیشفرض
سیستم
استفاده
خواهد شد
gcache (bool, پیشفرض: true):
مشخص
میکند که
فایلها
باید
حافظهٔ
موقت (کَش) HTTP
مربوط به GPAC
را پر کنند
یا خیر
tunein (sint, پیشفرض: -2):
شناسهٔ
سرویس (service ID)
برای
راهاندازی
اولیه.
مقادیر خاص:
* 0: عدم تنظیم
روی هیچ
سرویسی
* -1: تنظیم روی
تمام
سرویسها
* -2: تنظیم روی
نخستین
سرویس
یافتشده
* -3: شناسایی
تمام
سرویسها و
عدم پیوستن
به
چندپخشی
buffer (uint,
پیشفرض: 0x80000):
اندازهٔ
بافر
دریافت به
بایت
timeout (uint, پیشفرض:
5000): مهلت
زمانی به
میلیثانیه
که پس از آن tunein
با شکست
مواجه
میشود
nbcached (uint, پیشفرض: 8):
تعداد
سگمنتهای
نگهداریشده
در حافظهٔ
موقت به
ازای هر
سرویس
kc (bool, پیشفرض: false):
نگهداری
فایل
آسیبدیده
skipr (bool, پیشفرض: true):
صرفنظر از
فایلهای
تکراری (در
حالت
حافظهٔ
موقت
نادیده
گرفته
میشود)
stsi (bool, پیشفرض: false):
تعریف یک PID
خروجی به
ازای هر tsi/serviceID
(در حالت
حافظهٔ
موقت
نادیده
گرفته
میشود)
stats (sint, پیشفرض: 1000):
ثبت
آمارهای
عملکردی با
نرخ
دادهشده
به
میلیثانیه
(مقدار 0 آمار
را غیرفعال
میکند،
مقادیر
منفی هرگز
آمار را
بازنشانی
نمیکنند)
tsidbg (uint, پیشفرض: 0):
گردآوری
تنها اشیاء
با TSI
دادهشده
(اشکالزدایی)
max_segs (uint, پیشفرض: 0):
حداکثر
تعداد
سگمنتهای
نگهداریشده
روی دیسک
odir (str):
دایرکتوری
خروجی برای
حالت مستقل
(standalone)
reorder (bool, پیشفرض:
true): در نظر
گرفتن
اینکه
بستهها
همیشه مرتب
نیستند - اگر
false باشد، با
تغییر TOI
وضعیت شیء LCT
کامل
ارزیابی
میشود
cloop (bool, پیشفرض: false):
بررسی
حلقهها بر
اساس TOI (مورد
استفاده در
بازپخش ضبط)
rtimeout (uint, پیشفرض:
500000): مهلت
زمانی
پیشفرض به
میکروثانیه
برای
انتظار
هنگام
گردآوری
بستههای
نامرتب
fullseg (bool, پیشفرض:
false): ارسال
تنها
سگمنتهای
کامل در
حالت
حافظهٔ
موقت (برای
سایر
حالتها
همیشه true است)
repair (enum, پیشفرض:
strict): حالت
ترمیم برای
فایلهای
آسیبدیده
* no: هیچ
ترمیمی
انجام
نمیشود
* simple: ترمیم
ساده انجام
میشود
(باکسهای
ناقص mdat
نگهداری
میشوند)
* strict: باکسهای
ناقص mdat و
همچنین
باکسهای moof
پیشین از
دست خواهند
رفت
* full: ترمیم
مبتنی بر HTTP
برای تمام
بستههای
از دست
رفته
repair_urls (strl): نشانی
سرورهای
ترمیم - در
صورت
تعیین، repair بر
روی full تنظیم
میشود
max_sess (uint, پیشفرض: 1):
حداکثر
تعداد
نشستهای
همروند
ترمیم HTTP
llmode (bool, پیشفرض: true):
فعالسازی
دسترسی با
تأخیر اندک
(low-latency)
dynsel (bool, پیشفرض: true):
فعال و
غیرفعالسازی
پویای
گروههای
چندپخشی بر
اساس وضعیت
انتخاب
آنها
range_merge (uint, پیشفرض:
10000): ادغام
محدودهها
در ترمیم HTTP
در صورتی که
فاصلهٔ
آنها کمتر
از مقدار
بایت
دادهشده
باشد
minrecv (uint, پیشفرض: 20):
بارگیری
مجدد کل
فایل در
ترمیم HTTP در
صورتی که
بایتهای
دریافتی
کمتر از
درصد
دادهشده
از اندازهٔ
فایل باشد؛ 0
یعنی در
صورت بروز
هر خطایی کل
فایل
دوباره
بارگیری
شود
riso (enum, پیشفرض: none):
گزینههای
پیشرفته
برای ترمیم
ISOBMFF از طریق HTTP
* none: استفاده
از ترمیم
عادی HTTP
(ترمیم
متوالی)
* simple: ابتدا
ترمیم تمام
باکسهای
غیر mdat، سپس
ترمیم mdat
بهترتیب
* partial: تنها
ترمیم تمام
باکسهای
غیر mdat و باقی
گذاشتن
حفرهها در
mdat
* deps: مشابه simple و
تنها ترمیم
نمونههایی
که سایر
نمونهها
به آنها
وابستهاند
* depx: مشابه deps اما
پنهان
نکردن moof
مربوط به mdat
ناقص (صرفاً
برای
آزمایش)
ka (bool,
پیشفرض: false):
زندهنگهداشتن
سرویس در
صورت قطع
بودن
چندپخشی
chkiso (bool, پیشفرض:
false): بررسی
ساختار isobmf پس
از ترمیم
(اشکالزدایی)
توضیحات: استریمر RTP
استریمر RTP
پخش جریانی
خروجی SDP/RTP را
مدیریت
میکند.
حالت SDP (SDP mode)
هنگامی که نشانی اینترنتی (URL) مقصد یک SDP باشد، فیلتر یک SDP را روی یک PID فایلی خروجی میدهد و بستههای RTP را از طریق UDP، با شروع از .I port مشخصشده، پخش جریانی میکند.
حالت RTP مستقیم (Direct RTP mode)
هنگامی که
نشانی
اینترنتی
مقصد از طرح
پروتکل rtp://IP:PORT
استفاده
میکند،
فیلتر هیچ
SDPای خروجی
نمیدهد و
یک ورودی
منفرد را از
طریق RTP، با
استفاده از
PORT مشخصشده
در نشانی
اینترنتی
مقصد یا
اولین .I port
پیکربندیشده،
پخش جریانی
میکند.
در این
حالت،
معمولاً
نیاز است که
قالب مد نظر
با استفاده
از .I ext یا .I mime
مشخص شود.
مثال
gpac -i src -o rtp://localhost:1234/:ext=ts
این دستور مشخص میکند که استریمر RTP انتظار یک مالتیپلاکس MPEG-2 TS را به عنوان ورودی دارد.
بستههای RTP (RTP Packets)
بستههای
RTP تولیدشده
دارای
حداکثر بار
داده (payload)
تعیینشده
توسط گزینه .I
mtu هستند
(بسته IP
برابر با MTU +
۴۰ بایت از
سرآیندهای
IP+UDP+RTP خواهد
بود).
الگوریتم
زمانبندی
همزمان (real-time)
به این صورت
عمل میکند:
- ابتدا
مقداردهی
اولیه ساعت
با:
- محاسبه
کوچکترین
برچسب
زمانی (timestamp)
برای تمام
PIDهای ورودی
- نگاشت این
زمان رسانه
به ساعت
سیستم
- تعیین
زودترین
بسته برای
ارسال بعدی
روی هر PID
ورودی، با
افزودن .I delay در
صورت وجود
- در نهایت
مقایسه
برچسب
زمانی
نگاشتشده
بسته TS با
ساعت سیستم
SC. هرگاه TS - SC
کمتر از .I tt
باشد،
بستههای RTP
مربوط به
بسته مبدأ
ارسال
میشوند
این فیلتر اتمام مهلت زمانی (timeout) پروتکل RTCP را بررسی نمیکند و تا زمانی که تمام PIDهای ورودی به پایان جریان برسند، اجرا خواهد شد.
گزینهها (تخصصی) (OPTIONS)
ip (str): نشانی IP
مقصد (مقدار
NULL برابر با 127.0.0.1
است)
port (uint, default: 7000): پورت
برای اولین
جریان در
نشست
loop (bool, default: false): تکرار
حلقهای
همه
جریانها
در نشست
(بسته به نوع
منبع همیشه
امکانپذیر
نیست)
mpeg4 (bool, default: false): ارسال
تمام
جریانها
با استفاده
از قالب بار
داده عمومی
MPEG-4 در صورت
امکان
mtu (uint, default: 1460): اندازه
MTU پروتکل RTP به
بایت
ttl (uint, default: 2): طول عمر
(TTL) برای
بستههای
چندپخشی (multicast)
ifce (str): رابط شبکه
پیشفرض
برای
استفاده
payt (uint, default: 96, minmax: 96-127): نوع
بار داده (payload type)
برای
استفاده در
پیکربندیهای
رمزگشای
پویا
delay (sint, default: 0): تأخیر
ارسال برای
بسته (مقدار
منفی به
معنی ارسال
زودهنگامتر
است)
tt (uint, default: 1000): میزان
رواداری
زمانی (time tolerance) به
میکروثانیه.
هرگاه زمان
زمانبندی
منهای زمان
واقعی کمتر
از این
مقدار
باشد، بسته
بلافاصله
ارسال
میشود
runfor (sint, default: -1): اجرا به
مدتزمان
دادهشده
به
میلیثانیه.
مقدار منفی
به معنی
اجرای
همیشگی (در
صورت loop) یا
مدتزمان
منبع است، 0
تنها sdp را
خروجی
میدهد
tso (sint, default: -1): تنظیم
آفست برچسب
زمانی به
میکروثانیه.
مقدار منفی
به معنی
برچسب
زمانی
اولیه
تصادفی است
xps (bool, default: false): اجبار
به تزریق
مجموعه
پارامترها
(parameter set) در هر SAP. در
صورت عدم
تنظیم،
تنها در
صورتی
تزریق
میشود که
با موارد
موجود در SDP
متفاوت
باشد
latm (bool, default: false):
استفاده از
latm برای قالب
بار داده AAC
dst (cstr): نشانی
اینترنتی (URL)
برای حالت RTP
مستقیم
ext (str): پسوند
فایل برای
حالت RTP
مستقیم
mime (cstr): تنظیم نوع
mime برای حالت RTP
مستقیم
speed (dbl, default: 1.0): تنظیم
سرعت پخش
جریانی. اگر
منفی باشد و
start برابر با 0
باشد، start روی -1
تنظیم
میشود
start (dbl, default: 0.0): تنظیم
آفست شروع
پخش جریانی.
مقدار منفی
به معنی
درصدی از
مدتزمان
رسانه است
که در آن -1
برابر با کل
مدتزمان
است
rtspout
توضیحات: سرور RTSP
سرور RTSP
پروتکل RTSP 1.0 را
بهصورت
جزئی
پیادهسازی
میکند،
همراه با
پشتیبانی
از OPTIONS، DESCRIBE، SETUP، PLAY،
PAUSE و TEARDOWN.
محدودههای
PLAY چندگانه
پشتیبانی
نمیشوند،
پایان
محدوده PLAY
پشتیبانی
نمیشود،
محدوده PAUSE
پشتیبانی
نمیشود.
تنها کنترل
تجمیعی (aggregated control)
برای PLAY و PAUSE
پشتیبانی
میشود،
عملگر PAUSE/PLAY روی
یک جریان
مجزا
پشتیبانی
نمیشود.
سرور فقط
روی TCP اجرا
میشود و
درخواستها
را به ترتیب
پردازش
میکند: تا
زمانی که
پاسخ قبلی
ارسال
نشود،
دستورات
بعدی را
بررسی
نخواهد کرد.
سرور هم از
تحویل RTP روی UDP
و هم از
تحویل RTP
درهمآمیخته
(interleaved) روی RTSP
پشتیبانی
میکند.
الگوریتم
زمانبندی
و
گزینههای RTP
همانند
فیلتر
خروجی RTP
هستند،
دستور gpac -h rtpout را
ببینید.
سرور در
صورتی که به
مدت .I timeout ثانیه
هیچ ترافیک
RTCPای دریافت
نشود،
نشستهای
پخش جریانی
UDP را قطع
خواهد کرد.
سرور میتواند با مشخص کردن .I cert و .I pkey روی TLS اجرا شود، که در این حالت .I port پیشفرض 322 است.
فیلتر
میتواند
با تعیین
گزینهٔ .I dst
بهعنوان
یک فیلتر
خروجی ساده
عمل کند:
gpac -i source -o rtsp://myip/sessionname
gpac -i source -o rtsp://myip/sessionname
در این حالت، تنها یک نشست (session) امکانپذیر است. امکان تکرار حلقهای (.I loop) منبع یا منابع ورودی وجود دارد.
حالت سرور (Server mode)
فیلتر
میتواند
با تعیین
گزینهٔ .I mounts
جهت مشخص
کردن
مسیرهای
فایل
چندرسانهای
برای
سرویسدهی،
بهعنوان
یک سرور RTSP
عادی عمل
کند:
gpac rtspout:mounts=mydir1,mydir2
در این حالت، محتوای RES از هر یک از دایرکتوریهای مشخصشده بهصورت rtsp://SERVER/RES در دسترس قرار میگیرد
گزینهٔ .I mounts
همچنین
میتواند
فایل(های)
قوانین
دسترسی را
مشخص کند، gpac -h
creds را ببینید.
هنگام
استفاده از
قوانین:
- اگر یک
دایرکتوری
دارای
قاعدهٔ name
باشد، در URL
استفاده
خواهد شد
- در غیر این
صورت،
دایرکتوری
مستقیماً
در زیر
ریشهٔ سرور /
در دسترس
است
- فقط دسترسی
خواندن و
مجوزهای
چندپخشی (multicast)
بررسی
میشوند
مثال
[foodir]
name=bar
محتوای RES این دایرکتوری بهصورت rtsp://SERVER/bar/RES ارائه میشود.
در این
حالت، با
تنظیم
گزینهٔ .I dynurl،
امکان
بارگذاری
هر منبع
پشتیبانیشده
توسط gpac وجود
دارد.
نحو مورد
انتظار
برای URLهای
پویای RTSP
بهصورت
rtsp://servername/?URL1[&URLN] یا
rtsp://servername/@URL1[@URLN] است
هر URL
میتواند
مطلق یا
محلی باشد،
که در این
صورت نسبت
به نقطه(های)
اتصال (mount point)
بازگشایی
میشود.
مثال
gpac -i rtsp://localhost/?pipe://mynamepipe&myfile.mp4 [dst filters]
سرور این URL
را در یک
نشست جدید
شامل
جریانهای
myfile.mp4 و
جریانهای
لولهٔ mynamepipe
بازگشایی
خواهد کرد.
هنگام
تنظیم .I runfor در
حالت سرور،
سرور پس از
بسته شدن
آخرین نشست
خارج خواهد
شد.
پارامتر name=VAL
برای تخصیص
نام نشست در
صورت
استفاده از
آینهسازی
چندپخشی (multicast
mirroring) رزرو شده
است.
مثال
gpac -i rtsp://localhost/?name=live?pipe://mynamepipe&myfile.mp4 [dst
filters]
استفاده
از URLهای
پویا را
همچنین
میتوان با
استفاده از
دایرکتوری
خاص $dynurl در یک
فایل
قوانین
دسترسی
پیکربندی
کرد.
EX[$dynurl]
ru=foo
این کار
استفاده از
URLهای پویا
را تنها
برای کاربر
foo مجاز
میکند.
نکته: اگر .I dynurl تنظیم شود، برای تمام کاربران و بدون احراز هویت فعال میگردد.
چندپخشی (Multicasting)
در هر دو
حالت، در
صورتی که
گزینهٔ .I mcast
روی on یا mirror
باشد،
کلاینتها
میتوانند
چندپخشی را
راهاندازی
کنند.
هنگامی که .I mcast
روی حالت mirror
تنظیم شده
باشد، هر
دستور DESCRIBE روی
منبعی که از
قبل از طریق
یک نشست
چندپخشی
تحویل داده
میشود، از
همان
چندپخشی
استفاده
خواهد کرد.
در نتیجه،
برای چنین
نشستهایی
تنها
متدهای DESCRIBE
پردازش
میشوند و
سایر متدها
Unauthorized را
بازمیگردانند.
در حالت سرور، چندپخشی را میتوان بهازای هر دایرکتوریِ خواندن با استفاده از قاعدهٔ دسترسی mcast در پیکربندی دایرکتوری فعال کرد - gpac -h creds را ببینید.
تونل HTTP (HTTP Tunnel)
حالت سرور
بهطور
پیشفرض از
مدیریت RTSP از
طریق تونل HTTP
پشتیبانی
میکند. این
قابلیت را
میتوان با
استفاده از .I
htun غیرفعال
کرد.
این تونل با
مشخصات QT
سازگار است
و تنها از
تونلهای HTTP 1.0
و 1.1
پشتیبانی
میشود.
گزینهها (تخصصی) (Options (expert)):
dst (cstr): مکان
منبع مقصد
port (uint، پیشفرض:
554): درگاه
سرور
firstport (uint،
پیشفرض: 6000):
درگاه برای
نخستین
جریان در
نشست
mtu (uint، پیشفرض:
1460): اندازهٔ RTP MTU
به بایت
ttl (uint، پیشفرض:
0): طول عمر (TTL)
برای
بستههای
چندپخشی
(مقدار 0 از TTL
درخواستی
کلاینت یا 1
استفاده
میکند)
ifce (str): رابط
شبکهٔ
پیشفرض
برای
استفاده
payt (uint، پیشفرض:
96، minmax: 96-127): نوع
بار داده (payload type)
برای
استفاده در
پیکربندیهای
رمزگشای
پویا
mpeg4 (bool، پیشفرض:
false): در صورت
امکان،
ارسال تمام
جریانها
با استفاده
از قالب بار
دادهٔ
عمومی MPEG-4
delay (sint، پیشفرض:
0): تأخیر
ارسال برای
بسته (مقدار
منفی به
معنی ارسال
زودتر است)
tt (uint، پیشفرض:
1000): رواداری
زمانی به
میکروثانیه
(هرگاه زمان
زمانبندی
منهای زمان
واقعی کمتر
از این
مقدار
باشد، بسته
بلافاصله
ارسال
میشود)
runfor (sint، پیشفرض:
-1): اجرای
نشست برای
مدتزمان
دادهشده
به
میلیثانیه.
مقدار منفی
به معنی
اجرای
همیشگی در
صورت loop یا
مدتزمان
منبع است؛
مقدار 0 فقط sdp
را در خروجی
قرار
میدهد
tso (sint، پیشفرض:
-1): تنظیم
آفست برچسب
زمانی به
میکروثانیه
(مقدار منفی
به معنی
برچسب
زمانی
اولیهٔ
تصادفی است)
xps (bool، پیشفرض:
false): اجبار به
تزریق
مجموعه
پارامترها
در هر SAP. اگر
تنظیم
نشود، فقط
در صورت
تفاوت با
موارد SDP
تزریق
میشود
latm (bool، پیشفرض:
false): استفاده
از latm برای
قالب بار
دادهٔ AAC
mounts (strl): فهرست
دایرکتوریها
جهت ارائه
در حالت
سرور
block_size (uint،
پیشفرض: 10000):
اندازهٔ
بلوک
استفادهشده
برای
خواندن
سوکت TCP
maxc (uint، پیشفرض:
100): حداکثر
تعداد
اتصالات
timeout (uint،
پیشفرض: 20):
زمان انقضا
به ثانیه
برای
نشستهای
غیرفعال (0
زمان انقضا
را غیرفعال
میکند)
user_agent (str،
پیشفرض: $GUA):
رشتهٔ عامل
کاربر (user agent)،
بهطور
پیشفرض از
ترجیحات GPAC
تعیین
میشود
close (bool، پیشفرض:
false): بستن
اتصال RTSP پس
از هر
درخواست،
مگر در
مواقعی که RTP over
RTSP استفاده
شود
loop (bool، پیشفرض:
false): تکرار
حلقهای
تمام
جریانها
در نشست
(بسته به نوع
منبع همیشه
امکانپذیر
نیست)
dynurl (bool، پیشفرض:
false): اجازه به
سرهمبندی
پویای
سرویس
mcast (enum، پیشفرض:
off): کنترل
راهاندازی
چندپخشی یک
نشست
* off:
کلاینتها
هرگز مجاز
به ایجاد
چندپخشی
نیستند
* on: کلاینتها
میتوانند
نشستهای
چندپخشی
ایجاد کنند
* mirror:
کلاینتها
میتوانند
یک نشست
چندپخشی
ایجاد کنند.
هر درخواست
بعدی به
همان URL از آن
نشست
چندپخشی
استفاده
خواهد کرد
quit (bool،
پیشفرض: false):
خروج از
سرور پس از
پایان
نخستین
نشست (جهت
مقاصد
آزمایشی)
htun (bool، پیشفرض:
true):
فعالسازی
RTSP از طریق
تونل HTTP
trp (enum، پیشفرض:
both): حالت
انتقال
* both: اجازه به
ترافیک TCP یا UDP
* udp: تنها
اجازه به
ترافیک UDP
* tcp: تنها
اجازه به
ترافیک TCP
cert (str): فایل
گواهی با
قالب PEM جهت
استفاده در
حالت TLS
pkey (str): فایل کلید
خصوصی با
قالب PEM جهت
استفاده در
حالت TLS
توضیحات: سرور HTTP
فیلتر
خروجی HTTP
میتواند
به این
صورتها
عمل کند:
- یک سرور HTTP
ساده
- یک سینک (sink)
سرور HTTP
- یک سینک
فایل سرور HTTP
- یک سینک
کلاینت HTTP
- یک منبع (source)
سرور HTTP
سرور در
حال حاضر
متدهای GET، HEAD،
PUT، POST، DELETE و
پشتیبانی
اولیه از OPTIONS
را مدیریت
میکند.
محدودههای
بایتی
منفرد یا
چندگانه (byte ranges)
برای هر دو
متد GET و PUT/POST، در
تمام
حالتهای
سرور
پشتیبانی
میشوند.
- برای GET،
بدنه حاصل
یک بدنه
تکبخشی
تشکیلشده
از
محدودههای
بایتی
بههمپیوسته
طبق
درخواست
است (بدون
بررسی
همپوشانی).
- برای PUT/POST،
دادههای
دریافتی بر
اساس
محدودههای
بایتی
مشخصشده
در درخواست
کلاینت به
فایل مقصد
ارسال
میشوند.
هشدار: درخواست partial PUT با RFC2616 سازگار است اما با RFC7230 سازگار نیست. متد PATCH هنوز در GPAC پیادهسازی نشده است.
هنگامی که
یک
دایرکتوری
خواندنی
منفرد مشخص
شده باشد،
ریشه سرور /
محتوای این
دایرکتوری
است.
هنگامی که
چندین
دایرکتوری
خواندنی
مشخص شده
باشند،
ریشه سرور /
شامل فهرست
نقاط اتصال
(mount points) به همراه
نام
دایرکتوریهای
آنها خواهد
بود.
هنگامی که
یک
دایرکتوری
نوشتنی
مشخص شده
باشد، نام
منبع
بارگذاری،
فایلی را در
این
دایرکتوری
مشخص
میکند (نام
دایرکتوری
نوشتنی در URL
وجود
ندارد).
هشدار: فایلهای بارگذاریشده یا ایجادشده در دایرکتوری نوشتنی، همیشه در حالتهای غیراتمیک (non-atomic) ایجاد میشوند.
یک فایل
قوانین
دایرکتوری
(رجوع کنید
به gpac -h creds)
میتواند
در .I rdirs مشخص
شود، اما در
.I wdir نه. هنگامی
که از
قوانین
استفاده
میشود:
- اگر یک
دایرکتوری
دارای
قانون
نامگذاری (name rule)
باشد، در URL
استفاده
خواهد شد
- در غیر این
صورت،
دایرکتوری
مستقیماً
زیر ریشه
سرور / در
دسترس است
- مجوزهای
دسترسی
خواندن و
نوشتن
بررسی
میشوند
مثال
[foodir]
name=bar
محتوای RES این دایرکتوری به صورت http://SERVER/bar/RES ارائه میشود.
برای
احراز هویت
سرویسهای
مدیریتشده
توسط
بایندینگها
(bindings)، از یک
دایرکتوری
ناموجود و
نامی که
احراز هویت
را توصیف
میکند
استفاده
کنید.
مثال
[NonExistingDir]
name=service_root
درخواستها در قالب http://SERVER/service_root/* با این قانون احراز هویت خواهند شد.
فهرستبندی
را میتوان
با استفاده
از .I dlist روی
سرور فعال
کرد.
در صورت
غیرفعال
بودن،
عملیات GET
روی یک
دایرکتوری
با شکست
مواجه
میشود.
در صورت
فعال بودن،
عملیات GET
روی یک
دایرکتوری
یک فهرست HTML
ساده از
محتوا را با
الهام از Apache
برمیگرداند.
هدرهای سفارشی را میتوان با استفاده از .I hdrs مشخص کرد؛ آنها بر تمامی درخواستها اعمال میشوند. برای کنترل پیشرفتهتر روی درخواستها، از یک بایندینگ javascript استفاده کنید (به .I js و howtos مراجعه کنید).
فایلهای متنی در صورتی که کلاینت این رمزگذاریها را بپذیرد، با استفاده از gzip یا deflate فشرده میشوند، مگر اینکه .I zmax برابر با 0 تنظیم شده باشد.
سرور HTTP ساده (Simple HTTP server)
در این
حالت،
فیلتر به
هیچ اتصال
ورودی نیاز
ندارد و
تمامی
فایلهای
موجود در
دایرکتوریهای
ارائهشده
توسط .I rdirs را در
دسترس قرار
میدهد.
متدهای PUT و POST
تنها در
صورتی
پشتیبانی
میشوند که
یک
دایرکتوری
نوشتنی
توسط گزینه .I
wdir مشخص شده
باشد.
مثال
gpac httpout:rdirs=outcoming
این دستور یک سرور فقط-خواندنی را راهاندازی میکند.
مثال
gpac httpout:wdir=incoming
این دستور یک سرور فقط-نوشتنی را راهاندازی میکند.
مثال
gpac httpout:rdirs=outcoming:wdir=incoming:port=8080
این دستور یک سرور خواندنی-نوشتنی را راهاندازی میکند که روی .I port 8080 اجرا میشود.
در این
حالت،
فیلتر PIDهای
ورودی را به
کلاینتهای
متصل
فوروارد
میکند و در
صورتی که
هیچ
کلاینتی
متصل
نباشد،
دادهها را
دور
میریزد
مگر اینکه .I hold
مشخص شده
باشد.
فیلتر در
این حالت از
هیچ
دایرکتوری
خواندنی
استفاده
نمیکند.
این حالت
بیشتر برای
راهاندازی
استریم
زندهٔ HTTP
نشستهای
رسانهای
مانند MP3، MPEG-2 TS
یا سایر
نمایشهای
مالتیپلکسشده
مفید است:
gpac -i MP3_SOURCE -o http://localhost/live.mp3 --hold
در این
مثال، سرور
منتظر
درخواستهای
کلاینت روی
/live.mp3 میماند و
سپس هر
بستهٔ
ورودی را به
تمامی
کلاینتهای
متصل ارسال
(push) میکند.
اگر منبع
بیدرنگ (real-time)
نباشد،
میتوانید
یک فیلتر reframer
را برای
تنظیم
بیدرنگ
تزریق کنید.
مثال
gpac -i MP3_SOURCE reframer:rt=on -o http://localhost/live.mp3
در این مثال، سرور هر بستهٔ ورودی را به تمام کلاینتهای متصل ارسال میکند، یا در صورت عدم وجود کلاینت متصل، بسته را دور میاندازد.
در این
حالت،
فرادادههای
ICECast را
میتوان با
استفاده از .I
ice درج کرد.
مقادیر
پیشفرض
درجشده
عبارتند از
ice-audio-info، icy-br، icy-pub
(تنظیمشده
روی 1) و در
صورت تنظیم
بودن ویژگی
ServiceName ورودی،
مقدار icy-name.
سرور
همچنین به
دنبال هر
ویژگی با
نام ice-* روی PID
ورودی
میگردد و
آنها را
تزریق
میکند.
مثال
gpac -i source.mp3:#ice-Genre=CoolRock -o http://IP/live.mp3 --ice
این کار
هدر ice-Genre: CoolRock را
در پاسخ
تزریق
خواهد کرد.
به محض
ارسال کامل
یک فایل
ورودی، آن
فایل دیگر
برای
دانلود در
دسترس
نخواهد بود
مگر اینکه .I reopen
تنظیم شده
باشد و PID
ورودی
خاتمه
نیافته
باشد.
این حالت نباید با مالتیپلکسرهای چندفایلی مانند DASH یا HLS استفاده شود.
سینک فایل سرور HTTP (HTTP server file sink)
در این
حالت،
فیلتر PIDهای
ورودی را در
فایلهایی
درون
نخستین
دایرکتوری
خواندن
مشخصشده
مینویسد و
به عنوان یک
سینک خروجی
فایل عمل
میکند.
فیلتر در
این حالت از
یک
دایرکتوری
خواندن
استفاده
میکند که
باید قابل
نوشتن باشد.
به محض
دریافت
درخواست GET
کلاینت،
سرور بررسی
میکند که
آیا URL
درخواستی
با نام
فایلی که
هماکنون
توسط سرور
در حال
نوشتن است
مطابقت
دارد یا خیر.
- اگر چنین
باشد، سرور:
- محتوا را با
استفاده از
حالت
انتقال
تکهای HTTP (chunk transfer
mode)، با شروع
از آنچه
پیشتر روی
دیسک نوشته
شده است
ارسال
میکند
- دادههای
باقیمانده
را به محض
دریافت و
همزمان با
نوشتن روی
دیسک، تا
زمان تکمیل
فایل منبع
به کلاینت
ارسال (push)
میکند
- در غیر این
صورت، سرور
به سادگی
فایل را از
روی دیسک
همانند یک
نشست عادی
HTTP، بدون
انتقال
تکهای
ارسال
خواهد کرد.
این حالت
معمولاً
برای سرور
مبدأ در
نشستهای HAS
استفاده
میشود؛
جایی که
ممکن است
کلاینتها
فایلها را
همزمان با
تولید شدن
آنها
درخواست
کنند (DASH با
تأخیر کم).
مثال
gpac -i SOURCE reframer:rt=on -o http://localhost:8080/live.mpd --rdirs=temp
--dmode=dynamic --cdur=0.1
در این مثال، یک نشست پویای بیدرنگ DASH با تکههای 100ms ایجاد میشود که فایلها را در temp مینویسد. کلاینتی که به لبهٔ زنده متصل میشود، قطعات را به محض تولید با استفاده از انتقال تکهای HTTP دریافت خواهد کرد.
سرور
میتواند
با تنظیم
دایرکتوری
خواندن روی
gmem،
فایلهای
ورودی را در
حالت حافظه
ذخیره کند.
در این
حالت، .I max_cache_segs
همیشه
حداقل 1 است.
اگر مقدار
N در .I max_cache_segs
برابر با 0
نباشد، هر PID
ورودی
حداکثر
مقادیر زیر
را ذخیره
خواهد کرد:
- به اندازهٔ
MIN(N, time-shift depth) فایل در
صورت
ذخیرهسازی
در حافظه
- به اندازهٔ -N
فایل در
صورت
ذخیرهسازی
محلی و منفی
بودن N
- به اندازهٔ
MAX(N, time-shift depth) فایل در
صورت
ذخیرهسازی
محلی و مثبت
بودن N
- در غیر این
صورت
نامحدود
(فایلها به
صورت محلی
ذخیره شده
باشند، N
مثبت باشد و
اطلاعات time-shift
موجود
نباشد)
سینک کلاینت HTTP (HTTP client sink)
در این
حالت،
فیلتر
دادههای
PIDهای ورودی
را با
استفاده از
PUT (یا POST در
صورتی که .I post
تنظیم شده
باشد) در
سرور راه
دور
بارگذاری
میکند.
این حالت
باید
صراحتاً با
استفاده از .I
hmode فعال شود.
فیلتر در
این حالت از
هیچ
دایرکتوری
خواندن یا
نوشتنی
استفاده
نمیکند.
مثال
gpac -i SOURCE -o http://targethost:8080/live.mpd:gpac:hmode=push
در این مثال، فیلتر متدهای PUT را به سرور در حال اجرا روی .I port 8080 در مکان targethost (آدرس IP یا نام) ارسال میکند.
منبع سرور HTTP (HTTP server source)
در این
حالت، سرور
به جای یک
سینک به
عنوان یک
منبع عمل
میکند. این
سرور
متدهای
دریافتی PUT
یا POST را به
عنوان PIDهای
خروجی
اعلان
میکند
این حالت
باید
صراحتاً با
استفاده از .I
hmode فعال شود.
فیلتر در
این حالت از
هیچ
دایرکتوری
خواندن یا
نوشتنی
استفاده
نمیکند، و
دادههای
بارگذاریشده
توسط سرور
ذخیره
نمیشوند.
مثال
gpac httpout:hmode=source vout aout
در این مثال، فیلتر تلاش میکند فایلهای بارگذاریشده را از طریق خروجی ویدیو و صدا پخش کند.
سرور
میتواند
برای تمام
حالتهای
سرور بر
بستر TLS (https)
اجرا شود. TLS
با تعیین
گزینههای .I
cert و .I pkey فعال
میشود.
هر دو فایل
گواهی و
کلید باید
در قالب PEM
باشند.
سرور در حال
حاضر فقط در
یکی از دو
حالت HTTPS یا HTTP
کار میکند
و
نمیتواند
هر دو حالت
را بهطور
همزمان
اجرا کند.
برای این
منظور باید
از دو فیلتر
httpout استفاده
کنید، یکی
در حالت HTTPS و
دیگری در
حالت HTTP.
چندین مقصد روی یک سرور (Multiple destinations on single server)
هنگام
اجرا در
حالت سرور،
میتوان از
چندین
خروجی HTTP با
URL/پورت
یکسان
استفاده
کرد:
- اولین
فیلتر
خروجی HTTP
بارگذاریشده
با URL/پورت
یکسان،
مجدداً
استفاده
خواهد شد
- تمام
گزینههای
httpout فیلترهای
بعدی httpout، به
جز .I dst نادیده
گرفته
خواهند شد؛
سایر
گزینهها
طبق روال
معمول به
ارث برده
میشوند
مثال
gpac -i dash.mpd dashin:forward=file:FID=D1 dashin:forward=segb:FID=D2 -o
http://localhost:80/live.mpd:SID=D1:rdirs=dash -o
http://localhost:80/live_rw.mpd:SID=D2:sigfrag
این دستور
کارهای زیر
را انجام
میدهد:
- بارگذاری
سرور HTTP و
فوروارد
کردن نشست dash
(از طریق D1) به
این سرور با
استفاده از
live.mpd به عنوان
نام
مانیفست
- استفاده
مجدد از
سرور HTTP و
بازتولید
مانیفست (از
طریق D2 و
گزینه sigfrag)، با
استفاده از
live_rw.mpd به عنوان
نام
مانیفست
گزینهها (تخصصی) (Options (expert)):
dst (cstr): مکان
منبع مقصد
port (uintl, پیشفرض: 0):
پورت سرور
ifce (str): رابط شبکه
پیشفرض
برای
استفاده
rdirs (strl): فهرست
دایرکتوریها
برای
دسترسی
خواندن
wdir (str):
دایرکتوری
برای
دسترسی
نوشتن
cert (str): فایل
گواهی در
قالب PEM برای
استفاده در
حالت TLS
pkey (str): فایل کلید
خصوصی در
قالب PEM برای
استفاده در
حالت TLS
block_size (uint, پیشفرض:
10000): اندازه
بلوک مورد
استفاده
برای
خواندن و
نوشتن سوکت
TCP
user_agent (str, پیشفرض:
$GUA): رشته user agent،
بهطور
پیشفرض از
تنظیمات
ترجیحی GPAC حل
میشود
close (bool, پیشفرض: false):
بستن اتصال
HTTP پس از هر
درخواست
maxc (uint, پیشفرض: 100):
حداکثر
تعداد
اتصالها، 0
یعنی
نامحدود
maxp (uint, پیشفرض: 6):
حداکثر
تعداد
اتصالها
برای یک
همتا (0 یعنی
نامحدود)
cache_control (str): تعیین
رشته Cache-Control
برای
افزودن
(مقدار none
کنترل کش و ETag
را غیرفعال
میکند)
hold (bool, پیشفرض: false):
نگهداشتن
بستهها تا
زمانی که یک
کلاینت
متصل شود
hmode (enum, پیشفرض:
default): حالت
عملیاتی
فیلتر، در
صورت تنظیم .I
wdir نادیده
گرفته
میشود
* default: اجرا در
حالت سرور
* push: اجرا در
حالت
کلاینت با
استفاده از
PUT یا POST
* source: استفاده
از سرور به
عنوان
فیلتر منبع
روی PUT/POST
دریافتی
timeout (uint,
پیشفرض: 30):
زمان انقضا
(مهلت زمانی)
بر حسب
ثانیه برای
اتصالهای
پایدار (0
مهلت زمانی
را غیرفعال
میکند)
ext (cstr): تنظیم
پسوند برای
تفکیک
گراف،
صرفنظر از
پسوند فایل
mime (cstr): تنظیم نوع
mime برای
تفکیک گراف
quit (bool, پیشفرض: false):
خروج از
سرور پس از
پایان تمام
PIDهای ورودی
و قطع اتصال
کلاینت
(برای اهداف
آزمایشی)
post (bool, پیشفرض: false):
استفاده از
POST به جای PUT
برای
بارگذاری
فایلها
dlist (bool, پیشفرض: false):
فعالسازی
فهرستبندی
HTML برای
درخواستهای
GET روی
دایرکتوریها
sutc (bool, پیشفرض: false):
درج UTC سرور
در هدرهای
پاسخ به
صورت Server-UTC: VAL_IN_MS
cors (enum, پیشفرض: auto):
درج هدر CORS
برای مجاز
کردن تمام
دامنهها
* off:
غیرفعالسازی
CORS
* on: فعالسازی
CORS
* auto:
فعالسازی
CORS در صورت
یافت شدن Origin
در
درخواست
reqlog (str): ارائه
لاگ کوتاهی
از
درخواستهای
مشخصشده
در این
گزینه
(فهرست
جداشده با
کاما، * برای
همه)
صرفنظر از
تنظیمات
لاگ HTTP. مقدار REC
شروع/پایان
نوشتن فایل
را ثبت
میکند. در
صورت تنظیم
پیشوند -،
پایان
درخواست
لاگ
نمیشود
ice (bool, پیشفرض: false):
درج
فراداده ICE
در هدرهای
پاسخ در
حالت sink
max_client_errors (uint,
پیشفرض: 20):
قطع اجباری
اتصال پس از
تعداد
مشخصی خطای
متوالی از
کلاینت HTTP 1.1 (در
H/2 یا در صورت
تنظیم close
نادیده
گرفته
میشود)
max_cache_segs (sint,
پیشفرض: 5):
حداکثر
تعداد
قطعههای
کششده به
ازای هر
کیفیت HAS
(راهنمای
فیلتر را
ببینید)
reopen (bool, پیشفرض:
false): در حالت
سرور بدون
دایرکتوری
خواندن،
پذیرش
درخواستها
روی
فایلهایی
که پیشتر
تمام
شدهاند
اما pid ورودی
آنها در
انتهای
جریان نیست
max_async_buf (uint, پیشفرض:
100000): حداکثر
اندازه
بافر
ناهمگام به
بایت هنگام
اشتراکگذاری
خروجی روی
چندین
اتصال بدون
ورودی/خروجی
فایل
blockio (bool, پیشفرض:
false): استفاده
از
ورودی/خروجی
مسدودکننده
در حالت push یا
source یا در حالت
سرور بدون
دایرکتوری
خواندن
ka (bool, پیشفرض: true):
زندهنگهداشتن
ورودی در
صورت بروز
شکست در
حالت push
hdrs (strl): هدرهای HTTP
اضافی برای
تزریق،
مقادیر زوج
نامها و
مقادیر فرد
مقادیر
هستند
js (str): منطق
جاوااسکریپت
برای سرور
zmax (uint, پیشفرض: 50000):
حداکثر
اندازه
غیرفشرده
مجاز برای
فشردهسازی
gzip یا deflate برای
فایلهای
متنی (تنها
در صورتی
فعال
میشود که
کلاینت آن
را مشخص
کرده باشد)،
مقدار 0
فشردهسازی
را غیرفعال
میکند
cte (bool, پیشفرض: true):
استفاده از
حالت chunked transfer-encoding در
صورت امکان
maxs (uint, پیشفرض: 50M):
حداکثر
اندازه
بارگذاری
مجاز به
بایت
norange (bool, پیشفرض:
false):
غیرفعالسازی
پشتیبانی
از بازه
بایتی در GET
(پاسخ 200 به
درخواستهای
جزئی)
شرح: استخراجکننده تایل HEVC
این فیلتر
یک PID
ویدیویی HEVC
تایلبندیشده
با قید حرکت
(motion-constrained tiled) را به N
عدد PID مستقل HEVC
تقسیم
میکند.
از فیلتر hevcmerge
برای ادغام
PID اولیه HEVC با
تایلهای
مقید به
حرکت در یک
خروجی واحد
استفاده
کنید.
بدون گزینه
hevcmerge
شرح: ادغامکننده تایل HEVC
این فیلتر
مجموعهای
از PIDهای HEVC را
در یک PID واحد
ویدیویی HEVC
تایلبندیشده
با قید حرکت
ادغام
میکند.
این فیلتر
یک شبکه
تایلبندی
با یک سطر و
به تعداد
ستونهای
مورد نیاز
ایجاد
میکند.
اگر .I mrows تنظیم
شده باشد و
تایلها به
درستی روی
شبکه نهایی
همتراز
شوند،
چندین سطر
در PPS اعلان
خواهد شد.
موقعیتیابی
تایلها
میتواند
خودکار
(ضمنی) یا
صریح باشد.
فیلتر،
پیکربندیهای
SPS و PPS مربوط به
PIDهای ورودی
را بررسی
کرده و در
صورت عدم
همترازی
هشدار
میدهد،
اما همچنان
آنها را
پردازش
خواهد کرد
مگر اینکه .I strict
تنظیم شده
باشد.
فیلتر فرض
میکند که
تمام PIDهای
ورودی
همگام
هستند
(فریمها
برچسب
زمانی
مشترک
دارند) و
فریمهای
دارای زمان
رمزگشایی
یکسان را
مجدداً
سرهم
میکند. اگر
مدتزمان
PIDها نابرابر
باشد،
فیلتر به
محض پایان
یافتن یکی
از PIDها،
فریمها را
دور
میریزد.
موقعیتیابی ضمنی (Implicit Positioning)
در
موقعیتیابی
ضمنی،
نتایج ممکن
است بر اساس
ترتیب
اعلان PIDهای
ورودی
متفاوت
باشد.
در این
حالت،
فیلتر
بهطور
خودکار
ستونهای
جدیدی را
برای
تایلهایی
که ارتفاع
آنها
مضربی از
حداکثر
ارتفاع CU
نیست،
اختصاص
میدهد.
موقعیتیابی صریح (Explicit Positioning)
در
موقعیتیابی
صریح، از
ویژگی CropOrigin در
PIDهای ورودی
برای
برپایی
شبکه تایل
استفاده
میشود. در
این حالت،
تایلها
نباید در
خروجی
نهایی
همپوشانی
داشته
باشند.
اگر CropOrigin
استفاده
شود، باید
روی تمام
منابع
ورودی
تنظیم شده
باشد.
اگر از
مختصات
مثبت
استفاده
شود، آنها
موقعیتیابی
مطلق
تایلها بر
حسب پیکسل
را مشخص
میکنند.
این مختصات
بهطور
خودکار روی
مضرب بعدی
از حداکثر
عرض و
ارتفاع CU
تنظیم
میشوند.
اگر از
مختصات
منفی
استفاده
شود، آنها
موقعیتیابی
نسبی را
مشخص
میکنند
(بهعنوان
مثال، 0x-1
نشاندهنده
قرار دادن
تایل در زیر
تایل 0x0 است).
در این
حالت،
وظیفه
فراخواننده
است که
مختصات را
طوری تنظیم
کند که تمام
تایلهای
یک ستون عرض
یکسانی
داشته
باشند و
تنها آخرین
سطر/ستون از
مقادیری که
مضرب
حداکثر
عرض/ارتفاع CU
نیستند
استفاده
کند. در صورت
عدم رعایت
این مورد،
فیلتر
اخطار داده
و متوقف
خواهد شد.
- اگر یک فضای
خالی افقی
در چیدمان
تشخیص داده
شود، یک
ستون خالی
در شبکه
تایلبندی
درج خواهد
شد.
- اگر یک فضای
خالی عمودی
در چیدمان
تشخیص داده
شود،
نادیده
گرفته
میشود.
توصیف رابطه مکانی (Spatial Relationship Description - SRD)
اگر SRDRef و SRD یا
CropOrigin روی تمام
PIDهای ورودی
تنظیم شده
باشند،
فیلتر
ویژگی SRDMap را
در PID خروجی
ایجاد
خواهد کرد.
ویژگی SRDMap
امکان
انتقال SRD
منابع
منطقی را در
PID ادغامشده
فراهم
میکند.
مقدار SRDRef در PID
خروجی
برابر با
ابعاد
ویدیوی
خروجی
تنظیم
میشود.
مقادیر
ورودی SRDRef و SRD
معمولاً در
DASH MPD مشخص
میشوند،
اما
میتوانند
بهصورت
دستی نیز به
ورودیها
اختصاص
داده شوند.
- مقدار SRDRef
ابعاد مرجع
مورد
استفاده
برای SRD
ورودی را
نشان
میدهد
(معمولاً با
ابعاد
ویدیوی
اصلی
مطابقت
دارد، اما
نه همیشه)
- مقدار SRD
ابعاد و
موقعیت
ورودی در
ویدیوی
اصلی را که
در مرجع SRDRef
ورودی بیان
شده است،
مشخص
میکند.
نیازی نیست
که
ورودیها
دارای SRDRef
یکسان
باشند
src1:SRD=0x0x640x480:SRDRef=1280x720
این نشان میدهد که src1 شامل ویدیویی واقع در 0,0 با اندازه 640x480 پیکسل در یک منبع مجازی 1280x720 پیکسل است.
مثال
src2:SRD=640x0x640x480:SRDRef=1280x720
این نشان میدهد که src1 شامل ویدیویی واقع در 640,0 با اندازه 640x480 پیکسل در یک منبع مجازی 1280x720 پیکسل است.
هر ورودی ادغامشده توسط ۸ عدد صحیح در SRDMap خروجی توصیف میشود:
- مقدار SRD منبع در SRDRef خروجی مجدداً مقیاسبندی میشود تا بخش اول (۴ عدد صحیح) از SRDMap را تشکیل دهد (یعنی: ورودی کجا قرار داشت؟)
- مکان منبع در ویدیوی بازسازیشده، بخش دوم (۴ عدد صحیح) از SRDMap را تشکیل میدهد (یعنی: پیکسلهای ورودی در کجای خروجی قرار دارند؟)
با فرض اینکه دو منبع با ابعاد 320x240 کدگذاری شده و به صورت src2 بالای src1 ادغام شوند، خروجی یک ویدیوی 320x480 با SRDMap به صورت {0,160,160,240,0,0,320,240,0,0,160,240,0,240,320,240} خواهد بود.
نکته: ورودیهای ادغامشده همیشه در SRDMap به ترتیب تایلهای مربوطهشان در جریان بیتی (bitstream) خروجی فهرست میشوند.
بهعنوان جایگزینی برای استفاده از SRD و SRDRef، میتوان ویژگی CropOrigin را روی ورودیها تعیین کرد که در این صورت:
- ویژگی CropOrigin مکان را در منبع مشخص میکند
- اندازه ورودی، اندازه در منبع را مشخص میکند و هیچ تغییر مقیاسی در مرجع انجام نمیشود
مثال
src1:CropOrigin=0x0 src1:CropOrigin=640x0
با فرض اینکه دو منبع با ابعاد 320x240 کدگذاری شده و به صورت src1 بالای src2 ادغام شوند، خروجی یک ویدیوی 320x480 با SRDMap به صورت {0,0,320,240,0,0,320,240,640,0,320,240,0,240,320,240} خواهد بود.
strict (bool, default: false): مقایسه دقیق SPS و PPS مربوط به PIDهای ورودی mrows (bool, default: false): اعلام چندین سطر در شبکه کاشیها (tile grid) در صورت امکان
rfflac
توضیحات: بازقاببند FLAC
این فیلتر فایلها/دادههای FLAC را تجزیه کرده و PID صوتی و فریمهای متناظر را در خروجی میدهد.
بهطور
پیشفرض
این
بازقاببند
تنها در
صورتی فوتر
CRC فریمها
را بررسی
میکند که
تغییری در
نرخ
نمونهبرداری
یا نگاشت
کانال
شناسایی
شود.
این رفتار
باید برای
اغلب
پیکربندیها
مناسب
باشد، اما
میتوان
بررسی CRC را
با استفاده
از .I docrc اجباری
کرد.
گزینههای تخصصی (OPTIONS (EXPERT)):
index (dbl, default: 1.0): طول
پنجره
نمایهسازی
docrc (bool, default: false): انجام
بررسی CRC پس
از هر فریم
rfmhas
توضیحات: بازقاببند جریان صوتی MPEG-H
این فیلتر
فایلها/دادههای
MHAS را تجزیه
کرده و PID
صوتی و
فریمهای
متناظر را
در خروجی
میدهد.
بهطور
پیشفرض،
فیلتر
انتظار یک
جریان MHAS با
بستههای SYNC
تنظیمشده
را دارد، در
غیر این
صورت
همگامسازی
و اتصال
اولیه (tune-in)
ناموفق
خواهد بود.
استفاده از .I
nosync=false
میتواند
به تجزیه
جریانهای
بیتی که
فاقد
بستههای SYNC
هستند کمک
کند.
رفتار
پیشفرض،
ارسال یک
جریان بیت MHAS
قاببندیشده
است. برای
تفکیک (demultiplex) به
یک MPEG-H Audio خام،
از .I mpha
استفاده
کنید.
گزینههای تخصصی (OPTIONS (EXPERT)):
index (dbl, default: 1.0): طول
پنجره
نمایهسازی
mpha (bool, default: false): تفکیک MHAS
و تنها
هدایت
فریمهای
صوتی
pcksync (uint, default: 4): تعداد
بستههای
ناشناخته
قابل تحمل
پیش از در
نظر گرفتن
از دست رفتن
همگامسازی
(sync)
nosync (bool, default: true): وضعیت
همگامسازی
اولیه
rfprores
توضیحات: بازقاببند ProRes
این فیلتر فایلها/دادههای خام ProRes را تجزیه کرده و PID تصویری و فریمهای متناظر را در خروجی میدهد.
گزینههای تخصصی (OPTIONS (EXPERT)):
fps (frac, default: 0/1000): نرخ
فریم
واردسازی (0
بهطور
پیشفرض به
FPS برگرفته
از جریان
بیت یا 25
هرتز تنظیم
میشود)
findex (bool, default: true):
نمایهسازی
فریمها؛
در صورت true
بودن،
فیلتر قادر
به کار در
حالت
بازگشت به
عقب (rewind mode)
خواهد بود
cid (str): تنظیم QT 4CC
برای رسانه
واردشده. در
صورت عدم
تنظیم،
مقدار
پیشفرض 'ap4h'
برای YUV444 و 'apch'
برای YUV422 است
notime (bool, default: false):
نادیده
گرفتن
برچسبهای
زمانی
ورودی،
بازسازی از
0
tssplit
توضیحات: تقسیمکننده MPEG-2 TS
این فیلتر
یک جریان
انتقال MPEG-2 را
به چندین
جریان
انتقال
تکبرنامهای
تقسیم
میکند.
تنها جدول PAT
بازنویسی
میشود؛
سایر
جدولها (PAT، PMT)
و جریانها
(PES) بدون
تغییر
هدایت
میشوند.
اگر .I dvb تنظیم
شده باشد،
جدولهای
سراسری DVB
مالتیپلکس
ورودی به هر
mux خروجی
هدایت
میشوند؛
در غیر این
صورت این
جدولها
دور ریخته
میشوند.
گزینههای تخصصی (OPTIONS (EXPERT)):
dvb (bool, default: true):
هدایت تمام
بستهها از
PIDهای سراسری
DVB
mux_id (sint, default: -1): تنظیم
شناسه
اولیه mux
خروجی؛
نخستین
برنامه از
mux_id، دومین از
mux_id+1 و غیره
استفاده
خواهد کرد.
در صورت عدم
تنظیم، این
مقدار
برابر با sourceMuxId*255
خواهد بود
avonly (bool, default: true): عدم
هدایت
برنامههای
فاقد مؤلفه
صوتی/تصویری
(AV)
nb_pack (uint, default: 10):
بستهبندی N
بسته پیش از
ارسال
gendts (bool, default: false): تولید
برچسبهای
زمانی روی
بستههای
خروجی بر
اساس PCR
kpad (bool, default: false):
نگهداشتن
بستههای TS
لایهگذاری
(null)
rt (bool, default: false):
فعالسازی
تنظیم
زمانواقعی
(real-time)
توضیحات: برچسبگذار زمان MPEG-2 TS
این فیلتر جریان انتقال (transport stream) ورودی MPEG-2 را بر اساس PCR مجدداً برچسبگذاری زمانی میکند.
گزینهها (تخصصی) (OPTIONS (EXPERT))
nb_pack (uint،
پیشفرض: 10):
بستهبندی N
بسته پیش از
ارسال
kpad (bool، پیشفرض:
false):
نگهداشتن
بستههای TS
لایهگذاری
(null)
rt (bool، پیشفرض:
false):
فعالسازی
تنظیم
بیدرنگ (real-time)
bsrw
توضیحات: بازنویس فراداده جریان بیت (Bitstream)
این فیلتر
برخی
فرادادههای
قالبهای
گوناگون
جریان بیت
(bitstream) را
بازنویسی
میکند.
این فیلتر
در حال حاضر
میتواند
ویژگیهای
زیر را در
جریانهای
بیت
ویدئویی
تغییر دهد:
- MPEG-4 Visual:
- نسبت ابعاد
نمونه (sample aspect ratio)
- نمایه و سطح
(profile and level)
- AVC|H264 و HEVC و VVC:
- نسبت ابعاد
نمونه (sample aspect ratio)
- نمایه،
سطح،
سازگاری
نمایه (profile, level, profile
compatibility)
- قالب
ویدئو،
دامنه کامل
ویدئو (video format, video fullrange)
- رنگهای
پایه،
مشخصات
انتقال و
ضرایب
ماتریس (یا
حذف همه
اطلاعات)
- کد زمانی (AVC|HEVC)- AV1:
- کد زمانی (timecode)
- ProRes:
- نسبت ابعاد
نمونه (sample aspect ratio)
- رنگهای
پایه،
مشخصات
انتقال و
ضرایب
ماتریس
مقادیر
بهطور
پیشفرض با -1
مقداردهی
اولیه
میشوند،
که به معنای
حفظ
اطلاعات
مربوطه (چه
موجود
باشند و چه
نباشند) در
جریان بیت
است.
یک مقدار 0/0
برای .I sar در
صورت
امکان،
اطلاعات
نسبت ابعاد
نمونه را از
جریان بیت
حذف خواهد
کرد.
این فیلتر
در حال حاضر
میتواند
ویژگیهای
زیر را در
پیکربندی
جریان
تغییر دهد،
اما نه در
جریان بیت:
* HEVC: profile IDC، profile space،
پرچمهای
سازگاری
عمومی (general compatibility flags)
* VVC: profile IDC، مشخصه
عمومی
نمایه و سطح
(general profile and level indication)
این فیلتر برای سایر کدکها و انواع رسانه در حالت عبور مستقیم (passthrough) عمل خواهد کرد.
دستکاری کد زمانی (Timecode Manipulation)
میتوان
بهطور
اختیاری .I tcxs و .I
tcxe را برای
تعیین آغاز
و پایان
دستکاری کد
زمانی
تنظیم کرد.
بهطور
پیشفرض،
فیلتر تمام
بستهها را
پردازش
خواهد کرد.
برخی
حالتها
نیازمند
تعریف .I tcsc
هستند. این
گزینه از
همان قالب
خود کد
زمانی
تبعیت
میکند (.I -.
استفاده از
مقادیر
منفی تنها
در حالت shift
معنادار
است. همچنین
میتوان .I tcsc
را روی first
تنظیم کرد
تا مقدار از
نخستین کد
زمانی
هنگام شروع
دستکاری کد
زمانی
استنتاج
شود. در این
حالت،
فیلتر هیچ
عملیاتی
انجام
نخواهد داد
مگر اینکه
یک کد زمانی
پیدا شود.
حالتها (Modes)
دستکاری
کد زمانی
چهار حالت
دارد و همه
آنها
ظرافتهای
عملیاتی
خاص خود را
دارند.
Remove
حذف تمام
کدهای
زمانی از
جریان بیت.
Insert
درج کدهای
زمانی بر
اساس CTS. اگر .I tcsc
تنظیم شده
باشد، به
عنوان آفست
کد زمانی
استفاده
خواهد شد.
این حالت
کدهای
زمانی
موجود (در
صورت وجود)
را
بازنویسی
خواهد کرد.
Shift
انتقال (Shift)
تمام کدهای
زمانی به
میزان
مقدار
تعریفشده
در .I tcsc.
این حالت
کدهای
زمانی را
تنها در
صورت وجود
داشتن
تغییر
میدهد؛
هیچ کد
زمانی
جدیدی درج
نخواهد شد.
Constant
تنظیم تمام
کدهای
زمانی روی
مقدار
تعریفشده
در .I tcsc.
مجدداً،
این حالت
کدهای
زمانی
جدیدی درج
نخواهد کرد.
UTC
برای تنظیم
کد زمانی،
از ویژگی SenderNTP،
ویژگی UTC روی
بسته یا
زمان کنونی
UTC استفاده
میکند.
این حالت
کدهای
زمانی
موجود (در
صورت وجود)
را
بازنویسی
خواهد کرد.
مثال
gpac -i in.mp4 bsrw:tc=insert [dst]
gpac -i in.mp4 bsrw:tc=insert:tcsc=TC00:00:10:00 [dst]
gpac -i in.mp4 bsrw:tc=shift:tcsc=TC00:00:10:00:tcxs=TC00:01:00:00 [dst]
گزینهها (تخصصی) (OPTIONS (expert)):
cprim (cprm، پیشفرض: -1، Enum: reserved0|BT709|undef|reserved3|BT470M|BT470G|SMPTE170|SMPTE240|FILM|BT2020|SMPTE428|SMPTE431|SMPTE432|EBU3213، قابل بهروزرسانی): رنگهای اصلی مطابق با ISO/IEC 23001-8 / 23091-2
ctfc (ctfc، پیشفرض: -1، Enum: reserved0|BT709|undef|reserved3|BT470M|BT470BG|SMPTE170|SMPTE249|Linear|Log100|Log316|IEC61966|BT1361|sRGB|BT2020_10|BT2020_12|SMPTE2084|SMPTE428|STDB67، قابل بهروزرسانی): مشخصههای انتقال رنگ مطابق با ISO/IEC 23001-8 / 23091-2
cmx (cmxc، پیشفرض: -1، Enum: GBR|BT709|undef|FCC|BT601|SMPTE170|SMPTE240|YCgCo|BT2020|BT2020cl|YDzDx، قابل بهروزرسانی): ضرایب ماتریس رنگ مطابق با ISO/IEC 23001-8 / 23091-2
sar (frac،
پیشفرض: -1/-1،
قابل
بهروزرسانی):
نسبت ابعاد
تصویر برای
بازنویسی
m4vpl (sint، پیشفرض:
-1، قابل
بهروزرسانی):
تنظیم ProfileLevel
برای
ویدیوی MPEG-4
بخش دوم
fullrange (bool،
پیشفرض: false،
قابل
بهروزرسانی):
پرچم
محدوده
کامل
ویدیویی (full range)
novsi (bool، پیشفرض:
false، قابل
بهروزرسانی):
حذف video_signal_type از VUI
در AVC|H264 و HEVC
novuitiming (bool،
پیشفرض: false،
قابل
بهروزرسانی):
حذف timing_info از VUI در
AVC|H264 و HEVC
prof (sint، پیشفرض:
-1، قابل
بهروزرسانی):
نشانگر
نمایه (profile)
برای AVC|H264
lev (sint، پیشفرض:
-1، قابل
بهروزرسانی):
نشانگر سطح
(level) برای AVC|H264، و level_idc
برای VVC
pcomp (sint، پیشفرض:
-1، قابل
بهروزرسانی):
سازگاری
نمایه برای
AVC|H264
pidc (sint، پیشفرض:
-1، قابل
بهروزرسانی):
شناسه IDC
نمایه برای
HEVC و VVC
pspace (sint، پیشفرض:
-1، قابل
بهروزرسانی):
فضای نمایه
(profile space) برای HEVC
gpcflags (sint،
پیشفرض: -1،
قابل
بهروزرسانی):
پرچمهای
سازگاری
عمومی برای
HEVC
tcxs (str، قابل
بهروزرسانی):
شروع
دستکاری کد
زمانی (timecode)
tcxe (str، قابل
بهروزرسانی):
پایان
دستکاری کد
زمانی (timecode)
tcdf (bool، پیشفرض:
false، قابل
بهروزرسانی):
استفاده از
شمارش NTSC drop-frame
برای کدهای
زمانی
tcsc (str، قابل
بهروزرسانی):
ثابت کد
زمانی برای
استفاده در
حالتهای
shift/constant
tc (enum، پیشفرض:
none، قابل
بهروزرسانی):
حالت
دستکاری کد
زمانی
* none: هیچ
تغییری
اعمال نشود
* remove: حذف کدهای
زمانی
* insert: درج کدهای
زمانی بر
اساس cts یا tcsc (در
صورت ارائه)
* shift:
جابهجایی
کدهای
زمانی بر
اساس tcsc
* constant: بازنویسی
کدهای
زمانی با
مقدار tcsc
* utc: درج کدهای
زمانی بر
اساس زمان utc
روی بسته یا
زمان
کنونی
seis (uintl، قابل
بهروزرسانی):
فهرستی از
انواع
پیامهای SEI
(مانند 4,137,144,...).
هنگام
استفاده با
rmsei، این
گزینه به
عنوان یک
فهرست سیاه
عمل میکند.
در صورت
خالی بودن،
تمام
پیامهای SEI
حذف خواهند
شد؛ در غیر
این صورت،
به عنوان یک
فهرست سفید
عمل میکند
rmsei (bool، پیشفرض:
false، قابل
بهروزرسانی):
حذف
پیامهای SEI
از جریان
بیتی برای
AVC|H264، HEVC و VVC
vidfmt (sint، پیشفرض:
-1، Enum: component|pal|ntsc|secam|mac|undef،
قابل
بهروزرسانی):
قالب
ویدیویی
برای AVC|H264، HEVC و VVC
bssplit
توضیحات: تفکیککننده جریان بیتی لایهای
این فیلتر جریان ورودی را بر اساس لایهها و زیرلایهها تفکیک میکند
این فیلتر از تفکیک جریانهای AVC|H264، HEVC و VVC پشتیبانی میکند و برای سایر انواع کدکها به صورت عبور مستقیم (pass-through) عمل مینماید.
تفکیک بر
اساس مقدار
temporalID (شروع از ۱)
و مقدار layerID
(شروع از ۰)
انجام
میشود.
برای AVC|H264،
مقدار layerID
همان مقدار
وابستگی (dependency)
است، یا در
صورت تعیین
svcqid، مقدار
کیفیت
خواهد بود.
هر جریان
ورودی بر
اساس گزینه
ltid به شرح زیر
فیلتر
میشود:
* بدون مقدار
تعیینشده:
جریان
ورودی بر
اساس layerID
تفکیک
میشود،
یعنی هر
لایه یک
خروجی
ایجاد
میکند
* `all`: جریان
ورودی بر
اساس layerID و temporalID
تفکیک
میشود،
یعنی هر {layerID,temporalID}
یک خروجی
ایجاد
میکند
* `lID`: جریان
ورودی بر
اساس مقدار
لایه lID
تفکیک شده و
temporalID نادیده
گرفته
میشود
* `.tID`: جریان
ورودی بر
اساس مقدار
زیرلایه
زمانی tID
تفکیک شده و
layerID نادیده
گرفته
میشود
* `lID.tID`: جریان
ورودی بر
اساس
مقادیر
لایه lID و
زیرلایه tID
تفکیک
میشود
نکته: مقدار 0 برای tID در ltid معادل مقدار 1 است.
میتوان
چندین
مقدار را در
ltid مشخص کرد؛
در این حالت
هر مقدار،
حداکثر
مقادیر {layerID,temporalID}
را برای
لایه جاری
تعیین
میکند.
چند مثال
روی یک
ورودی با ۲
لایه که
هرکدام
دارای ۲
زیرلایه
زمانی
هستند:
* `ltid=0.2`: این
گزینه
جریان را به
موارد زیر
تفکیک
میکند:
- یک جریان با
واحدهای NAL
به صورت {lID=0,tID=1} و
{lID=0,tID=2}
- یک جریان با
تمام
لایهها/زیرجریانهای
دیگر
* `ltid=0.1,1.1`: این
گزینه
جریان را به
موارد زیر
تفکیک
میکند:
- یک جریان با
واحدهای NAL
به صورت {lID=0,tID=1}
- یک جریان با
واحدهای NAL
به صورت {lID=0,tID=2} و
{lID=1,tID=1}
- یک جریان با
باقیمانده
واحدهای NAL
به صورت {lID=0,tID=2} و
{lID=1,tID=2}
* `ltid=0.1,0.2`: این
گزینه
جریان را به
موارد زیر
تفکیک
میکند:
- یک جریان با
واحدهای NAL
به صورت {lID=0,tID=1}
- یک جریان با
واحدهای NAL
به صورت {lID=0,tID=2}
- یک جریان با
باقیمانده
واحدهای NAL
به صورت {lID=1,tID=1} و
{lID=1,tID=2}
این فیلتر همچنین میتواند روی جریانهای DolbyVision برای AVC و HEVC جهت تفکیک جریان پایه (base stream) و DV RPU/EL استفاده شود.
این فیلتر واحدهای NAL تجمیعکننده (aggregator) یا استخراجکننده (extractor) ایجاد نمیکند.
ltid (strl): شناسه
زمانی و
لایه (temporal and layer ID)
جریانهای
خروجی
svcqid (bool، پیشفرض:
false): استفاده
از qualityID به جای
dependencyID برای
تفکیک SVC
sig_ltid (bool،
پیشفرض: false):
اعلام
بیشینه
شناسه
زمانی (max_temporal_id) و
شناسه لایه
(max_layer_id)
جریانهای
خروجی
(عمدتاً
برای
اشکالزدایی
استفاده
میشود)
bsagg
توضیحات: تجمیعکننده جریان بیتی لایهای
این فیلتر لایهها و زیرلایهها را در یک PID خروجی واحد تجمیع میکند.
این فیلتر از بازسازی جریانهای AVC|H264، HEVC و VVC پشتیبانی میکند و برای سایر انواع کدکها به صورت عبور مستقیم (passthrough) عمل میکند.
تجمیع بر
اساس مقدار
temporalID (شروع از ۱)
و مقدار layerID
(شروع از ۰)
انجام
میشود.
برای AVC|H264،
مقدار layerID
همان مقدار
وابستگی (dependency)
است، یا در
صورت تنظیم
svcqid، مقدار
کیفیت (quality)
خواهد بود.
این فیلتر همچنین میتواند در جریانهای دوگانه AVC و HEVC DolbyVision برای تجمیع جریان پایه و DV RPU/EL استفاده شود.
این فیلتر واحدهای NAL مربوط به aggregator یا extractor را بازارسال (forward) نمیکند.
گزینهها (تخصصی) (OPTIONS (EXPERT))
svcqid (bool، پیشفرض: false): استفاده از qualityID به جای dependencyID برای تفکیک SVC
ufttxt
توضیحات: بازنویس TX3G
این فیلتر یک جریان ISOBMFF TX3G منفرد را به یک جریان بدون فریم TTXT (قالب xml) تبدیل میکند.
گزینهها (تخصصی) (OPTIONS (EXPERT))
exporter (bool، پیشفرض: false): سازگاری با صادرکننده (exporter) قدیمی، نتایج استخراج را نمایش میدهد
tx3g2srt
توضیحات: تبدیل TX3G به SRT
این فیلتر یک جریان ISOBMFF TX3G منفرد را به یک جریان بدون فریم SRT تبدیل میکند.
گزینهها (تخصصی) (OPTIONS (EXPERT))
exporter (bool، پیشفرض: false): سازگاری با صادرکننده (exporter) قدیمی، نتایج استخراج را نمایش میدهد
tx3g2vtt
توضیحات: تبدیل TX3G به WebVTT
این فیلتر یک جریان ISOBMFF TX3G منفرد را به یک جریان بدون فریم WebVTT تبدیل میکند.
گزینهها (تخصصی) (OPTIONS (EXPERT))
exporter (bool، پیشفرض: false): سازگاری با صادرکننده (exporter) قدیمی، نتایج استخراج را نمایش میدهد
tx3g2ttml
توضیحات: تبدیل TX3G به TTML
این فیلتر جریان ISOBMFF TX3G را به یک جریان TTML تبدیل میکند.
هر فریم TTML خروجی یک سند کامل TTML است.
بدون گزینه
توضیحات: تبدیل WebVTT به TX3G
این فیلتر WebVTT بدون فریم (unframed) را به TX3G / QT Timed Text (قالب باینری) بازنویسی میکند.
بستههای
WebVTT بدون فریم
(unframed) شامل
نشانههای
(cue) منفرد
هستند:
- بار مفید
نشانه (cue payload) به
عنوان بار
مفید بسته (packet
payload)
- پیشوند به
عنوان
ویژگی
رشتهای
بسته vtt_pre
- شناسهٔ
نشانه (cue ID) به
عنوان
ویژگی
رشتهای
بسته vtt_cueid
- تنظیمات
نشانه (cue settings) به
عنوان
ویژگی
رشتهای
بسته vtt_settings
- زمانبندی
بسته شامل
زمانبندی
نشانه (شروع
و مدتزمان)
است
گزینهها (تخصصی) (OPTIONS (EXPERT))
fontname (str): قلم
پیشفرض
fontsize (uint،
پیشفرض: 18):
اندازهٔ
قلم
پیشفرض
rfsrt
توضیحات: بازفریمبند SRT (SRT reframer)
این فیلتر SRT بدون فریم (unframed) را به TX3G / QT Timed Text (قالب باینری) بازنویسی میکند.
یک بستهٔ SRT بدون فریم (unframed) از یک نشانهٔ منفرد SRT (SRT cue) به عنوان بار مفید بسته تشکیل شده و زمانبندی بسته شامل زمانبندی نشانه (شروع و مدتزمان) است.
گزینهها (تخصصی) (OPTIONS (EXPERT))
fontname (str): قلم
پیشفرض
fontsize (uint،
پیشفرض: 18):
اندازهٔ
قلم
پیشفرض
ttml2vtt
توضیحات: تبدیل TTML به WebVTT
این فیلتر فریمهای TTML را به WebVTT بدون فریم (unframed) تبدیل میکند.
تبدیل نسبتاً محدود است: تنها اولین div تحلیل شده و فقط قالببندی پایهای پیادهسازی شده است.
بدون گزینه
ttml2srt
توضیحات: تبدیل TTML به SRT
این فیلتر فریمهای TTML را به SRT بدون فریم (unframed) تبدیل میکند.
تبدیل نسبتاً محدود است: تنها اولین div تحلیل شده و فقط قالببندی پایهای پیادهسازی شده است.
بدون گزینه
mpeghdec
توضیحات: رمزگشای صوتی MPEG-H
این فیلتر جریانهای صوتی MPEG-H را از طریق کتابخانهٔ IIS MpeghDecoder رمزگشایی میکند.
گزینهها (تخصصی) (OPTIONS (EXPERT))
cicp_idx (uint، پیشفرض: 2): شاخص CICP چیدمان خروجی هدف (مشاهده کنید: gpac -h layouts)
ffdmx
توضیحات:
تفکیککنندهٔ
FFmpeg (FFmpeg demultiplexer)
نسخه: Lavf62.13.100
این فیلتر
یک فایل
ورودی را
تفکیک (demultiplex)
کرده یا یک
پروتکل
مبدأ را با
استفاده از
FFmpeg باز
میکند.
برای
جزئیات
بیشتر به
مستندات FFmpeg
(https://ffmpeg.org/documentation.html)
مراجعه
کنید.
برای فهرست
کردن تمام
تفکیککنندههای
پشتیبانیشده
در ساخت
کنونی GPAC
خود، از gpac -h ffdmx:*
استفاده
کنید.
این دستور
هم قالبها
و هم
پروتکلهای
ورودی
پشتیبانیشده
را فهرست
میکند.
پروتکلهای
ورودی با Description: Input
protocol فهرست
میشوند و
نام
زیرکلاس (subclass)،
طرحوارهٔ
پروتکل (protocol scheme)
را مشخص
میکند.
به عنوان
مثال، اگر ffdmx:rtmp
به عنوان
پروتکل
ورودی
فهرست شده
باشد، به
این معنی
است که
نشانیهای
اینترنتی (URL)
منبع rtmp://
پشتیبانی
میشوند.
پرچم proto
دیمالتیپلکسر
FFmpeg را
غیرفعال
کرده و
بهجای آن
از GPAC
استفاده
میکند.
قالب
پیشفرض از
روی
دادههای
اولیه
شناسایی
میشود،
اما در صورت
غیرفعال
بودن کاوش
خودکار،
میتوان آن
را با
استفاده از
ext یا mime
تنظیم کرد.
مثال
gpac -i srt://127.0.0.1:1234:gpac:proto inspect
این دستور
از
گرداننده
پروتکل SRT
اما
دیمالتیپلکسر
GPAC استفاده
خواهد کرد.
در این حالت، فیلتر از زمان بین دو بستهٔ دریافتیِ آخر برای تخمین اینکه هر چند وقت یکبار باید ورودیها را بررسی کند، استفاده میکند. حداقل و حداکثر زمان انتظار بین دو فراخوانی با گزینهٔ mwait مشخص میشود. برای منابع با نرخبیت بسیار بالا، ممکن است نیاز باشد حداکثر زمان کاهش یابد.
گزینهها (تخصصی) (Options (expert)):
src (cstr): نشانی
اینترنتی (URL)
محتوای
منبع
reparse (bool, default: false): تحلیل
مجدد
اجباری
محتوای
جریان (در
حال حاضر
فقط AVC,HEVC,VVC,AV1)
block_size (uint, default: 4096):
اندازه
بلوک مورد
استفاده
برای
خواندن
فایل هنگام
استفاده از
بافت GFIO
strbuf_min (uint, default: 1MB):
اندازه
بافر داخلی
هنگام
دیمالتیپلکس
از جریان
ورودی GPAC
proto (bool, default: false): تنها
استفاده از
گرداننده
پروتکل و
دور زدن
دیمالتیپلکسر
FFmpeg
mwait (v2di, default: 1x30): تنظیم
حداقل و
حداکثر
زمان
انتظار به
میلیثانیه
برای
جلوگیری از
سرکشی بیش
از حد (polling) در
حالت proto
ext (str): مشخص کردن
پسوند فایل
دادهها در
حالت
پروتکل خام
mime (str): مشخص کردن
نوع mime
دادهها در
حالت
پروتکل خام
* (str): هر گزینهٔ
ممکنِ
تعریفشده
برای AVFormatContext و
زیرکلاسهای
آن. ببینید: gpac -hx
ffdmx و gpac -hx ffdmx:*
ffdec
شرح:
رمزگشای FFmpeg
نسخه: Lavc62.29.100
این فیلتر
جریانهای
صوتی و
تصویری را
با استفاده
از FFmpeg
رمزگشایی
میکند.
برای
جزئیات
بیشتر، به
مستندات FFmpeg
(https://ffmpeg.org/documentation.html)
مراجعه
کنید.
برای فهرست
کردن همهٔ
رمزگشاهای
پشتیبانیشده
در ساخت GPAC
خود، از gpac -h ffdec:*
استفاده
کنید.
گزینهها
را میتوان
از خط فرمان
با استفاده
از --OPT=VAL ارسال
کرد.
پرچمهای
رمزگشا را
میتوان
مستقیماً
بهصورت :FLAGNAME
منتقل کرد.
حالت
پیشفرض
ریسهبندی
این است که
به libavcodec اجازه
داده شود
دربارهٔ
تعداد
ریسههای
مورد
استفاده
تصمیم
بگیرد. برای
اجبار به
استفاده از
یک
تکریسه،
از --threads=1
استفاده
کنید.
نگاشت کدک (Codec Map)
گزینهٔ ffcmap
امکان مشخص
کردن
کدکهای FFmpeg
را برای
کدکهایی
که توسط GPAC
پشتیبانی
نمیشوند
فراهم
میکند.
هر مدخل در
این فهرست
بهصورت GID@name
یا GID@+name
قالببندی
میشود،
همراه با:
* GID: شناسهٔ 4CC یا
۳۲ بیتیِ codec ID،
همانطور
که توسط gpac -i source
inspect:full نشان
داده
میشود
* name: نام کدک FFmpeg
* `+': در صورتی
که تنظیم
شده باشد و
دادههای
اضافی نیز
تنظیم و در
قالب یک
جعبهٔ ISOBMFF
قالببندی
شده باشند،
سرآیند
جعبه را حذف
میکند
مثال
gpac -i source.mp4 --ffcmap=BKV1@binkvideo vout
این دستور یک ترک ISOBMFF را که با نوع کدگذاری BKV1 اعلان شده است، به binkvideo نگاشت میکند.
گزینهها (تخصصی) (Options (expert)):
ffcmap (strl): نگاشت
کدک
c (str): نام کدک (GPAC
یا ffmpeg)، فقط
برای
استعلام
آرگومانهای
ممکن
استفاده
میشود - پس
از
مقداردهی
اولیه به
نام کدک ffmpeg
بهروزرسانی
میشود
* (str): هر گزینهٔ
ممکنِ
تعریفشده
برای AVCodecContext و
زیرکلاسهای
آن. ببینید: gpac -hx
ffdec و gpac -hx ffdec:*
ffavin
شرح: ضبط
صوت/تصویر FFmpeg
نسخه: Lavd62.4.100
خواندن از
دستگاههای
ضبط
صدا/تصویر
با استفاده
از FFmpeg.
برای
جزئیات
بیشتر، به
مستندات FFmpeg
(https://ffmpeg.org/documentation.html)
مراجعه
کنید.
برای فهرست
کردن همهٔ
ضبطکنندههای
پشتیبانیشده
در ساخت GPAC
خود، از gpac -h ffavin:*
استفاده
کنید.
شناسایی دستگاه (Device identification)
کلاسهای معمول عبارتند از dshow در ویندوز، avfoundation در OSX، و video4linux2 یا x11grab در لینوکس
نام معمول
دستگاه
میتواند
نام وبکم
باشد:
- FaceTime HD Camera در OSX، نام
دستگاه در
ویندوز، /dev/video0
در لینوکس
- screen-capture-recorder، در
ویندوز
http://screencapturer.sf.net را
ببینید
- ضبط صفحهٔ ۰
در OSX (۰=صفحه
نخست)، یا به
اختصار screenN
- نام
نمایشگر X
(مانند :0.0) در
لینوکس
نگاشت کلی
از خط فرمان
ffmpeg بهصورت
زیر است:
- گزینهٔ ffmpeg -f به
گزینهٔ fmt
نگاشت
میشود
- گزینهٔ ffmpeg -i به
گزینهٔ dev
نگاشت
میشود
مثال
ffmpeg -f libndi_newtek -i MY_NDI_TEST ...
gpac -i av://:fmt=libndi_newtek:dev=MY_NDI_TEST ...
در صورتی
که قالب از ':'
بهعنوان
جداکننده
استفاده
میکند،
همانطور
که برای AVFoundation
چنین است،
ممکن است
لازم باشد
گزینهٔ dev را
گریزدهی (escape)
کنید:
gpac -i av://::dev=0:1 ...
src (str): نشانی
اینترنتی (URL)
دستگاه، video://،
audio:// یا av://
fmt (str): نام کلاس
دستگاه. در
صورت عدم
تنظیم، به
نخستین
کلاس
دستگاه
پیشفرض
میشود
dev (str، پیشفرض: 0):
نام دستگاه
یا نمایهٔ (index)
دستگاه
copy (enum، پیشفرض:
A): تنظیم
حالت کپی
فریمهای
خام
* N: فریمها
فقط
بازفرستاده
میشوند
(حافظه
اشتراکی،
بدون کپی)
* A: فریمهای
صوتی کپی
شده و
فریمهای
ویدئویی
بازفرستاده
میشوند
* V: فریمهای
ویدئویی
کپی شده و
فریمهای
صوتی
بازفرستاده
میشوند
* AV: تمام
فریمها
کپی
میشوند
sclock (bool،
پیشفرض: false):
استفاده از
ساعت سیستم
(us) به جای
برچسب
زمانی
دستگاه
(برای
دستگاههای
دارای نقص)
probes (uint، پیشفرض:
10، minmax: 0-100): پایش (probe)
تعداد
مشخصی از
فریمهای
ویدئویی
پیش از
انتشار (این
گزینه
معمولاً به
رفع
ناهماهنگی
زمانی
فریمهای
نخست کمک
میکند)
* (str): هر گزینهٔ
ممکنِ
تعریفشده
برای AVInputFormat و AVFormatContext
(به gpac -hx ffavin و gpac -hx ffavin:*
مراجعه
کنید)
ffsws
توضیحات:
تغییر
مقیاسدهندهٔ
ویدئوی FFmpeg
نسخه: SwS9.6.100
این فیلتر
دادههای
خام ویدئو
را با
استفاده از
FFmpeg به اندازه
و قالب
پیکسل
مشخصشده
تغییر
مقیاس
میدهد.
تخصیص اندازهٔ خروجی (Output size assignment)
اگر .I osize برابر با {0,0} باشد، ابعاد خروجی روی اندازه ورودی تنظیم شده و نسبت ابعاد ورودی نادیده گرفته خواهد شد.
اگر .I osize برابر با {0,H} (یا به ترتیب {W,0}) باشد، عرض (یا به ترتیب ارتفاع) خروجی با حفظ نسبت ابعاد ورودی تنظیم میشود. اگر .I keepar = nosrc باشد، نسبت ابعاد نمونه (sample aspect ratio) ورودی نادیده گرفته میشود.
نسبت ابعاد و نسبت ابعاد نمونه (Aspect Ratio and Sample Aspect Ratio)
هنگامی که
نسبت ابعاد
نمونه
خروجی
تنظیم شود،
ابعاد
خروجی بر
نسبت ابعاد
نمونه
خروجی
تقسیم
میشوند.
مثال
ffsws:osize=288x240:osar=3/2
ابعاد خروجی 192x240 خواهد بود.
هنگامی که
نسبت ابعاد
حفظ
نمیشود (.I keepar = off):
- منبع به
ابعاد
دلخواه
بازنمونهبرداری
میشود
- اگر نسبت
ابعاد
خروجی
تنظیم نشده
باشد،
خروجی از
نسبت ابعاد
نمونه منبع
استفاده
خواهد کرد
هنگامی که
نسبت ابعاد
تا حدی حفظ
میشود (.I keepar = nosrc):
-
بازنمونهبرداری
روی
دادههای
ورودی بدون
در نظر
گرفتن نسبت
ابعاد
نمونه
ورودی
انجام
میشود
- اگر نسبت
ابعاد
نمونه
خروجی
تنظیم نشده
باشد (.I osar = 0/N)،
نسبت ابعاد
منبع به
خروجی
بازفرستاده
میشود.
هنگامی که نسبت ابعاد بهطور کامل حفظ شود (.I keepar = full)، در صورت عدم تنظیم، نسبت ابعاد خروجی به 1/1 تحمیل میشود.
هنگامی که
نسبت ابعاد
نمونه حفظ
شود، فیلتر
این
اقدامات را
انجام
میدهد:
- فریم ورودی
تغییرمقیاسیافته
را در مرکز
فریم خروجی
قرار
میدهد
- پیکسلهای
اضافی را با
.I padclr پر
میکند
گزینههای الگوریتمها (Algorithms options)
- برای bicubic،
جهت تنظیم
شکل تابع
پایه، .I p1
تابع f(1) و .I p2
تابع f´(1) را
تنظیم
میکند
- برای gauss،
گزینهٔ .I p1
نما و در
نتیجه
فرکانس قطع
(cutoff frequency) را تنظیم
میکند
- برای lanczos،
گزینهٔ .I p1
عرض تابع
پنجره را
تنظیم
میکند
برای جزئیات بیشتر به مستندات FFmpeg (https://ffmpeg.org/documentation.html) مراجعه کنید
گزینهها (تخصصی) (Options (expert)):
osize (v2di): اندازه
(osize) ویدئوی
خروجی
ofmt (pfmt، پیشفرض:
none، Enum:
none|yuv420|yvu420|yuv420_10|yuv422|yuv422_10|yuv444|yuv444_10|uyvy|vyuy|yuyv|yvyu|uyvl|vyul|yuyl|yvyl|nv12|nv21|nv1l|nv2l|yuva|yuvd|yuv444a|yuv444p|v308|yuv444ap|v408|v410|v210|grey|algr|gral|rgb8|rgb4|rgb5|rgb6|rgba|argb|bgra|abgr|rgb|bgr|xrgb|rgbx|xbgr|bgrx|rgbd|rgbds|uncv):
قالب پیکسل
برای
ویدئوی
خروجی. در
صورت عدم
تنظیم، از
قالب ورودی
استفاده
میشود
scale (enum، پیشفرض: bicubic): حالت تغییر مقیاس (به راهنمای فیلتر مراجعه کنید) (fastbilinear|bilinear|bicubic|X|point|area|bicublin|gauss|sinc|lanzcos|spline)
p1 (dbl،
پیشفرض: +I):
پارامتر
اول
الگوریتم
تغییر
مقیاس
p2 (dbl، پیشفرض: +I):
پارامتر
دوم
الگوریتم
تغییر
مقیاس
ofr (bool، پیشفرض:
false): تحمیل
دامنهٔ
کامل (full range) در
خروجی
brightness (bool،
پیشفرض: 0):
تصحیح
روشنایی با
ممیز ثابت
16.16؛ مقدار 0 به
معنای
استفاده از
پیشفرض
است
contrast (uint،
پیشفرض: 0):
تصحیح
روشنایی با
ممیز ثابت
16.16؛ مقدار 0 به
معنای
استفاده از
پیشفرض
است
saturation (uint،
پیشفرض: 0):
تصحیح
روشنایی با
ممیز ثابت
16.16؛ مقدار 0 به
معنای
استفاده از
پیشفرض
است
otable (sintl): ضرایب yuv2rgb
توصیفکنندهٔ
فضای yuv
خروجی،
معمولاً
ff_yuv2rgb_coeffs[x]؛ در
صورت عدم
تنظیم از
پیشفرض
استفاده
میشود
itable (sintl): ضرایب yuv2rgb
توصیفکنندهٔ
فضای yuv
ورودی،
معمولاً
ff_yuv2rgb_coeffs[x]؛ در
صورت عدم
تنظیم از
پیشفرض
استفاده
میشود
keepar (enum، پیشفرض:
off): حفظ نسبت
ابعاد
* off: نادیده
گرفتن نسبت
ابعاد
* full: رعایت
نسبت ابعاد
با اعمال
اطلاعات
نسبت ابعاد
نمونهٔ
ورودی
* nosrc: رعایت
نسبت ابعاد
اما بدون در
نظر گرفتن
نسبت ابعاد
نمونهٔ
ورودی
padclr (str،
پیشفرض: black):
رنگ حاشیه (pad)
هنگام
استفاده از
حفظ نسبت
ابعاد
osar (frac، پیشفرض:
0/1): تحمیل
نسبت ابعاد
پیکسلی
خروجی
شرح:
رمزگذار FFmpeg
نسخه: Lavc62.29.100
این فیلتر
جریانهای
صوتی و
ویدئویی را
با استفاده
از FFmpeg
رمزگذاری
میکند.
برای
جزئیات
بیشتر به
مستندات FFmpeg
(https://ffmpeg.org/documentation.html)
مراجعه
کنید.
برای
مشاهده
فهرست
تمامی
رمزگذارهای
پشتیبانیشده
در ساختار GPAC
خود، از gpac -h ffenc:*
استفاده
کنید.
این فیلتر
تلاش
میکند نام
کدک موجود
در .I c را با
نام
کدکهای libavcodec
(مانند libx264)
تطبیق داده
و در صورت
یافتن از آن
استفاده
کند.
در صورت عدم
تطابق، آن
را نام کدک GPAC
در نظر
گرفته و
کدکی
متناسب با
آن پیدا
میکند. در
این حالت،
اگر هیچ
فرمت
پیکسلی
مشخص نشده
باشد،
کدکها
برای یافتن
فرمت پیکسل
منطبق
بررسی
خواهند شد.
گزینهها
را میتوان
از خط فرمان
با استفاده
از OPT=VAL--
(گزینههای
سراسری) یا
با افزودن OPT=VAL::
به فیلتر
رمزگذار
مورد نظر
منتقل کرد.
پرچمهای
رمزگذار
میتوانند
مستقیماً
بهصورت FLAGNAME:
منتقل
شوند.
نکته
تنظیم پرچم
low_delay: بهطور
پیشفرض
گزینههای
profile=baseline، preset=ultrafast و tune=zerolatency و
همچنین x264-params
را برای AVC|H264
فعال
میکند. اگر
یک یا چند
مورد از این
گزینهها
بهعنوان
آرگومان
فیلتر
تنظیم شده
باشند،
مقادیر
پیشفرض
برای
هیچیک از
آنها
اعمال
نخواهد شد.
این فیلتر بهدنبال ویژگی TargetRate در PID ورودی میگردد تا نرخ بیت (bitrate) مورد نظر را به ازای هر PID تنظیم کند.
این فیلتر
در موارد
زیر مرز GOP
بسته (closed GOP boundary) را
تحمیل
میکند:
- در هر
بستهای که
ویژگی FileNumber
برای آن
تنظیم شده
باشد یا
مقدار
ویژگی CueStart
برابر true
باشد.
- در
ناپیوستگیهای
زمانی در
صورتی که .I rtd
تنظیم شده
باشد.
- در صورتی که
.I fintra و .I rc تنظیم
شده باشند.
هنگام
تحمیل مرز GOP
بسته،
فیلتر بافر
رمزگذار را
تخلیه (flush)، آن
را نابود و
مجدداً
بازسازی
میکند تا
اطمینان
حاصل شود
زمینهای (context)
تمیز به کار
میرود؛
زیرا در حال
حاضر
بسیاری از
رمزگذارها
در libavcodec از
بازنشانی
تمیز در
هنگام
اجبار نوع
تصویر
پشتیبانی
نمیکنند.
اگر .I fintra تنظیم
نشده باشد و
خروجی
رمزگذار یک
نشست DASH در
نمایه زنده
(live profile) بدون خط
زمانی قطعه
(segment timeline) باشد،
مقدار .I fintra روی
مدتزمان
قطعه هدف
تنظیم شده و
.I rc فعال
خواهد شد.
این فیلتر بهدنبال ویژگی logpass در PID ورودی میگردد تا نام فایل گزارش گذر ۲ (2-pass log) را تعیین کند، در غیر این صورت مقدار پیشفرض ffenc2pass-PID.log استفاده میشود.
آرگومانها
میتوانند
در زمان
اجرا
بهروزرسانی
شوند. اگر .I rld
تنظیم شده
باشد، بافر
رمزگذار
تخلیه شده و
سپس با
گزینههای
جدید
دوباره
بارگذاری
میشود.
اگر کدک از
نوع
ویدئویی
باشد و .I fintra
تنظیم شده
باشد،
بارگذاری
مجدد در
فریم intra
اجباری
بعدی اتفاق
میافتد؛
در غیر این
صورت،
بارگذاری
مجدد در
رمزگذاری
بعدی انجام
خواهد شد.
گزینه .I rld
معمولاً
برای
بهروزرسانی
پویای
پارامترهای
کنترل نرخ (rate
control) مورد نیاز
است، چرا که
بیشتر
رمزگذارها
در ffmpeg از آن
پشتیبانی
نمیکنند.
گزینهها (پیشرفته) (Options (expert)):
c (str): شناسه
کدک.
میتواند
هر نام کدک
پشتیبانیشده
در GPAC یا ffmpeg
باشد - پس از
مقداردهی
اولیه به
نام کدک ffmpeg
بهروزرسانی
میشود
pfmt (pfmt، پیشفرض:
none): فرمت
پیکسل برای
ویدئوی
ورودی. در
صورت عدم
تنظیم، از
فرمت ورودی
استفاده
میشود
fintra (frac، پیشفرض:
-1/1): اجبار
فریمهای intra / IDR
در دوره
زمانی
دادهشده
برحسب
ثانیه،
برای مثال fintra=2
هر ۲ ثانیه
یک فریم intra
تحمیل
میکند و fintra=1001/1000
در ویدئوی
30000/1001=29.97
فریمبرثانیه
هر ۳۰ فریم
یک فریم intra
تحمیل
میکند؛
برای صدا
نادیده
گرفته
میشود
all_intra (bool،
پیشفرض: false،
قابل
بهروزرسانی):
تنها
فریمهای intra
تولید شوند
ls (bool، پیشفرض:
false): ثبت
آمارهای
گزارش (log stats)
rc (bool، پیشفرض:
false): بازنشانی
رمزگذار
هنگام
اجبار فریم
intra (برخی
رمزگذارها
ممکن است از
اجبار فریم
intra پشتیبانی
نکنند)
rld (bool، پیشفرض:
false، قابل
بهروزرسانی):
اجبار به
بارگذاری
مجدد
رمزگذار
هنگام
بهروزرسانی
آرگومانها
rtd (bool، پیشفرض:
true): تزریق IDR در
هر
ناپیوستگی
زمانی
round (sint، پیشفرض:
1، قابل
بهروزرسانی):
گرد کردن
ابعاد
ویدئو به
بالا یا
پایین
* 0: بدون گرد
کردن
* 1: گرد کردن
به بالا
برای تطابق
با
نیازمندیهای
فرمت YUF کدک
* -1: گرد کردن
به پایین
برای تطابق
با
نیازمندیهای
فرمت YUF کدک
* other: گرد کردن
به مقدار
کمتر (مقدار
منفی) یا
بیشتر
(مقدار
مثبت)، برای
مثال
اندازه CTU
* (str): هر گزینه ممکن تعریفشده برای AVCodecContext و زیرکلاسها. به gpac -hx ffenc و gpac -hx ffenc:* مراجعه کنید
ffmx
شرح:
مالتیپلکسر
FFmpeg
نسخه: Lavf62.13.100
فایلها و
پروتکلهای
خروجی باز
را با
استفاده از
FFmpeg
مالتیپلکس
(تسهیم)
میکند.
برای
جزئیات
بیشتر به
مستندات FFmpeg
(https://ffmpeg.org/documentation.html)
مراجعه
کنید.
برای
مشاهده
فهرست
تمامی
مالتیپلکسرهای
پشتیبانیشده
در ساختار GPAC
خود، از gpac -h ffmx:*
استفاده
کنید. این
دستور هم
فرمتهای
خروجی و هم
پروتکلهای
پشتیبانیشده
را فهرست
میکند.
پروتکلهای
خروجی با
عبارت Description: Output protocol
مشخص
میشوند و
نام
زیرکلاس،
طرح (scheme)
پروتکل را
نشان
میدهد.
بهعنوان
مثال، اگر ffmx:rtmp
بهعنوان
پروتکل
خروجی
فهرست شود،
به این معنی
است که
نشانیهای
اینترنتی
مقصد //:rtmp
پشتیبانی
میشوند.
برخی از قالبهای نشانی اینترنتی (URL) ممکن است برای تشخیص فرمت مالتیپلکس کافی نباشند، در این صورت باید از .I ffmt برای مشخص کردن فرمت مورد نظر استفاده کنید.
برخلاف
سایر
فیلترهای
مالتیپلکس
در GPAC، این
فیلتر یک
فیلتر مقصد
(sink) است و هیچ PID
خروجی برای
هدایت در
گراف تولید
نمیکند.
با این حال
فیلتر
میتواند
از نامهای
الگو (template) برای
خروجی خود
استفاده
کند و با
بهرهگیری
از نخستین PID
ورودی، نام
نهایی را حل
کند.
این فیلتر
ویژگی FileNumber را
در
بستههای
ورودی پایش
میکند تا
فایلهای
جدید
بسازد.
تمامی ویژگیهای PID با پیشوند :meta بهعنوان فراداده (metadata) اضافه خواهند شد.
پرچم .I proto
مالتیپلکسر
FFmpeg را
غیرفعال
کرده و
بهجای آن
از
مالتیپلکسر
GPAC استفاده
میکند.
فرمت
پیشفرض MPEG-2 TS
است و
میتوان آن
را با
استفاده از .I
ext یا .I mime مشخص
کرد.
مثال
gpac -i SRC -o srt://127.0.0.1:1234:gpac:proto[:ext=mp4:frag]
این دستور
از
گرداننده
پروتکل SRT
استفاده
میکند،
اما از
مالتیپلکسر
m2ts متعلق به GPAC،
یا در صورت
تعیین ext=mp4:frag از
مالتیپلکسر
mp4 استفاده
خواهد کرد.
dst (cstr): مکان
فایل مقصد
یا URL دوردست
start (dbl, default: 0.0): تنظیم
آفست شروع
پخش. یک
مقدار منفی
به معنای
درصدی از
مدتزمان
رسانه است
که -1 برابر
با کل
مدتزمان
خواهد بود
speed (dbl, default: 1.0): تنظیم
سرعت پخش.
اگر منفی
باشد و start
برابر با 0
باشد، start روی -1
تنظیم
میشود
ileave (frac, default: 1):
مدتزمان
پنجره
درهمآمیزی
(interleave) به
ثانیه؛
مقدار 0
درهمآمیزی
را غیرفعال
میکند
nodisc (bool, default: false):
نادیدهگرفتن
تغییرات
پیکربندی
جریان
هنگام
تسهیم (multiplexing)؛
ممکن است
منجر به
خرابی
جریانها
شود
mime (cstr): تنظیم نوع
mime برای
تحلیل گراف
ffiles (bool, default: false): اجبار
به ایجاد
فایلهای
کامل برای
هر قطعه در
حالتهای DASH
ffmt (str): اجبار
قالب خروجی
ffmpeg برای URL
دادهشده
block_size (uint, default: 4096):
اندازه
بلوک مورد
استفاده
برای
خواندن
فایل هنگام
استفاده از
کانتکست avio
keepts (bool, default: true): خط
زمانی
ورودی را به 0
بازنگردان
proto (bool, default: false): فقط
استفاده از
پروتکل:
تلاشی برای
تسهیم (mux) نکن
(هنگام
ارسال
جریان SRT با
بازتسهیم
مفید است)
psleep (uint, default: 1000): در
حالت فقط
پروتکل،
پیش از EOS به
میزان
میلیثانیه
مشخصشده
درنگ کن
(برای برخی
پروتکلها
اتصال را
بلافاصله
قطع نکن)
* (str): هر گزینه
ممکن
تعریفشده
برای AVFormatContext و
زیرکلاسهای
آن (gpac -hx ffmx و gpac -hx ffmx:* را
ببینید)
ffavf
توضیحات:
فیلتر FFmpeg AV
نسخه: Lavfi11.15.100
این فیلتر
ابزارهای
صوتی و
تصویری خام
libavfilter را فراهم
میکند.
برای
جزئیات
بیشتر به
مستندات FFmpeg
(https://ffmpeg.org/documentation.html)
مراجعه
کنید
برای
مشاهده
فهرست تمام
avfilterهای
پشتیبانیشده
در ساخت GPAC
خود، از gpac -h ffavf:*
استفاده
کنید.
تعریف یک فیلتر (DECLARING A FILTER)
این فیلتر
توصیف یک
فیلتر یا
زنجیرهای
از فیلترها
را از گزینه
.I f بارگذاری
میکند.
مثال
ffavf:f=showspectrum
برخلاف
سایر
پیوندهای FFmpeg
در GPAC، این
فیلتر سایر
گزینههای
libavfilter را تجزیه
نمیکند؛
باید آنها
را
مستقیماً
در زنجیره
فیلتر مشخص
کنید و
کاراکترهای
گزینه .I f
باید با
کاراکتر
گریز (escape) درج
شوند.
مثال
ffavf::f=showspectrum=size=320x320 یا
ffavf::f=showspectrum=size=320x320::pfmt=rgb
ffavf::f=anullsrc=channel_layout=5.1:sample_rate=48000
برای
گرافهای
فیلتر
پیچیده،
امکان
ذخیره
گزینهها
در یک فایل
وجود دارد
(مانند opts.txt):
:f=anullsrc=channel_layout=5.1:sample_rate=48000
و
بارگذاری
آرگومانها
از فایل:
ffavf:opts.txt aout
این فیلتر
بهطور
خودکار
فیلترهای AV
از نوع buffer و buffersink
را برای
تبادل داده
بین GPAC و libavfilter
ایجاد
میکند.
گزینههای
توکار ( .I pfmt، .I afmt ...)
میتوانند
برای
پیکربندی
فیلتر buffersink جهت
تعیین قالب
خروجی
فیلتر
استفاده
شوند.
نامگذاری شناسههای جریان (NAMING OF PIDS)
برای گرافهای فیلتر ساده با تنها یک ورودی و یک خروجی، به PID ورودی نام avfilter با عنوان in و به PID خروجی نام avfilter با عنوان out اختصاص داده میشود
هنگامی که
یک گراف
چندین
ورودی
دارد،
نامهای PID
ورودی باید
توسط کاربر
با استفاده
از ویژگی ffid
تعیین شوند
و نگاشت
باید در
فیلتر
انجام شود.
مثال
gpac -i video:#ffid=a -i logo:#ffid=b
ffavf::f=[a][b]overlay=main_w-overlay_w-10:main_h-overlay_h-10 vout
در این
مثال:
- منبع ویدیو
با a شناسایی
میشود
- منبع
نشانواره
(logo) با b
شناسایی
میشود
- اعلان
فیلتر، a را
به نخستین
ورودی خود
(در این
حالت،
ویدیوی
اصلی) و b را
به دومین
ورودی خود
(در این حالت
overlay) نگاشت
میکند
هنگامی که
یک گراف
چندین
خروجی
دارد، PIDهای
خروجی با
استفاده از
ویژگی ffid
تنظیمشده
روی نام
خروجی avfilter
شناسایی
خواهند شد.
مثال
gpac -i source ffavf::f=split inspect:SID=#ffid=out0 vout#SID=out1
در این
مثال:
-
تقسیمکننده
(splitter) دو جریان
ویدیویی out0 و out1
تولید
میکند
- بازرس (inspector)
تنها جریان
با ffid برابر out0
را پردازش
میکند
- خروجی
ویدیو تنها
جریان با ffid
برابر out1 را
نمایش
میدهد
نام(های) خروجی نهایی گراف avfilter در GPAC قابل پیکربندی نیست. با این حال میتوانید مانند همیشه خروجی(های) میانی را در یک زنجیره فیلتر پیچیده نامگذاری کنید.
این فیلتر
بهروزرسانیهای
گزینهها
را
بهعنوان
دستورات
ارسالشده
به گراف
فیلتر AV
مدیریت
میکند. نحو
(syntax) مورد
انتظار در
نام گزینه
به این صورت
است:
* com_name=value: دستور com_name
را با مقدار
value به تمامی
فیلترها
ارسال
میکند
* name#com_name=value: دستور com_name
را با مقدار
value به فیلتری
با نام name
ارسال
میکند
گزینهها (تخصصی) (Options (expert)):
f (str): توصیف
فیلتر یا
زنجیره
فیلتر
pfmt (pfmt, default: none): قالب
پیکسلی
خروجی. در
صورت عدم
تنظیم،
تصمیمگیری
به AVFilter واگذار
میشود
afmt (afmt, default: none): قالب
صوتی خروجی.
در صورت عدم
تنظیم،
تصمیمگیری
به AVFilter واگذار
میشود
sr (uint, default: 0): نرخ
نمونهبرداری
خروجی. در
صورت عدم
تنظیم،
تصمیمگیری
به AVFilter واگذار
میشود
ch (uint, default: 0): تعداد
کانالهای
خروجی. در
صورت عدم
تنظیم،
تصمیمگیری
به AVFilter واگذار
میشود
dump (bool, default: false, updatable):
تخلیه گراف
بهصورت
گزارش در media@info
یا در صورت
عدم تنظیم
در stderr
* (str): هر گزینه
ممکن
تعریفشده
برای AVFilter و
زیرکلاسهای
آن (به gpac -hx ffavf و gpac -hx ffavf:*
مراجعه
کنید)
ffbsf
توضیحات:
فیلتر
بیتاستریم
FFmpeg
نسخه: Lavu60.27.100
این
فیلتر،
فیلترهای
بیتاستریم
(BSF) را برای
قالبهای
صوتی و
تصویری
فشردهشده
فراهم
میکند.
برای
جزئیات
بیشتر به
مستندات FFmpeg
(https://ffmpeg.org/documentation.html)
مراجعه
کنید
برای
مشاهده
فهرست
تمامی
فیلترهای
بیتاستریم
پشتیبانیشده
در ساخت GPAC
خود، از gpac -h ffbsf:*
استفاده
کنید.
میتوان
چندین BSF را
در .I f برای
انواع
مختلف
کدگذاری
مشخص کرد.
مواردی از BSF
که با نوع
کدگذاری
مطابقت
نداشته
باشند،
بدون هشدار
نادیده
گرفته
میشوند.
هنگامی که
هیچ BSF با نوع
کدگذاری
ورودی
مطابقت
نداشته
باشد، یا
زمانی که .I f
خالی باشد،
فیلتر به
عنوان یک
فیلتر
عبوری (passthrough)
عمل
میکند.
گزینهها
پس از
فیلترهای
مورد نظر
مشخص
میشوند:
- ffbsf:f=h264_metadata:video_full_range_flag=0
-
ffbsf:f=h264_metadata,av1_metadata:video_full_range_flag=0:color_range=tv
نکته: استفاده از BSFها روی برخی از انواع رسانه (مانند avc، hevc) ممکن است باعث ایجاد یک فیلتر reframer (مانند rfnalu) شود
گزینهها (تخصصی) (Options (expert)):
f (strl): نام
فیلترهای
بیتاستریم
- راهنمای
فیلتر را
ببینید
* (str): هر گزینه
ممکن
تعریفشده
برای AVBitstreamFilter و
زیرکلاسهای
آن. به gpac -hx ffbsf و gpac -hx ffbsf:*
مراجعه
کنید
jsf
توضیحات: فیلتر جاوااسکریپت
این فیلتر یک فایل جاوااسکریپت مشخصشده در .I js را اجرا میکند که یک فیلتر جاوااسکریپت جدید را تعریف مینماید.
برای اطلاعات بیشتر در مورد نحوه استفاده از فیلترهای JS، لطفاً https://wiki.gpac.io/Howtos/jsf/jsfilter را بررسی کنید
گزینهها (تخصصی) (Options (expert)):
js (cstr): مکان
سورس
اسکریپت
* (str): هر گزینه
ممکن
تعریفشده
برای
اسکریپت (به
gpac -hx jsf:js=$YOURSCRIPT یا gpac -hx $YOURSCRIPT
مراجعه
کنید)
routeout
توضیحات: خروجی MABR و ROUTE
فیلتر
خروجی ROUTE
برای توزیع
یک نشست
زنده مبتنی
بر فایل با
استفاده از
ROUTE یا DVB-MABR به کار
میرود.
این فیلتر
از
ورودیهای
DASH و HLS،
سیگنالدهی
ATSC3.0 و
سیگنالدهی
عمومی ROUTE یا DVB-MABR
پشتیبانی
میکند.
این فیلتر
با استفاده
از
طرحوارههای
URL زیر
شناسایی
میشود:
* `atsc://`: نشست یک
نشست کامل ATSC 3.0
است
* `route://IP:port`: نشست یک
نشست ROUTE است
که روی IP
چندپخشی و
درگاه
مشخصشده
اجرا
میشود
* `mabr://IP:port`: نشست یک
نشست DVB-MABR با
استفاده از
FLUTE است که روی IP
چندپخشی و
درگاه
مشخصشده
اجرا
میشود
این فیلتر
فقط PIDهای
ورودی از
نوع FILE را
میپذیرد.
- فایلهای
مانیفست HAS
از طریق
پسوند فایل
و/یا انواع MIME
شناسایی
شده و به
عنوان بخشی
از بسته
سیگنالدهی
یا به عنوان
فایلهای
شیء LCT برای
لیستهای
پخش فرعی HLS
ارسال
میشوند.
- قطعههای
رسانهای HAS
با استفاده
از ویژگی OrigStreamType
شناسایی
شده و با
استفاده از
رشته الگوی
DASH به عنوان
فایلهای
شیء LCT ارسال
میشوند.
- یک PID بدون
تنظیم
ویژگی OrigStreamType به
عنوان یک
فایل شیء LCT
معمولی (که
از این پس raw
نامیده
میشود)
تحویل داده
میشود.
برای PIDهای
فایل raw،
فیلتر به
دنبال
ویژگیهای
زیر
میگردد:
* `MCASTName`: نام منبع
را تنظیم
میکند. در
صورت پیدا
نشدن، از
نام پایه (basename)
نشانی URL
استفاده
میکند
* `MCASTCarousel`: دوره
تکرار را
تنظیم
میکند. در
صورت عدم
یافتن، از .I
carousel استفاده
میکند. اگر 0
باشد، فایل
فقط یک بار
ارسال
میشود
* `MCASTUpload`: زمان
بارگذاری
منبع را
تنظیم
میکند. در
صورت عدم
یافتن، از .I
carousel استفاده
میکند. اگر 0
باشد، فایل
با حداکثر
سرعت ممکن
ارسال
خواهد شد.
هنگام
ایجاد DASH
برای ROUTE، DVB-MABR یا
ATSC
تکسرویسی،
ممکن است از
یک پسوند
فایل، چه در
.I dst یا در .I ext،
برای
شناسایی
نوع نشست HAS
(از نوع DASH یا HLS)
استفاده
شود.
مثال
"route://IP:PORT/manifest.mpd",
"route://IP:PORT/:ext=mpd"
هنگام
ایجاد DASH
برای ATSC
چندسرویسی،
اجبار کردن
یک پسوند
باعث
میشود
تمامی
سرویسها
ملزم به
استفاده از
همان
قالبها
شوند.
مثال
"atsc://:ext=mpd", "route://IP:PORT/manifest.mpd"
اگر به
چندین
سرویس با
قالبهای
مختلف نیاز
باشد، باید
فیلترهای
خود را به
صورت صریح
مشخص کنید:
gpac -i DASH_URL:#ServiceID=1 dashin:forward=file:FID=1 -i
HLS_URL:#ServiceID=2 dashin:forward=file:FID=2 -o atsc://:SID=1,2
gpac -i MOVIE1:#ServiceID=1 dasher:FID=1:mname=manifest.mpd -i
MOVIE2:#ServiceID=2 dasher:FID=2:mname=manifest.m3u8 -o atsc://:SID=1,2
هشدار: هنگام فوروارد کردن یک نشست موجود DASH/HLS، به هیچ وجه پسوند یا نام مانیفستی را تنظیم نکنید.
این فیلتر برای راهاندازی چندپخشی هر سرویس، به دنبال ویژگیهای MCASTIP و MCASTPort در PID ورودی میگردد. در صورت پیدا نشدن، مقادیر پیشفرض .I ip و port استفاده خواهند شد، به طوری که درگاه برای هر جریان چندپخشی جدید یکی افزایش مییابد.
به طور
پیشفرض،
تمام
جریانهای
موجود در یک
سرویس به یک
نشست
چندپخشی
واحد
اختصاص
مییابند و
توسط TSI
متمایز
میشوند (به
.I splitlct مراجعه
کنید).
مقادیر TSI به
صورت زیر
تخصیص
مییابند:
- مقدار TSI
سیگنالدهی
همیشه برای
ROUTE برابر با 0 و
برای DVB+Flute
برابر با 1
است
- به
فایلهای raw
مقدار TSI 1 و
شمارههای
افزایشی TOI
اختصاص
داده
میشود
- در غیر این
صورت، به
اولین PID
یافتشده
مقدار TSI 10، به
دومی TSI 20 و
غیره
اختصاص
مییابد...
هنگامی که
.I splitlct روی mcast
تنظیم شده
باشد،
نشانی IP
چندپخشی به
صورت زیر
محاسبه
میشود:
- اگر MCASTIP روی PID
تنظیم شده
باشد و با IP
چندپخشی
سرویس
متفاوت
باشد، از آن
استفاده
میشود
- در غیر این
صورت، از IP
چندپخشی
سرویس به
علاوه یک
استفاده
میشود
درگاه
چندپخشی
مورد
استفاده به
صورت زیر
تنظیم
میشود:
- اگر MCASTPort روی PID
تنظیم شده
باشد، از آن
استفاده
میشود
- در غیر این
صورت، از
همان درگاه
مربوط به
سرویس
استفاده
میشود.
قطعههای
مقداردهی
اولیه (Init segments) و
لیستهای
پخش فرعی HLS
قبل از هر
قطعه جدید،
مستقل از .I carousel
ارسال
میشوند.
در این
حالت،
فیلتر
امکان
مالتیپلکس
چند سرویس
را، که از
طریق
مشخصهٔ ServiceID
شناسایی
میشوند،
فراهم
میکند.
بهطور
پیشفرض
(بالا را
ببینید)، از
یک IP چندپخشی
(multicast) واحد
برای
نشستهای route
استفاده
میشود، و
به هر سرویس
یک پورت
متفاوت
اختصاص
مییابد.
ویژگیهای
ATSC 3.0 با
استفاده از
مشخصههای PID
زیر تنظیم
میشوند:
* ATSC3ShortServiceName: نام
کوتاه
سرویس را
تعیین
میکند، با
حداکثر ۷
نویسه. در
صورت پیدا
نشدن، ServiceName
بررسی
میشود، در
غیر این
صورت مقدار
پیشفرض GPAC
خواهد بود.
* ATSC3MajorChannel: شماره
کانال اصلی
سرویس را
تنظیم
میکند.
پیشفرض ۲
است. این
مقدار
حتماً باید
تنظیم شود و
نباید از
مقدار
پیشفرض
استفاده
گردد.
* ATSC3MinorChannel: شماره
کانال فرعی
سرویس را
تنظیم
میکند.
پیشفرض ۱
است.
* ATSC3ServiceCat:
دستهبندی
سرویس را
تعیین
میکند؛ در
صورت پیدا
نشدن،
پیشفرض ۱
است. ۱=سرویس
خطی
صوتی/تصویری
(Linear a/v). ۲=سرویس
خطی فقط
صوتی.
۳=سرویس
مبتنی بر
برنامه (App-based).
۴=سرویس ESG.
۵=سرویس EA.
۶=سرویس DRM.
* ATSC3hidden: پنهان
بودن سرویس
را تعیین
میکند.
مقدار بولی
true یا false.
پیشفرض false
است.
* ATSC3hideInGuide: پنهان
بودن سرویس
در ESG را
تعیین
میکند.
مقدار بولی
true یا false.
پیشفرض false
است.
* ATSC3configuration:
پیکربندی
سرویس را
تنظیم
میکند.
گزینههای
انتخابی Broadcast
یا Broadband هستند.
پیشفرض Broadcast
است.
حالت ROUTE (ROUTE mode)
در این
حالت، تنها
یک سرویس
منفرد
میتواند
توسط نشست ROUTE
توزیع شود.
نکته: .I ip
نادیده
گرفته
میشود، و
در صورتی که
هیچ پورتی
در .I dst مشخص
نشده باشد
از .I first_port
استفاده
میشود.
نشست ROUTE شامل
یک بستهٔ
چندبخشی MIME
امضانشده
حاوی manifest و S-TSID
خواهد بود
که بر روی TSI=0
ارسال
میشود.
حالت DVB-MABR (DVB-MABR mode)
در این
حالت،
فیلتر
امکان
مالتیپلکس
چند سرویس
را، که از
طریق
مشخصههای
ServiceID و ServiceName
شناسایی
میشوند،
فراهم
میکند.
نکته: از .I ip و .I
first_port برای
ارسال
پیکربندی
درگاه
چندپخشی (multicast gateway)
استفاده
میشود. از .I
first_port تنها
زمانی
استفاده
میشود که
پورتی در .I dst
مشخص نشده
باشد.
این نشست پیکربندی درگاه DVB-MABR، مانیفستها و قطعههای آغازین (init segments) را بر روی TSI=1 حمل خواهد کرد. گزینهٔ .I use_inband میتواند برای ارسال مانیفستها و قطعههای آغازین در نشستهای چندپخشی رسانه استفاده شود.
نشست FLUTE همواره از طول نماد برابر با .I mtu منهای ۴۴ بایت استفاده میکند.
مشخصهٔ MABRBaseURLs
میتواند
بر روی
منابع
تنظیم شود
تا فهرستی
از سرورهای
ترمیم
جایگزین (repair servers)
را برای
تزریق
اعلان
نماید.
هر نشانی
پایه (base URL)
میتواند
با پیشوند N;
همراه شود،
که در آن N
وزن نسبی
سرور را
تعیین
میکند، و
مقدار منفی
سرور را
نادیده
میگیرد.
مقدار
ویژهٔ src
برای مشخص
کردن منبع
نشست به کار
میرود.
مثال
gpac -i HTTP_MPD_URL:gpac::#MABRBaseURLs=-1;src,SOME_ALT_URL
dashin:forward=file -o mabr://225.0.0.1:1234/
این کار
نشست DASH مبدأ
را به
چندپخشی
فوروارد
کرده و:
- سرور مبدأ
را به عنوان
یک URL ترمیم
پنهان
میکند
- نشانی SOME_ALT_URL را
به عنوان یک
URL ترمیم
اضافه
میکند
حالت تاخیر کم (Low latency mode)
هنگام
استفاده از
حالت تاخیر
کم .I llmode،
قطعههای
رسانهای
ورودی در
قالب یک
بستهٔ واحد
سرهمبندی
نمیشوند،
بلکه به
همان صورتی
که دریافت
میشوند
ارسال
میگردند.
برای اینکه
زمانبندی
همزمان (real-time)
تکههای
داده به
درستی کار
کند، هر
فرگمنت از
قطعه باید
دارای یک CTS و
برچسب زمان
(timestamp) باشد که
زمانبندی
آن را توصیف
میکند.
اگر چنین
نباشد
(معمولاً
هنگام
استفاده با
یک نشست DASH
موجود در
حالت فایل)،
زمانبند
مقدار CTS و
مدتزمان
را بر اساس
نرخ بیت
جریان و مدت
قطعه تخمین
میزند. نرخ
بیت
مشخصشده
برای
حاشیهٔ
اطمینان به
اندازهٔ .I brinc
درصد
افزایش
مییابد.
اگر این کار
ناموفق
باشد،
فیلتر
هشدارهایی
صادر کرده و
ارسال را با
حداکثر
سرعت ممکن
انجام
میدهد.
نکته: اشیای LCT
بدون
اختصاص طول
(هدر TOL) ارسال
میشوند تا
زمانی که
اندازهٔ
نهایی قطعه
مشخص گردد،
که ممکن است
به یک
فرگمنت
نهایی LCT با
اندازهٔ ۰
منجر شود که
تنها
اندازهٔ
نهایی را
اعلان
میکند.
در این
حالت،
قطعههای
آغازین و
مانیفستها
با بسامدی
ارسال
میشوند که
توسط
مشخصهٔ MCASTCarousel
در PID مبدأ (در
صورت تعیین
شدن) یا توسط
گزینهٔ .I carousel
تعیین شده
است.
تعیین MCASTCarousel=0
تکرار
بینقطعهای
مانیفستها
و قطعههای
آغازین را
غیرفعال
میکند.
مثالها (EXAMPLES)
از آنجا که
فیلتر ROUTE
تنها
فایلها را
مصرف
میکند،
درج موارد
زیر الزامی
است:
-
دیمالتیپلکسر
dash در حالت
فوروارد
فایل هنگام
بارگذاری
یک نشست DASH
-
مالتیپلکسر
dash هنگام
ایجاد یک
نشست DASH
مالتیپلکس
کردن یک
نشست DASH
موجود در route:
gpac -i source.mpd dashin:forward=file -o route://225.1.1.0:6000/
مالتیپلکس
کردن یک
نشست DASH
موجود در atsc:
gpac -i source.mpd dashin:forward=file -o atsc://
قطعهبندی
DASH و
مالتیپلکس
در route:
gpac -i source.mp4 dasher:profile=live -o
route://225.1.1.0:6000/manifest.mpd
قطعهبندی
DASH و
مالتیپلکس
در route با
تاخیر کم (Low Latency):
gpac -i source.mp4 dasher -o
route://225.1.1.0:6000/manifest.mpd:profile=live:cdur=0.2:llmode
ارسال یک
فایل منفرد
در ROUTE با
استفاده از
زمان
بارگذاری
نیم ثانیه و
کاروسل ۲
ثانیهای:
gpac -i URL:#MCASTUpload=0.5:#MCASTCarousel=2 -o route://225.1.1.0:6000/
اشتباهات
رایج:
gpac -i source.mpd -o route://225.1.1.0:6000/
این دستور
تنها فایل
مانیفست را
به عنوان یک
شیء معمولی
ارسال
میکند و
نشست dash را
بارگذاری
نخواهد کرد.
مثال
gpac -i source.mpd dashin:forward=file -o
route://225.1.1.0:6000/manifest.mpd
این دستور
مالتیپلکسر
ROUTE را وادار
میکند که
تنها
فایلهای .mpd
را بپذیرد،
و تمام
فایلهای
قطعه (segment) را
دور
میریزد
(مشابه
حالتی که .I ext
استفاده
شود).
مثال
gpac -i source.mpd dasher -o route://225.1.1.0:6000/
gpac -i source.mpd dasher -o route://225.1.1.0:6000/manifest.mpd
این دستورها ورودی را دیمالتیپلکس کرده، مجدداً قطعهبندی DASH میکنند و خروجی dasher را به ROUTE ارسال مینمایند.
امکان
شبیهسازی
خطاها با errsim
وجود دارد.
در این
حالت،
ارسالکننده
شبکه LCT یک
زنجیره
مارکوف
۲-حالته را
پیادهسازی
میکند:
gpac -i source.mpd dasher -o route://225.1.1.0:6000/:errsim=1.0x98.0
این پیکربندی احتمال ۱.۰ درصدی برای گذار به حالت خطا (عدم ارسال داده روی شبکه) و احتمال ۹۸.۰ درصدی برای بازگشت از خطا به وضعیت عادی (OK) را تعیین میکند.
گزینهها (تخصصی) (OPTIONS (expert)):
dst (cstr): URL مقصد
ext (cstr): تنظیم
پسوند برای
تفکیک
گراف،
صرفنظر از
پسوند فایل
mime (cstr): تنظیم mime type
برای تفکیک
گراف
ifce (str): رابط
پیشفرض
برای
استفاده در
مالتیکست.
در صورت NULL،
از رابط
پیشفرض
سیستم
استفاده
خواهد شد
carousel (uint, default: 1000): دوره
کاروسل به
میلیثانیه
برای تکرار
سیگنالینگ
و دادههای
خام فایل
first_port (uint, default: 6000): شماره
پورت
نخستین
نشست ROUTE در
حالت ATSC
ip (str, default: 225.1.1.0): آدرس IP
مالتیکست
برای نشست ROUTE
در حالت ATSC
ttl (uint, default: 0): طول عمر
(time-to-live) برای
بستههای
مالتیکست
bsid (uint, default: 800): شناسه (ID)
برای جریان
پخش همگانی
ATSC
mtu (uint, default: 1472): اندازه
MTU در LCT به بایت
splitlct (enum, default: off): حالت
تقسیم برای
کانالهای LCT
* off: تمام
جریانها
در همان
کانال LCT
قرار دارند
* type: هر نوع
جریان جدید
منجر به یک
کانال LCT
جدید
میشود
* all: تمام
جریانها
در کانال LCT
اختصاصی
قرار دارند
و از جریان
نخست برای
سیگنالینگ
STSID استفاده
میشود
* mcast: تمام
جریانها
در
گروههای
مالتیکست
اختصاصی
قرار
دارند
korean (bool, default: false):
استفاده از
نسخه
کرهای
مشخصات ATSC 3.0
بهجای
نسخه
ایالات
متحده
llmode (bool, default: false):
استفاده از
حالت تأخیر
کم (low-latency)
brinc (uint, default: 10): افزایش
نرخ بیت بر
حسب درصد
هنگام
برآورد
زمانبندی
در حالت
تأخیر کم
noreg (bool, default: false):
غیرفعالسازی
تنظیم نرخ
قطعات
رسانه، و
ارسال
آنها به
محض دریافت
با حداکثر
سرعت
runfor (uint, default: 0): اجرا به
مدتزمان
دادهشده
بر حسب
میلیثانیه
nozip (bool, default: false): فشرده
نکردن (zip
نکردن) بسته
سیگنالینگ
(STSID+manifest)
flute (bool, default: true):
استفاده از
flute برای
تحویل شیء DVB-MABR
csum (enum, default: meta): ارسال
مجموع
مقابلهای
(MD5 checksum) برای DVB flute
* no: عدم ارسال
مجموع
مقابلهای
* meta: ارسال
مجموع
مقابلهای
فقط برای
فایلهای
پیکربندی،
مانیفستها
و قطعات init
* all: ارسال
مجموع
مقابلهای
برای همه
چیز
recv_obj_timeout (uint, default: 50):
تنظیم مدت
مهلت زمانی
(timeout) بر حسب
میلیثانیه
پیش از توسل
کلاینت به
ترمیم unicast
errsim (v2d, default: 0.0x100.0):
شبیهسازی
خطاها با
استفاده از
زنجیره
مارکوف
۲-حالته.
مقادیر بر
حسب درصد
هستند
use_inband (bool, default: false): ارسال
قطعات
مانیفست و init
در
نشستهای
انتقال
رسانه برای
MABR
ssm (bool, default: false): تعیین
مالتیکست
منبعمحور
(SSM) برای DVB-MABR،
مستلزم
تنظیم ifce است
rftruehd
توضیحات: بازچینشگر فریم TrueHD (TrueHD reframer)
این فیلتر فایلها/دادههای Dolby TrueHD را تجزیه کرده و فریمها و PID صوتی مربوطه را در خروجی قرار میدهد.
گزینهها (تخصصی) (OPTIONS (expert)):
index (dbl, default: 1.0): طول
پنجره
نمایهسازی
(indexing)
auxac3 (bool, default: false):
آشکارسازی
جریان کمکی
AC-3 در صورت
وجود
cryptin
توضیحات: ورودی CryptFile
این فیلتر بلوکهای خام را از فایلهای رمزگذاریشده با AES 128 CBC در PKCS7 به فایلهای ورودی شفاف (رمزگشاییشده) ارسال میکند
این فیلتر بهطور خودکار توسط دیمولتیپلکسر DASH/HLS بارگذاری میشود و نباید بهطور صریح توسط برنامه شما بارگذاری شود.
این فیلتر URL با طرحواره gcryp://URL را میپذیرد، که در آن URL همان نشانی جهت رمزگشایی است.
این فیلتر میتواند URLهای کلید با پروتکل http(s) و فایلهای محلی (پیکربندیشده از طریق مانیفست HLS) را پردازش کند، و در نتیجه واکشی منبع، انتظار یک کلید کامل (۱۶ بایت) را دارد.
src (cstr): مکان
فایل منبع
fullfile (bool, default: false):
سرهمبندی
مجدد کل
فایل پیش از
رمزگشایی
cryptout
توضیحات: خروجی CryptFile
این فیلتر بلوکهای خام را از فایلهای ورودی رمزنگارینشده به فایلهای رمزگذاریشده با AES 128 CBC در PKCS7 ارسال میکند.
این فیلتر بهطور خودکار توسط تسهیمکننده DASH/HLS بارگذاری میشود و نباید بهصورت صریح توسط برنامهٔ شما بارگذاری شود.
این فیلتر نشانیهای URL با طرحوارهٔ gcryp://URL را میپذیرد، که در آن URL همان نشانی اینترنتی برای رمزنگاری است.
گزینهها (تخصصی) (OPTIONS (EXPERT)):
dst (cstr): مکان
فایل منبع
fullfile (bool, default: false):
سرهمبندی
مجدد کل
فایل پیش از
رمزگشایی
restamp
توضیحات: بازنویس برچسب زمان
این فیلتر زمانبندی (آفستها و نرخ) بستهها را بازنویسی میکند.
تاخیرها (سراسری یا به ازای هر کلاس جریان) میتوانند مثبت (ارائه جریان در زمان دیرتر) یا منفی (ارائه جریان در زمان زودتر) باشند.
مقدار
مشخصشده
برای .I fps
میتواند
۰، مثبت یا
منفی باشد.
- اگر ۰ باشد
یا جریان از
نوع صوتی
باشد، نرخ
جریان
تغییری
نمیکند.
- در غیر این
صورت اگر
منفی باشد،
نرخ جریان
در -fps.num/fps.den ضرب
میشود.
- در غیر این
صورت اگر
مثبت باشد و
جریان
ویدیویی
نباشد، نرخ
جریان
تغییری
نمیکند.
- در غیر این
صورت (PID
ویدیویی)،
نرخ فریم
ثابت فرض
میشود و:
- اگر .I rawv = no
باشد، نرخ
فریم ویدیو
به نرخ
مشخصشده
تغییر
مییابد
(افزایش یا
کاهش سرعت).
- اگر .I rawv = force
باشد،
جریان
ویدیوی
ورودی
رمزگشایی
شده و
فریمهای
ویدیو برای
مطابقت با
نرخ جدید
حذف یا کپی
میشوند.
- اگر .I rawv = dyn
باشد، در
صورتی که
جریان
ویدیوی
ورودی
تماماً all-intra
نباشد
رمزگشایی
شده و
فریمهای
ویدیو برای
مطابقت با
نرخ جدید
حذف یا کپی
میشوند.
نکته: فریمها صرفاً کپی یا حذف میشوند و هیچگونه جبران حرکتی (motion compensation) انجام نمیگیرد.
هنگامی که
.I align برابر ۰
نباشد، اگر
اختلاف بین
دو برچسب
زمان
متوالی از
آستانه
مشخصشده
بیشتر
باشد،
برچسب زمان
جدید
برابر
آخرین
برچسب زمان
محاسبهشده
بهعلاوه
حداقل
مدتزمان
بسته برای
آن جریان
تنظیم
میشود.
گزینهها (تخصصی) (OPTIONS (EXPERT)):
fps (frac, default: 0/1): نرخ
فریم هدف
delay (frac, default: 0/1, updatable):
تاخیر برای
افزودن به
همه
جریانها
delay_v (frac, default: 0/1, updatable):
تاخیر برای
افزودن به
جریانهای
ویدیو
delay_a (frac, default: 0/1, updatable):
تاخیر برای
افزودن به
جریانهای
صوتی
delay_t (frac, default: 0/1, updatable):
تاخیر برای
افزودن به
جریانهای
متنی
delay_o (frac, default: 0/1, updatable):
تاخیر برای
افزودن به
سایر
جریانها
rawv (enum, default: no): کپی
فریمهای
ویدیو
* no: عدم
کپی/حذف
فریم خام
* force: اجبار به
رمزگشایی
تمام
جریانهای
ویدیو
* dyn: رمزگشایی
جریانهای
ویدیو در
صورت all-intra
نبودن
tsinit (lfrac, default: -1/1):
برچسب زمان
اولیه برای
همگامسازی
مجدد،
مقادیر
منفی
همگامسازی
مجدد را
غیرفعال
میکند
align (uint, default: 0): آستانه
تراز کردن
برچسب زمان
(۰ تراز کردن
را غیرفعال
میکند) -
راهنمای
فیلتر را
ببینید
reorder (bool, default: false):
مرتبسازی
مجدد
بستههای
ورودی بر
اساس CTS (ممکن
است PID حاصل
در
رمزگشایی
با خطا
مواجه شود)
oggmx
توضیحات: تسهیمکننده OGG
این فیلتر صدا و ویدیو را برای تولید یک جریان OGG تسهیم میکند.
گزینه .I cdur امکان مشخص کردن مدتزمان درهمبافی (حداکثر اختلاف زمانی بین بستههای متوالی جریانهای مختلف) را فراهم میکند.
cdur (frac،
پیشفرض: 1/10):
مدتزمان
درهمبافی
(interleaving) جریان بر
حسب ثانیه
rcfg (frac، پیشفرض:
0/1): بسامد
تزریق مجدد
پیکربندی
جریان بر
حسب ثانیه
unframer
توضیحات: بازنویس جریان
این فیلتر
برای اجبار
به
فریمبندی
مجدد (reframing)
منابع
ورودی
استفاده
میشود که
از
فریمبندی
داخلی
مشابه GPAC
(مانند ISOBMFF)
استفاده
میکنند،
اما
فریمبندی
یا
سیگنالدهی
آنها
معیوب است.
مثال
gpac -i src.mp4 unframer -o dst.mp4
این کار
موارد زیر
را انجام
میدهد:
- اجبار PIDهای
ورودی unframer به
قرارگیری
در قالب
سریالیشده
(AnnexB، ADTS، ...)
- فعالسازی
نمونهسازی
فریمبندها
(reframers) پس از
فیلتر unframer.
استفاده از
فیلتر unframer از
تخلیه
دادهها
روی دیسک (dump) و
سپس وارد
کردن مجدد،
یا سایر
روشهای
پیچیده
لولهکشی
دادهها (data piping)
جلوگیری
میکند.
بدون گزینه
writeuf
توضیحات: مبدل فریمبندیشده به فریمبندینشده
مبدل عمومی تکجریان به قالب بدون فریم (unframed)، که هنگام تبدیل PIDها استفاده میشود. این فیلتر نباید بهطور صریح بارگذاری شود.
بدون گزینه
ttmlmerge
توضیحات: ادغامکننده نمونههای TTML
نمونههای ورودی را در یک نمونه واحد TTML ادغام میکند. فرآیند ادغام در ابتدای سگمنتهای DASH مجدداً آغاز میشود.
بدون گزینه
uncvdec
توضیحات: رمزگشای UNCV
این فیلتر قالب پیکسلی UNCV را به یک قالب پیکسلی قابل استفاده تبدیل میکند.
گزینهها (تخصصی) (OPTIONS (EXPERT))
force_pf (bool،
پیشفرض: false):
نادیدهگرفتن
نگاشت
احتمالی به
قالبهای
پیکسلی GPAC
no_tile (bool،
پیشفرض: false):
نادیدهگرفتن
اطلاعات
کاشیبندی
(اشکالزدایی)
ghidmx
توضیحات: دیمالتیپلکسر GHI
این فیلتر محتوای از پیش نمایهشده را برای پردازش بههنگام (just-in-time) مانیفست، سگمنت اولیه (init segment) و سگمنتهای HAS مدیریت میکند
هشدار: این بخش در حال توسعه است؛ قالب نمایهها (باینری یا XML) ممکن است تا نهایی شدن این فیلتر تغییر کند.
تولید نمایهها (GENERATING INDEXES)
نمایهها
با استفاده
از فیلتر dasher و
یک
مدتزمان
مشخص برای
سگمنت
ساخته
میشوند.
مثال
gpac -i SRC [... -i SRCn] -o index.ghi:segdur=2
این دستور
یک نمایه
باینری
برای نشست DASH
میسازد.
مثال
gpac -i SRC -o index.ghix:segdur=2
این دستور یک نمایه XML برای نشست DASH میسازد.
هشدار: نمایههای XML تنها باید برای اهداف اشکالزدایی استفاده شوند، زیرا تجزیه (parse) آنها ممکن است زمان قابلتوجهی ببرد.
هنگام نمایهگذاری، الگوی پیشفرض مورد استفاده $Representation$_$Number$ است. این الگو در نمایه ذخیره میشود و هنگام تولید محتوا نباید دوباره مشخص شود.
از نمایه
میتوان
برای تولید
مانیفست،
گونههای
فرزند (child variants)
برای HLS،
قطعات
راهاندازی
(init segments) و قطعات (segments)
استفاده
کرد.
مثال
gpac -i index.ghi:gm=all -o dash/vod.mpd
این دستور مانیفست(ها) و قطعه(های) init را تولید میکند.
مثال
gpac -i index.ghi:rep=FOO:sn=10 -o dash/vod.mpd
این دستور قطعهٔ دهم از بازنمود با شناسهٔ FOO را تولید میکند.
نکته: هنگام تولید یک قطعه، فایل(های) مانیفست و قطعه(های) init نوشته نمیشوند. مقصد مانیفست (mpd یا m3u8) صرفاً برای برپاسازی زنجیرهٔ فیلتر و مسیر خروجی هدف استفاده میشود.
مثال
gpac -i index.ghi:gm=main -o dash/vod.m3u8
این دستور تنها مانیفست اصلی (MPD یا فهرست پخش اصلی HLS) را تولید میکند.
مثال
gpac -i index.ghi:gm=child:rep=FOO:out=BAR -o dash/vod.m3u8
این دستور مانیفست فرزند را برای بازنمود FOO در فایل BAR تولید میکند.
مثال
gpac -i index.ghi:gm=init:rep=FOO:out=BAR2 -o dash/vod.m3u8
این دستور قطعهٔ init را برای بازنمود FOO در فایل BAR2 تولید میکند.
خروجیهای فیلتر PIDهایی با استفاده از بستههای فریمبندیشده هستند که با مرزهای قطعه (segment boundaries) نشانهگذاری شدهاند و میتوان آنها را پیش از ورود به dasher به فیلترهای دیگر زنجیر کرد (برای مثال جهت رمزگذاری، ترنسکد و...).
اگر
شناسههای
بازنمود در
حین ایجاد
نمایه
اختصاص
داده
نشوند،
مقدار
پیشفرض
آنها
اندیس بر
پایهٔ ۱ از
منبع خواهد
بود.
میتوانید
با استفاده
از دستور
زیر آنها
را بررسی
کنید:
gpac -i src.ghi inspect:full
بازنمودهای مالتیپلکسشده (MUXED REPRESENTATIONS)
این فیلتر
میتواند
برای تولید
بازنمودهای
مالتیپلکسشده،
چه در زمان
تولید
مانیفست و
چه هنگام
تولید یک
قطعه
استفاده
شود.
مثال
gpac -i index.ghi:mux=A@V1@V2 -o dash/vod.mpd
این دستور مانیفستی تولید خواهد کرد که بازنمود A را با بازنمودهای V1 و V2 مالتیپلکس میکند.
مثال
gpac -i index.ghi:mux=A@V1@V2,T@V1@V2 -o dash/vod.mpd
این دستور مانیفستی تولید خواهد کرد که بازنمودهای A و T را با بازنمودهای V1 و V2 مالتیپلکس میکند.
مثال
gpac -i index.ghi:rep=V2:sn=5:mux=A@V2 -o dash/vod.mpd
این دستور قطعهٔ پنجم را شامل بازنمودهای A و V2 تولید خواهد کرد.
این فیلتر
هیچ وضعیتی
را ذخیره
نمیکند،
مسئولیت
استفاده از
اطلاعات
منسجم در
طول
فراخوانیهای
مختلف بر
عهدهٔ
کاربر است:
- الگوهای
قطعه (segment templates) را
تغییر
ندهید
-
بازنمودهای
مالتیپلکسشده
را به
پیکربندیهایی
که در
مانیفستهای
تولیدشده
اعلان
نشدهاند
تغییر
ندهید
توصیهها (RECOMMENDATIONS)
نمایهسازی
از MP4های
تکهبندیشده
(fragmented) و
تکهبندینشده
(non-fragmented)، MPEG-2 TS و
ورودیهای
دارای
قابلیت
جستوجو (seekable)
پشتیبانی
میکند.
- توصیه
میشود از MP4
تکهبندیشده
بهعنوان
قالب ورودی
استفاده
شود، زیرا
این کار
زمان
بارگذاری
فایل را به
شکل
چشمگیری
کاهش
میدهد.
- اگر از MP4
تکهبندینشده
استفاده
میشود،
توصیه
میشود از
فایلهای
تکترک (single-track)
استفاده
کنید تا
اندازهٔ movie box
کاهش یافته
و تجزیه (parsing)
سریعتر
شود.
- منابع MPEG-2 TS
کندتر
خواهند بود
چرا که
نیازمند
فریمبندی
مجدد PES و
بازآرایی AU
هستند که در
مقایسه با mp4
منجر به
ورودی/خروجیهای
(IO) بیشتری
میشود.
- سایر منابع
جستوجوپذیر
احتمالاً
کندتر
خواهند بود
(به دلیل
جستوجو/پرش
و
فریمبندی
مجدد) و
توصیه
نمیشوند.
gm (enum،
پیشفرض: main):
حالت تولید
مانیفست
* none: عدم تولید
مانیفست
(اگر sn برابر 0
نباشد
اعمال
میشود)
* all: تولید
همهٔ
مانیفستها
و قطعههای
init
* main: تولید
مانیفست
اصلی (MPD یا M3U8
اصلی)
* child: تولید
لیست پخش
فرعی برای HLS
* init: تولید
قطعهٔ init
force (bool،
پیشفرض: false):
اجبار به
بارگذاری
منابع در
تولید
مانیفست
جهت
اشکالزدایی
rep (str): نمایش (representation)
جهت تولید
sn (uint): شماره
قطعه جهت
تولید، 0
یعنی قطعهٔ
init
mux (strl): نمایش جهت
ترکیب (mux) - به
راهنمای
فیلتر رجوع
کنید
out (str): نام فایل
خروجی جهت
تولید
evgs
توضیحات: مقیاسبند ویدیویی EVG
این فیلتر
با استفاده
از
کتابخانهٔ EVG
در GPAC،
دادههای
ویدیویی
خام را به
اندازه و
فرمت پیکسل
مشخصشده
تغییر
مقیاس
میدهد.
تخصیص اندازهٔ خروجی
اگر .I osize برابر {0,0} باشد، ابعاد خروجی روی اندازهٔ ورودی تنظیم شده و نسبت ابعاد ورودی نادیده گرفته میشود.
اگر .I osize برابر {0,H} (یا {W,0}) باشد، عرض خروجی (یا ارتفاع) با رعایت نسبت ابعاد ورودی تنظیم خواهد شد. اگر .I keepar = nosrc باشد، نسبت ابعاد نمونهٔ ورودی نادیده گرفته میشود.
نسبت ابعاد و نسبت ابعاد نمونه
هنگامی که
نسبت ابعاد
نمونهٔ
خروجی
تنظیم شود،
ابعاد
خروجی بر
نسبت ابعاد
نمونهٔ
خروجی
تقسیم
میشوند.
مثال
evgs:osize=288x240:osar=3/2
ابعاد خروجی 192x240 خواهد بود.
هنگامی که
نسبت ابعاد
حفظ نشود (.I keepar = off):
- منبع به
ابعاد مد
نظر
بازنمونهبرداری
میشود
- اگر نسبت
ابعاد
خروجی
تنظیم نشده
باشد،
خروجی از
نسبت ابعاد
نمونهٔ
منبع
استفاده
خواهد کرد
هنگامی که
نسبت ابعاد
بهصورت
جزئی حفظ
شود (.I keepar = nosrc):
-
بازنمونهبرداری
روی
دادههای
ورودی بدون
در نظر
گرفتن نسبت
ابعاد
نمونهٔ
ورودی
انجام
میشود
- اگر نسبت
ابعاد
نمونهٔ
خروجی
تنظیم نشده
باشد (.I osar = 0/N)،
نسبت ابعاد
منبع به
خروجی
منتقل
میشود.
هنگامی که نسبت ابعاد بهطور کامل حفظ شود (.I keepar = full)، در صورت تنظیم نشدن، نسبت ابعاد خروجی به 1/1 اجبار میشود.
هنگامی که
نسبت ابعاد
نمونه حفظ
شود، فیلتر
موارد زیر
را انجام
خواهد داد:
- فریم ورودی
تغییر
مقیاس
یافته را در
مرکز فریم
خروجی قرار
میدهد
- پیکسلهای
اضافی را با
.I padclr پر
میکند
گزینهها (OPTIONS) (expert):
osize (v2di):
اندازهٔ
ویدیوی
خروجی
ofmt (pfmt، پیشفرض:
none): فرمت
پیکسل برای
ویدیوی
خروجی. در
صورت تنظیم
نشدن، از
فرمت ورودی
استفاده
میشود
ofr (bool، پیشفرض:
false): اجبار به
محدودهٔ
کامل (full range) در
خروجی
keepar (enum، پیشفرض:
off): حفظ نسبت
ابعاد
* off: نادیده
گرفتن نسبت
ابعاد
* full: رعایت
نسبت
ابعاد، با
اعمال
اطلاعات
نسبت ابعاد
نمونهٔ
ورودی
* nosrc: رعایت
نسبت
ابعاد، اما
نادیده
گرفتن نسبت
ابعاد
نمونهٔ
ورودی
padclr (str،
پیشفرض: black):
رنگ
پاکسازی
هنگام
استفاده از
حفظ نسبت
ابعاد
osar (frac، پیشفرض:
0/1): اجبار
نسبت ابعاد
پیکسل
خروجی
nbth (sint، پیشفرض:
-1): تعداد
نخها جهت
استفاده، -1
به معنای
تمام
هستههاست
hq (bool، پیشفرض:
false): استفاده
از
درونیابی
دوخطی (bilinear)
بهجای
نزدیکترین
پیکسل
ccdec
توضیحات: رمزگشای زیرنویس پنهان (Closed-Caption)
این فیلتر
زیرنویسهای
پنهان (Closed Captions) را
به فرمت
بدون فریم SRT
رمزگشایی
میکند.
انواع
رسانههای
ویدیویی
پشتیبانیشده
جریانهای
MPEG2، AVC، HEVC، VVC و AV1
هستند.
تنها زیرمجموعهای از CEA 608/708 پشتیبانی میشود.
field (uint،
پیشفرض: 1):
فیلد برای
رمزگشایی
agg (enum، پیشفرض:
none): حالت
تجمیع
خروجی
* none: هدایت
دادهها
همانگونه
که
رمزگشایی
شدهاند
(پیشفرض)
* word: تجمیع
کلمات (جدا
شده با
فاصله)
ccenc
توضیحات: رمزگذار Closed-Caption
این فیلتر
Closed Captionها را در
جریان
ویدیویی
رمزگذاری
میکند.
انواع
رسانههای
ویدیویی
پشتیبانیشده
جریانهای
MPEG2، AVC، HEVC، VVC و AV1
هستند.
تنها زیرمجموعهای از CEA 608/708 پشتیبانی میشود.
گزینهها (تخصصی) (Options (expert)):
vb_time (frac، پیشفرض: 1/1): مدت زمان نگهداشتن بستههای ویدیویی در صورت نبود زیرنویس
scte35dec
توضیحات: رمزگشای SCTE35
این فیلتر
نشانگرهای
SCTE-35 متصلشده
به عنوان
ویژگی به
بستههای
صوتی و
ویدیویی
یا درون یک
جریان
اختصاصی را
به قالب
درخواستی
تبدیل
میکند.
همچنین
باکسهای
خالی 'emeb' را در
این بین،
طبق
قطعهبندی
مشخصشده
توسط گراف
ایجاد
میکند.
گزینهها (تخصصی) (Options (expert)):
mode (enum،
پیشفرض: evte):
حالت
عملکرد
* evte: خروجی
دادن
باکسهای emib/emeb
برای Event Tracks
* m2ts: ارسال
فوری کل splice_info_section
مربوط به MPEG-2 TS
طبق
استاندارد
ANSI/SCTE 67 2017 (13.1.1.3)
* passthrough: حالت
عبور
مستقیم (pass-through)
با افزودن
ویژگی cue start در
نقاط برش (splice
points)
sampdur (frac،
پیشفرض: 0/1):
مدتزمان
قطعهبندی
بر حسب
ثانیه.
مقدار
پیشفرض 0
تنها هنگام
تغییر
محتوا
تخلیه (flush)
میکند
prop (bool، پیشفرض:
false): همچنین
پیوست کردن
دادهها به
عنوان
ویژگی در
صورتی که dasher
برای حالت
دوگانه
درونباند+برونباند
(dual in+out band) به آن
نیاز داشته
باشد
seiload
توضیحات: بارگذار پیام SEI
این فیلتر فرادادههای درونباندی (inband) شناختهشده را به عنوان ویژگیهای بسته بارگذاری میکند
بدون گزینه
wcdec
توضیحات: رمزگشای WebCodec
این فیلتر جریانهای ویدیویی را با استفاده از رمزگشای WebCodec مرورگر رمزگشایی میکند
گزینهها (تخصصی) (Options (expert)):
queued (uint، پیشفرض: 10): حداکثر تعداد بستهها برای قرارگیری در صف نمونه webcodec
wcenc
توضیحات: رمزگذار WebCodec
این فیلتر جریانهای ویدیویی را با استفاده از رمزگذار WebCodec مرورگر رمزگذاری میکند
گزینهها (تخصصی) (Options (expert)):
c (str): شناسه
کدک.
میتواند
هر نام کدک
پشتیبانیشده
GPAC یا نام کدک
ffmpeg باشد - پس از
مقداردهی
اولیه به
نام کدک ffmpeg
بهروزرسانی
میشود
fintra (frac، پیشفرض:
-1/1): اجبار
فریمهای intra / IDR
در دوره
زمانی
دادهشده
بر حسب
ثانیه؛ به
عنوان مثال
fintra=2 یک فریم intra
را هر ۲
ثانیه
اجبار
میکند و fintra=1001/1000
یک فریم intra را
هر ۳۰ فریم
در ویدیوی
30000/1001=29.97 fps اجبار
خواهد کرد؛
برای صوت
نادیده
گرفته
میشود
all_intra (bool،
پیشفرض: false،
قابل
بهروزرسانی):
فقط
فریمهای intra
تولید شوند
b (uint، پیشفرض: 0):
نرخ بیت بر
حسب بیت بر
ثانیه،
پیشفرض 2M
برای ویدیو
و 124K برای صوت
است
queued (uint، پیشفرض:
10): حداکثر
تعداد
بستهها
برای
قرارگیری
در صف نمونه
webcodec
توضیحات: ضبط صوت و تصویر مبتنی بر وب
این فیلتر جریانهای صوتی و تصویری را از MediaStreamTrackProcessor مرورگر دریافت میکند
طرحهای URL
پشتیبانیشده:
- video:// از دوربین
دریافت
میکند
- audio:// از
میکروفون
دریافت
میکند
- av:// هم صدا را
از
میکروفون و
هم تصویر را
از دوربین
دریافت
میکند
- video://ELTID از عنصر DOM
با شناسه ELTID
دریافت
میکند
(عنصر باید
عنصری
معتبر و
موردقبول
برای
سازندهٔ VideoFrame
باشد)
گزینهها (تخصصی) (OPTIONS)
src (str): نشانی
اینترنتی (URL)
منبع
vsize (v2di، پیشفرض:
0x0):
تفکیکپذیری
مد نظر
وبکم
back (bool، پیشفرض:
false): استفاده
از دوربین
پشت
ntp (bool، پیشفرض:
false):
نشانهگذاری
بستهها با
NTP
alpha (bool، پیشفرض:
false): حفظ آلفا
هنگام
دریافت canvas
fps (frac، پیشفرض:
0/1): نرخ فریم
مورد
استفاده
هنگام
دریافت
تصاویر -
مقدار 0 FPS به
معنای
تکتصویر
است
dtout
توضیحات: خروجی SDI کارتهای DekTec
این فیلتر خروجی SDI را برای استفاده با کارتهای DTA 2174 یا DTA 2154 فراهم میکند.
گزینهها (تخصصی) (OPTIONS)
bus (sint،
پیشفرض: -1):
شماره
گذرگاه PCI. در
صورت عدم
تنظیم، از
شناسایی
خودکار
دستگاه
استفاده
میشود
slot (sint، پیشفرض:
-1): شماره
گذرگاه PCI. در
صورت عدم
تنظیم، از
شناسایی
خودکار
دستگاه
استفاده
میشود
fps (frac، پیشفرض:
30/1): نرخ فریم (FPS)
پیشفرض در
صورت عدم
تشخیص fps
جریان
ورودی
clip (bool، پیشفرض:
false):
محدودسازی
دادههای YUV
به محدودهٔ
معتبر SDI،
کندتر
port (uint، پیشفرض:
1): تنظیم
درگاه
خروجی SDI
کارت
start (dbl، پیشفرض:
0.0): تنظیم
آفست آغاز
پخش، [-1, 0] به
معنای درصد
مدتزمان
رسانه است،
مثلاً -1 == dur
ohevcdec
توضیحات: رمزگشای OpenHEVC
این فیلتر HEVC و LHVC (افزونههای مقیاسپذیر HEVC) را از یک یا چند PID از طریق کتابخانهٔ OpenHEVC رمزگشایی میکند
گزینهها (تخصصی) (OPTIONS)
threading (enum،
پیشفرض: frame):
تنظیم حالت
ریسهبندی
(threading)
* frameslice: رمزگشایی
موازی هم
فریمها و
هم برشها (slices)
* frame: رمزگشایی
موازی
فریمها
* slice: رمزگشایی
موازی
برشها (slices)
nb_threads (uint،
پیشفرض: 0):
تنظیم
تعداد
ریسهها
(اگر 0 باشد،
از تعداد
هستهها
منهای یک
استفاده
میکند)
no_copy (bool،
پیشفرض: false):
ارسال
مستقیم
فریم
رمزگشاییشدهٔ
داخلی بدون
رونوشت (کپی)
pack_hfr (bool،
پیشفرض: false):
بستهبندی
۴ فریم
متوالی در
یک خروجی
واحد
seek_reset (bool،
پیشفرض: false):
راهاندازی
مجدد
رمزگشا
هنگام
جستجو (seek)
force_stereo (bool،
پیشفرض: true):
استفاده از
خروجی
استریو
برای
چندنمایی
(فقط
بالا-پایین)
reset_switch (bool،
پیشفرض: false):
راهاندازی
مجدد
رمزگشا
هنگام
تغییر
پیکربندی
uncvg
توضیحات:
تولیدکنندهٔ
ویدیوی
فشردهنشده
نسخه: 1.0
نویسنده:
تیم GPAC - (c) Telecom ParisTech 2023 -
مجوز LGPL v2
این فیلتر
امکان
تولید
تصاویر
آزمایشی را
برای ISO/IEC 23001-17
فراهم
میکند
پیکسلهای
تولیدشده
میتوانند
شامل موارد
زیر باشند:
- الگویی از
رنگها در
ستونها،
یا در
مستطیلها
در صورت
تنظیم .I sq ، با
استفاده از
پالت
مشخصشده.
- یک منبع
تصویر در
صورت
استفاده از .I
img .
رنگهای مشخصشده در پالت میتوانند رنگهای پیشفرض GPAC (دستور gpac -h colors را ببینید)، 0xRRGGBB یا 0xAARRGGBB باشند
هنگام تولید ویدیو، پیکسلها در هر فریم به سمت چپ شیفت داده میشوند
مؤلفهها
به صورت N[bpc][+k]
توصیف
میشوند که
در آن:
* N: نوع مؤلفه،
یکی از M(mono)، Y،
U، V، R، G، B، A، d(depth)،
disp، p(palette)، f(filterArray)، x (pad)
* bpc: مقدار بیت
بر مؤلفه،
پیشفرض 8
است. مقادیر
غیرصحیح
باید یکی از
موارد زیر
باشند:
* sft: مقدار
ممیز شناور 16
بیتی
* flt: مقدار
ممیز شناور 32
بیتی
* dbl: مقدار
ممیز شناور 64
بیتی
* dblx: مقدار
ممیز شناور
128 بیتی
* cps: مقدار
مختلط به
صورت دو عدد
ممیز شناور
هرکدام 16
بیتی
* cpf: مقدار
مختلط به
صورت دو عدد
ممیز شناور
هرکدام 32
بیتی
* cpd: مقدار
مختلط به
صورت دو عدد
ممیز شناور
هرکدام 64
بیتی
* cpx: مقدار
مختلط به
صورت دو عدد
ممیز شناور
هرکدام 128
بیتی
* k: اجبار
همترازی
مؤلفه بر
روی k بایت،
پیشفرض 0
است (بدون
همترازی)
vsize (v2d،
پیشفرض: 128x128):
عرض و
ارتفاع
تصویر
خروجی
c (strl، پیشفرض:
R8,G8,B8):
مولفههای
تصویر
tiles (v2d، پیشفرض:
1x1): تعداد
کاشیهای
افقی و
عمودی
interleave (enum،
پیشفرض: pix):
نوع
درهمتنیدگی
* comp:
درهمتنیدگی
بر پایه
مولفه
(حالتهای planar)
* pix:
درهمتنیدگی
بر پایه
پیکسل
(حالتهای packed)
* mix:
درهمتنیدگی
بر پایه
پیکسل برای UV
(حالتهای
semi-planar)
* row:
درهمتنیدگی
بر پایه
ردیف
* tile:
درهمتنیدگی
کاشی-مولفه
* multi:
درهمتنیدگی
بر پایه
پیکسل
(حالتهای packed)
برای
حالتهای
زیرنمونهبرداریشده
sampling (enum،
پیشفرض: none):
انواع
نمونهبرداری
* none: بدون
زیرنمونهبرداری
* 422:
زیرنمونهبرداری
YUV 4:2:2
* 420:
زیرنمونهبرداری
YUV 4:2:0
* 411:
زیرنمونهبرداری
YUV 4:1:1
block_size (uint،
پیشفرض: 0):
اندازه
بلوک به
بایت
pad_lsb (bool،
پیشفرض: false):
بیتهای
فاصلهساز
در LSB بلوک
قرار دارند
ble (bool، پیشفرض:
false): بلوک
بهصورت little endian
است
br (bool، پیشفرض:
false): بلوک
دارای
مولفههای
معکوس است
pixel_size (uint،
پیشفرض: 0):
اندازه
پیکسل به
بایت
row_align (uint،
پیشفرض: 0):
تراز ردیف
به بایت
tile_align (uint،
پیشفرض: 0):
تراز کاشی
به بایت
cle (bool، پیشفرض:
false):
مولفههای
ترازشده
با بایت
بهصورت little endian
هستند
img (str، پیشفرض: ):
استفاده از
تصویر
مشخصشده
بهعنوان
ورودی به
جای تولید RGB
asize (bool، پیشفرض:
false): استفاده
از اندازه
تصویر
ورودی
pal (strl، پیشفرض:
red,green,blue,white,black,yellow,cyan,grey,orange,violet):
پالت
پیشفرض
برای تولید
رنگ
fa (strl، پیشفرض:
B,G,G,R): فیلتر
شبهبایر -
تنها 2x2 روی
مولفههای
R,G,B پشتیبانی
میشود
bpm (strl، پیشفرض: ):
تنظیم
نگاشت
پیکسلهای
خراب حسگر
بهصورت
فهرستی از cN
(ستون خراب)،
rM (ردیف خراب)
یا NxM
(تکپیکسل)
fps (frac، پیشفرض:
25/1): نرخ فریم
جهت تولید -
استفاده از 0
فرایند item muxing
را فعال
میکند
dur (frac، پیشفرض:
1/1): مدتزمان
تولید -
استفاده از 0
فرایند item muxing
را فعال
میکند
cloc (uint، پیشفرض:
-1، minmax: -1,6): تنظیم
نوع موقعیت
کروما (chroma location)
stereo (bool، پیشفرض:
false): استخراج
یک تصویر
استریو
sq (flt، پیشفرض: 0):
تولید
الگوهای
مربعی به
جای
ستونها
shade (bool، پیشفرض:
false): سایهزدن
پیکسلها
از رنگ سیاه
در پایین تا
شدت کامل در
بالا
scpt (bool، پیشفرض:
false): استفاده
از یک رنگ
برای هر
کاشی، کاشی
نخست از
اولین رنگ
در پالت
استفاده
میکند
glpush
توضیحات:
بارگذار
بافت در GPU
نسخه: 1.0
نویسنده:
تیم GPAC
این فیلتر جریانهای ویدیویی ورودی را بهصورت بافتهای OpenGL به GPU ارسال میکند. میتوان از آن برای شبیهسازی رمزگشاهای سختافزاری که بافتهای OpenGL را توزیع میکنند استفاده کرد.
بدون گزینه
thumbs
توضیحات:
سازنده
تصویر
بندانگشتی
نسخه: 1.0
نویسنده:
تیم GPAC
این فیلتر از یک جریان ویدیویی نماگرفت تولید میکند.
ویدیوی
ورودی با
ضریب مقیاس .I
scale کاهش
نمونهبرداری
میشود.
اندازه
خروجی بر
اساس تعداد
تصاویر در
هر خط و هر
ستون در .I grid
پیکربندی
میگردد.
پس از
پیکربندی،
اندازه
خروجی دیگر
تغییر داده
نمیشود.
گزینه .I snap مشخص میکند که در هر چند ثانیه معین، یک فریم ویدیو استفاده شود. اگر مقدار 0 باشد، همه فریمهای ورودی استفاده میشوند.
اگر تعداد ردیفها 0 باشد، بر اساس مدتزمان منبع و زمان .I snap مورد نظر محاسبه خواهد شد، و در صورتی که قابل حل نباشد، مقدار پیشفرض آن 10 خواهد بود.
برای خروجی دادن یک تصویر به ازای هر فریم ورودی، از :grid=1x1 استفاده کنید.
اگر یک
تکتصویر
به ازای هر
فریم خروجی
استفاده
شود، مقدار
پیشفرض
برای .I snap
برابر 0 و
برای .I scale
برابر 1 است.
در غیر این
صورت،
مقدار
پیشفرض
برای .I snap
برابر 1
ثانیه و
برای .I scale
برابر 10 است.
میتوان
یک خط متن را
روی هر فریم
درج کرد.
کلمات
کلیدی از
پیش
تعریفشده
را میتوان
در متن
ورودی
استفاده
کرد که
بهصورت $KEYWORD$
مشخص
میشوند:
* ts: با برچسب
زمان (timestamp)
بسته
جایگزین
میشود
* timescale: با مقیاس
زمانی PID
جایگزین
میشود
* time: با زمان
بسته
بهصورت HH:MM:SS.ms
جایگزین
میشود
* cpu: با میزان
مصرف فعلی CPU
توسط
فرایند
جایگزین
میشود
* mem: با میزان
مصرف فعلی
حافظه توسط
فرایند
جایگزین
میشود
* version: با نسخه GPAC
جایگزین
میشود
* fversion: با نسخه
کامل GPAC
جایگزین
میشود
* mae: با
میانگین
قدر مطلق
خطا (MAE) نسبت
به فریم
قبلی
جایگزین
میشود
* mse: با
میانگین
مربعات خطا
(MSE) نسبت به
فریم قبلی
جایگزین
میشود
* P4CC, PropName: با مشخصه
متناظر PID
جایگزین
میشود
مثال
gpac -i src reframer:saps=1 thumbs:snap=30:grid=6x30 -o dump/$num$.png
این دستور تصاویری را فقط از فریمهای کلیدی (key-frames) تولید میکند و هر 30 ثانیه یک تصویر درج مینماید. استفاده از فیلتر کردن فریمهای کلیدی بسیار سریعتر است، اما در صورتی که فریمهای کلیدی کافی در منبع وجود نداشته باشد ممکن است نتایج غیرمنتظرهای به همراه داشته باشد.
مثال
gpac -i src thumbs:snap=0:grid=5x5 -o dump/$num$.png
این دستور در نرخ 25 fps، در هر ثانیه یک تصویر شامل 25 فریم تولید خواهد کرد.
اگر یک تکتصویر به ازای هر فریم خروجی استفاده شود و ضریب مقیاس 1 باشد، بسته ورودی مجدداً بهعنوان ورودی همراه با متن و گرافیک همپوشانیشده (overlaid) استفاده میشود.
مثال
gpac -i src thumbs:grid=1x1:txt='Frame $time$' -o dump/$num$.png
این دستور متن را روی هر فریم تزریق میکند و زمانبندی و سایر مشخصههای بسته را حفظ مینماید.
میتوان یک خروجی json را در .I list ورودی مشخص کرد تا به برنامهها امکان دهد موقعیت فریم در تصویر خروجی را از روی زمانبندی آن بازیابی کنند.
این فیلتر
میتواند
معیارهای
خطای قدر
مطلق و/یا
مجذور
میانگین
خطا را بین
تصاویر
متوالی
محاسبه
کرده و اگر
معیار
محاسبهشده
کمتر از
آستانهٔ
مشخصشده
باشد،
تصویر را
نادیده
بگیرد.
اگر هر دو
آستانهٔ .I mae و .I
mse برابر با ۰
باشند،
تشخیص صحنه
انجام
نمیشود
(پیشفرض).
اگر هر دو
آستانهٔ .I mae و .I
mse مقداری
غیر از ۰
داشته
باشند،
فریم در
صورتی
اضافه
میشود که
از هر دو
آستانه
عبور کند.
برای هر دو معیار، مقدار ۰ به این معنی است که تمام پیکسلها یکسان هستند و مقدار ۱۰۰ یعنی تمام پیکسلها ۱۰۰٪ اختلاف شدت روشنایی دارند (مانند سیاه در برابر سفید).
تشخیص
صحنه پس از
فیلترسازی .I
snap انجام
میشود و از
موارد زیر
استفاده
میکند:
- فریم قبلی
در جریان
داده، چه
اضافه شده
باشد و چه
نشده باشد،
در صورتی که
.I scref تنظیم
نشده باشد،
- آخرین فریم
اضافهشده،
در غیر این
صورت.
آستانههای معمول برای تشخیص برش صحنه بین ۱۴ تا ۲۰ برای .I mae و ۵ تا ۷ برای .I mse هستند.
از آنجا که این فرایند پردازش سنگینی دارد، توصیه میشود در ترکیب با گزینش فریمهای کلیدی (key-frames) استفاده شود:
مثال:
gpac -i src reframer:saps=1 thumbs:mae=15 -o dump/$num$.png
در صورتی که هیچ برش صحنهای یافت نشود، میتوان از گزینهٔ .I maxsnap برای اجبار به درج تصویر پس از زمان مشخصشده استفاده کرد.
گزینهها (تخصصی) (OPTIONS (expert)):
grid (v2di،
پیشفرض: 6x0):
تعداد
تصاویر در
سطرها و
ستونها
scale (dbl، پیشفرض:
-1): ضریب
مقیاس برای
اندازهٔ
ورودی
mae (uint، پیشفرض:
0، minmax: 0,100):
آستانهٔ
تفاوت صحنه
با استفاده
از میانگین
قدر مطلق
خطا (MAE)
mse (uint، پیشفرض:
0، minmax: 0,100):
آستانهٔ
تفاوت صحنه
با استفاده
از میانگین
مجذور خطا (MSE)
lw (dbl، پیشفرض:
0.0): عرض خط بین
تصاویر بر
حسب پیکسل
lc (str، پیشفرض:
white): رنگ خط
clear (str، پیشفرض:
white): رنگ
پاکسازی
پسزمینه
snap (dbl، پیشفرض:
-1): مدتزمان
بین
تصاویر، 0
برای همهٔ
تصاویر
maxsnap (dbl، پیشفرض:
-1): حداکثر
مدتزمان
بین دو
بندانگشتی
هنگامی که
تشخیص
تغییر صحنه
فعال است
pfmt (pfmt، پیشفرض:
rgb): قالب
پیکسلی
خروجی
txt (str، پیشفرض: ):
متن
درجشونده
در هر
بندانگشتی
tc (str، پیشفرض:
white): رنگ متن
tb (str، پیشفرض:
black): سایهٔ متن
font (str، پیشفرض:
SANS): قلم مورد
استفاده
fs (dbl، پیشفرض: 10):
اندازهٔ
قلم بر حسب
درصد از
ارتفاع
مقیاسبندیشده
tv (dbl، پیشفرض: 0):
موقعیت
عمودی متن
بر حسب درصد
از ارتفاع
مقیاسبندیشده
thread (sint، پیشفرض:
-1): تعداد
رشتهها
برای
رسترایزر
نرمافزاری،
-1 برای تمام
هستههای
موجود
blt (bool، پیشفرض:
true): استفاده
از blit به جای
رسترایزر
نرمافزاری
scref (bool، پیشفرض:
false): استفاده
از آخرین
تصویر
درجشده به
عنوان مرجع
برای تشخیص
تغییر صحنه
dropfirst (bool،
پیشفرض: false):
نادیده
گرفتن
تصویر نخست
list (str، پیشفرض:
null): صدور
فهرست json از
زمانها و
موقعیتهای
فریم به
فایل
مشخصشده
lxy (bool، پیشفرض:
false): افزودن
صریح x و y در
خروجی json
txtgen
توضیحات:
تولیدکنندهٔ
متن (Text Generator)
نسخه: 1.0
نویسنده: GPAC Team
این فیلتر
جریانهای
متنی را بر
اساس فایل .I src
ارائهشده
تولید
میکند.
بهطور
پیشفرض،
فیلتر از یک
فایل متنی lorem
ipsum استفاده
میکند
پارامتر .I type
حالت تولید
متن را
تعیین
میکند. اگر
روی 'txt' تنظیم
شود، فیلتر
متن را بر
اساس فایل
منبع تولید
خواهد کرد
اگر روی 'utc'
تنظیم شود،
فیلتر متن
را بر اساس
زمان کنونی
UTC تولید
میکند. اگر
روی 'ntp' تنظیم
شود، فیلتر
متن را بر
اساس زمان
کنونی NTP
تولید
خواهد کرد
هنگامی که .I unit
روی 'w' تنظیم
شده باشد،
فیلتر متن
را بر اساس
کلمات
تولید
میکند.
هنگامی که
روی 'l' تنظیم
شود، فیلتر
متن را بر
اساس خطوط
تولید
خواهد کرد
پارامتر .I fdur
مدتزمان
فریم جریان
متن را
تعیین
میکند. کل
مدتزمان
جریان متن
توسط
پارامتر .I dur
مشخص
میشود. اگر
روی 0/0 تنظیم
شود، جریان
متن
بیپایان
خواهد بود
پارامتر .I rollup
حالت
پیمایش
روبهبالا
(roll-up) را تا سقف
تعداد خطوط
مشخصشده
فعال
میکند. در
حالت roll-up،
فیلتر متن
را تا رسیدن
به تعداد
خطوط
تعیینشده
انباشته
میکند.
با رسیدن به
این تعداد
خطوط،
فیلتر خط
نخست را حذف
کرده و به
جمعآوری
متن ادامه
میدهد
میتوان از .I
rollup در ترکیب
با تنظیم .I unit
روی 'l' برای
ایجاد
جلوهٔ
زیرنویس
پیمایشی (roll-up subtitle)
استفاده
کرد؛ یا .I unit را
روی 'w' تنظیم
نمود تا
جلوهٔ متن
پیمایشی
ایجاد شود.
پارامتر .I lmax
حداکثر
تعداد
نویسهها
در یک خط را
تعیین
میکند. اگر
خط موجود در
فایل منبع
طولانیتر
از این
باشد، متن
اضافی
شکسته (wrap)
میشود.
مقدار 0 به
معنای عدم
وجود
محدودیت
است
هنگامی که .I rt
روی true تنظیم
شود، فیلتر
متن را
بهصورت
بلادرنگ (real-time)
تولید
میکند. اگر
روی false تنظیم
گردد،
فیلتر متن
را با
حداکثر
سرعت ممکن
تولید
خواهد کرد
src (str،
پیشفرض:
/usr/local/share/gpac/scripts/jsf/txtgen/lipsum.txt):
منبع متن. در
صورت عدم
تنظیم،
فیلتر از
متن lorem ipsum
استفاده
خواهد کرد
type (enum، پیشفرض:
txt): نوع متن
برای تولید
* txt: متن ساده
(از گزینه src
استفاده
میکند)
* utc: زمان UTC
* ntp: زمان NTP
unit (enum،
پیشفرض: l):
حداقل واحد
متن از منبع
* w: کلمه
* l: خط
fdur (frac،
پیشفرض: 1/1):
مدتزمان
هر فریم
lmax (uint، پیشفرض:
32): حداکثر
تعداد
نویسهها
در یک خط. اگر
خط در فایل
منبع
طولانیتر
از این
مقدار
باشد، متن
اضافی
شکسته (wrap)
خواهد شد.
مقدار 0 به
معنای عدم
وجود
محدودیت
است
dur (frac، پیشفرض:
0/0): مدتزمان
جریان متن
rollup (uint، پیشفرض:
0): فعالسازی
حالت
بالاآمدن
تدریجی (roll-up) تا
تعداد خطوط
مشخصشده
lock (bool، پیشفرض:
false): قفلکردن
زمانبندی
با تولید
متن
rt (bool، پیشفرض:
true): حالت
زمانواقعی
(real-time)
mediaserver
توضیحات:
سرور
چندرسانهای
(Media Server)
نسخه: 1.0
نویسنده: GPAC team - (c)
Telecom Paris 2024 - license LGPL v2
این فیلتر یک سرور HTTP و پروکسی برای درخواستهای GET و HEAD است که از منابع Multicast ABR پشتیبانی میکند.
این فیلتر
هیچ PIDای
تولید
نمیکند،
بلکه به
فیلتر
خروجی HTTP
متصل
میشود.
اگر هیچ
فیلتر
خروجی HTTP در
نشست (session) مشخص
نشده باشد،
فیلتر یکی
ایجاد
خواهد کرد.
فایل .gpac_auth، در
صورت وجود
در
دایرکتوری
کاری فعلی،
برای احراز
هویت
استفاده
خواهد شد
مگر اینکه --rdirs
تنظیم شده
باشد.
اگر نیاز
به تعیین
گزینههای
بیشتری
برای فیلتر
خروجی HTTP
باشد،
میتوان
آنها را به
عنوان
گزینههای
محلی یا با
استفاده از
گزینههای
سراسری
ارسال کرد:
gpac mediaserver:cors=on --user_agent=MyUser
اگرچه
توصیه
نمیشود،
اما سرور را
میتوان به
صورت صریح
نیز مشخص
کرد:
gpac mediaserver httpout:OPTS
در این حالت، اولین فیلتر httpout ایجادشده مورد استفاده قرار خواهد گرفت.
مدیریت پیشفرض درخواستهای فیلتر httpout از طریق دایرکتوریهای خواندن / نوشتن غیرفعال است.
پیکربندی سرویسها (SERVICES CONFIGURATION)
پیکربندی
سرویس با
استفاده از .I
scfg تنظیم
میشود. این
پیکربندی
باید یک
فایل JSON شامل
یک آرایه
واحد از
سرویسها
باشد.
هر سرویس یک
شیء JSON با یک
یا چند مورد
از
ویژگیهای
زیر است:
* id: (string،
پیشفرض: null)
شناسه
سرویس مورد
استفاده
برای
گزارشها (logs)
* active: (boolean،
پیشفرض: true)
در صورت false
بودن،
سرویس
نادیده
گرفته
میشود
* http: (string،
پیشفرض: null)
نشانی URL
سرویس
دوردست جهت
پروکسیکردن
(یا نام منبع
یا مسیر
سرور)
* gcache: (boolean،
پیشفرض: false)
استفاده از
حافظه موقت
(کش) دیسک
محلی gpac
هنگام
واکشی
رسانه از HTTP
برای این
سرویس
* local: (string،
پیشفرض: null)
نقطه اتصال
محلی (mount point) این
سرویس
* keepalive: (number،
پیشفرض: 4)
حذف سرویس
در صورتی که
برای مدت
زمان
مشخصشده
به ثانیه
هیچ
درخواستی
دریافت
نشود (مقدار 0
سرویس را
مجبور
میکند تا
همیشه در
حافظه باقی
بماند)
* mabr: (string،
پیشفرض: null)
نشانی منبع
چندپخشی ABR (Multicast ABR)
برای این
سرویس
* timeshift: (number،
پیشفرض: 10)
مدتزمان
به ثانیه که
یک فایل
کششده در
حافظه باقی
میماند
* unload: (number،
پیشفرض: 4)
سیاست
تخلیه
چندپخشی (multicast unload)
* activate: (number،
پیشفرض: 1)
سیاست
فعالسازی
چندپخشی (multicast
activation)
* mcache: (boolean،
پیشفرض: false)
کشکردن
فایلهای
مانیفست
* repair: (string،
پیشفرض: false)
فعالسازی
ترمیم
تکپخشی (unicast repair)
در پشته MABR
* false:
غیرفعالسازی
ترمیم
* true:
فعالسازی
ترمیم با
استفاده از
URL منبع یا
سرورهای
ترمیم
مشخصشده
در MABR
* auto:
فعالسازی
ترمیم تنها
از طریق
سرورهای
ترمیم
مشخصشده
در MABR
* check_ip: (boolean،
پیشفرض: false)
نظارت بر
نشانی IP و
درگاه
بهجای
اتصال
هنگام
ردیابی
کلاینتهای
فعال
* noproxy: (boolean)
غیرفعالسازی
پروکسی
برای سرویس
هنگام
تنظیم نقطه
اتصال محلی.
پیشفرض در
صورت تنظیم
هر دو گزینه
local و http برابر
با true و در غیر
این صورت false
است
* sources: (array،
پیشفرض: null)
فهرستی از
اشیاء
منابع برای
سرویسهای
فقط-فایل. هر
منبع دارای
ویژگیهای
زیر است:
* name: نام مورد
استفاده در
مسیر منبع،
* url: نشانی URL
محلی یا
دوردست
برای
استفاده در
این منبع.
* js: (string،
پیشفرض: null)
تحلیلگر
درخواست (request resolver)
توکار یا
سفارشی
هر شیء JSON که ویژگی comment در آن تنظیم شده باشد، نادیده گرفته خواهد شد.
همه ویژگیها برای هر نوع سرویسی استفاده نمیشوند و ویژگیهای دیگر میتوانند توسط تحلیلگرهای درخواست سفارشی تعریف شوند.
تمامی
سرویسهایی
که از گزینه
http استفاده
میکنند،
میتوانند
به جای
پروکسی
شدن، بدون
افشای
نشانی URL
مبدأ توسط
سرور ارائه
شوند. برای
فعالسازی
این
قابلیت،
گزینه
پیکربندی
سرویس local
باید روی
یکی از
موارد زیر
تنظیم شود:
- مسیر سرور
ارائهشده،
که در این
حالت
نامهای
مانیفست
بازنویسی
نمیشوند
- یا مسیر
مانیفست
ارائهشده،
که در این
حالت
نامهای
مانیفست
بازنویسی
میشوند،
اما تنها یک
مانیفست
میتواند
ارائه شود
(با
سرویسهای
دوگانه MPD و M3U8
کار
نمیکند)
مثال
{ "http": "https://test.com/live/dash/live.mpd",
"local": "/service1/"}
سرور هر درخواست /service1/foo/bar.ext را به https://test.com/live/dash/foo/bar.ext ترجمه خواهد کرد.
مثال
{ "http": "https://test.com/live/dash/live.mpd",
"local": "/service1/manifest.mpd"}
سرور
موارد زیر
را ترجمه
خواهد کرد:
- درخواست
/service1/manifest.mpd را به
https://test.com/live/dash/live.mpd
- هر درخواست
/service1/foo/bar.ext را به
https://test.com/live/dash/foo/bar.ext
نکته: نشانی URL باید به یک زیردایرکتوری مستقل از سایت راه دور اشاره کند. هر نشانی URL خارج از این دایرکتوری یا با خطا مواجه شده یا به عنوان یک مسیر مطلق در سایت راه دور تحلیل خواهد شد.
هنگامی که local تنظیم نشده باشد، این سرویسها همواره به عنوان پروکسی برای نشانی URL در http عمل میکنند.
هنگامی که noproxy به صراحت روی false برای سرویسهای دارای هر دو گزینه http و local تنظیم شده باشد، نشانی URL راه دور به عنوان یک سرویس پروکسی نیز در دسترس خواهد بود.
پروکسی و رله HTTP (HTTP Proxy and Relay)
سرور میتواند به عنوان یک پروکسی برای درخواستهای HTTP، چه برای تمامی درخواستها و چه بر اساس دامنه یا نام منبع عمل کند.
پارامترهای پیکربندی سرویس مورد استفاده: http (اجباری)، gcache، local.
پیکربندی
برای
فعالسازی
پروکسی
برای یک
مسیر شبکه
خاص:
{ "http": "https://test.com/video"}
پیکربندی
برای
فعالسازی
پروکسی
برای هر
مسیر شبکه:
{ "http": "*"}
پیکربندی
برای یک رله
روی یک مسیر
مشخص:
{ "http": "https://test.com/some/path/to/video",
"local": "/myvids/"}
این پیکربندی هر درخواست http://localhost/myvids/* را به https://test.com/some/path/to/video/* هدایت خواهد کرد.
نکته: درخواستها در این حالت هرگز در حافظه کَش نمیشوند، اما اگر gcache تنظیم شده باشد، میتوانند روی دیسک کَش شوند.
کَش استریم HTTP (HTTP Streaming Cache)
سرور میتواند به عنوان کَش برای نشستهای استریم زنده HTTP عمل کند. لبه زنده (live edge) میتواند برای مدتزمان مشخصی در حافظه کَش شود.
پارامترهای پیکربندی سرویس مورد استفاده: http (اجباری)، timeshift، mcache، gcache، keepalive و local.
پیکربندی
برای
پروکسی
کردن
همزمان با
کَش کردن یک
سرویس
استریم
زنده HTTP:
{ "http": "https://test.com/dash/live.mpd",
"timeshift": 30 }
پیکربندی
برای کَش
رله یک
سرویس
استریم
زنده HTTP:
{ "http": "https://test.com/dash/live.mpd",
"timeshift": 30, "local":
"/myservice/test.mpd"}
گزینه
پیکربندی
سرویس local
میتواند
روی موارد
زیر تنظیم
شود:
- مسیر سرور
ارائهشده،
که در این
حالت
نامهای
مانیفست
بازنویسی
نمیشوند
- یا مسیر
مانیفست
ارائهشده،
که در این
حالت
نامهای
مانیفست
بازنویسی
میشوند،
اما تنها یک
مانیفست
میتواند
ارائه شود
(با
سرویسهای
دوگانه MPD و M3U8
کار
نمیکند)
سرور میتواند به گونهای پیکربندی شود که از یک منبع Multicast ABR برای یک سرویس پخش زنده (streaming) مبتنی بر HTTP، بدون نیاز به هیچ منبع HTTP استفاده کند.
پارامترهای پیکربندی سرویس استفادهشده: mabr (اجباری)، local (اجباری)، timeshift و keepalive.
منبع
چندپخشی
میتواند DVB-MABR
(مثلاً mabr://235.0.0.1:1234)،
ATSC3.0 (مثلاً atsc://) یا
ROUTE (مثلاً route://235.0.0.1:1234)
باشد.
- اگر
چندپخشی از
یک فایل
بازپخش
شود، شناسه
netcap باید در
این نشانی URL
چندپخشی
تعیین گردد
(مثلاً :NCID=N).
- اگر یک رابط
IP خاص
استفاده
شود،
میتواند
در نشانی URL
چندپخشی
نیز تعیین
گردد (مثلاً
:ifce=IP).
برای
نمونه، با
تنظیم local روی
/service/live.mpd به همراه
تنظیم mabr،
سرور سرویس
چندپخشی را
به صورت
http://localhost/service/live.mpd در
دسترس قرار
خواهد داد.
نام
مانیفست
میتواند
حذف شود؛ در
این صورت
نام دقیق
مانیفست
استفادهشده
در انتشار
همگانی (broadcast)
باید به کار
رود (و برای
کلاینت
شناختهشده
باشد).
پیکربندی
برای در
دسترس قرار
دادن یک
نشست MABR:
{ "mabr": "mabr://234.0.0.1:1234", "local":
"/service1", "timeshift": 30 }
درگاه Multicast ABR با کش HTTP (Multicast ABR Gateway with HTTP cache)
سرور میتواند به گونهای پیکربندی شود که از یک منبع چندپخشی به عنوان منبع داده جایگزین برای یک سرویس استریمینگ HTTP مشخص استفاده کند.
پارامترهای پیکربندی سرویس استفادهشده: http (اجباری)، mabr (اجباری)، local، timeshift، repair، gcache، mcache، unload، activate، keepalive و js.
سرویس
چندپخشی
میتواند
با استفاده
از گزینه
پیکربندی
سرویس unload، در
زمان اجرا
به طور پویا
بارگذاری
شود:
- اگر 0 باشد،
چندپخشی
هنگام
بارگذاری
سرور آغاز
شده و هرگز
متوقف
نمیشود،
- در غیر این
صورت،
چندپخشی به
صورت پویا
آغاز شده و
به میزان unload
ثانیه پس از
آخرین
غیرفعالسازی
پایان
مییابد.
کیفیتها
در سرویس
چندپخشی
میتوانند
با استفاده
از گزینه
پیکربندی
سرویس activate، به
طور پویا
فعال یا
غیرفعال
شوند:
- اگر 0 باشد،
جریانهای
چندپخشی
هرگز
غیرفعال
نمیشوند،
- در غیر این
صورت، یک
بازنمایی
(representation) چندپخشی
تنها در
صورتی فعال
میشود که
حداقل activate
کلاینت در
حال مصرف آن
باشند، و در
غیر این
صورت
غیرفعال
میگردد.
سرویس
چندپخشی
میتواند
با استفاده
از گزینه
پیکربندی
سرویس repair، از
گزینههای
ترمیم پشته
MABR استفاده
کند:
- اگر false باشد،
فایل تا
زمانی که به
طور کامل
دریافت
نشود ارسال
نخواهد شد
(این کار
تاخیر را
افزایش
میدهد)،
- در غیر این
صورت،
دادههای
فایل به محض
در دسترس
قرار گرفتن
به ترتیب
ارسال
خواهند شد
(پس از
دریافت یا
ترمیم).
تعداد
کلاینتهای
فعال در یک
کیفیت
معین، با
استفاده از
وضعیت
اتصال
کلاینت
محاسبه
میشود:
هرگونه
قطع/اتصال
مجدد از سوی
کلاینت
برای همان
کیفیت، یک
توالی deactivate+activate
را
راهاندازی
میکند.
اگر check_ip برابر
با true تنظیم
شود، نشانی IP
دوردست+پورت
به جای
اتصال
استفاده
میشوند. با
این حال این
حالت فرض
میکند که
هر کلاینت
یک IP/port یکتا
دارد که
ممکن است
همیشه درست
نباشد (NATها).
اگر timeshift برای سرویس برابر 0 باشد، قطعههای چندپخشی به محض اینکه دیگر مورد استفاده نباشند دور ریخته میشوند (احتمالاً پیش از درخواست کلاینت).
نکته: فایلهای مانیفست دریافتی از چندپخشی در حال حاضر هرگز کش نمیشوند.
پیکربندی
برای کش
کردن یک
سرویس
استریمینگ
زنده HTTP به
همراه
پشتیبان MABR:
{ "http": "https://test.com/dash/live.mpd",
"mabr": "mabr://234.0.0.1:1234", "timeshift":
30}
برای چنین
سرویسهایی،
سرآیند
سفارشی HTTP با
نام X-From-MABR
تعریف شده
است:
- برای
درخواست
کلاینت،
مقدار no
حافظه کش MABR
را برای این
درخواست
غیرفعال
میکند؛ در
صورت عدم
وجود یا
داشتن
مقدار yes، در
صورت موجود
بودن از کش MABR
استفاده
خواهد شد
- برای پاسخ
کلاینت،
مقدار yes
نشان
میدهد که
محتوا از کش
MABR تامین شده
است؛ در
صورت عدم
وجود یا
داشتن
مقدار no یا
off-edge، محتوا از
طریق HTTP
تامین شده
است (off-edge
نشاندهنده
درخواستی
خارج از
بافر timeshift است)
نقطه پایانی ریشه اختصاصی /stats، تعداد نوع محتوای پاسخهای سرویسدهیشده (yes، no، off-edge) توسط درگاه را برمیگرداند.
گزینه js
میتواند
به یک ماژول
JS تنظیم شود
که توابع
زیر را صادر
(export) میکند:
* init : (اجباری)
این تابع یک
بار در
هنگام آغاز
سرور
فراخوانی
میشود.
پارامترها:
* scfg: شیء
پیکربندی
سرویس
* return value: در صورت
موفقیتآمیز
بودن
پیکربندی و
مقداردهی
اولیه باید
true باشد، در
غیر این
صورت false.
* service_activation :
(اختیاری)
این تابع
هنگامی که
سرویس فعال
یا غیرفعال
میشود
فراخوانی
میگردد.
پارامترها:
* do_activate (boolean): اگر true
باشد،
سرویس در
حال
بارگذاری
است؛ در غیر
این صورت در
حال تخلیه (unload)
است
* return value: ندارد (none)
* quality_activation :
(اختیاری)
این تابع
هنگامی که
کیفیت
مشخصشده
باید فعال
یا غیرفعال
شود
فراخوانی
میگردد. در
صورت عدم
وجود،
فعالسازی/غیرفعالسازی
همواره رخ
میدهد.
پارامترها
(به ترتیب):
* do_activate (boolean): اگر true
باشد،
کیفیت در
حال
فعالسازی
است؛ در غیر
این صورت در
حال
غیرفعالسازی
است
* service_id (integer): شناسه
سرویس
آنطور که
در چندپخشی
اعلان شده
است
* period_id (string): شناسه Period
در DASH، برای HLS
نادیده
گرفته
میشود
(خالی)
* adaptationSet_ID (integer): شناسه
AdaptationSet در DASH، برای
HLS نادیده
گرفته
میشود (-1)
* representation_ID (string): شناسه
representation در DASH یا
نام لیست
پخش متغیر (variant
playlist) در HLS
* return value: اگر
فعالسازی/غیرفعالسازی
باید انجام
شود باید true
باشد و اگر
فعالسازی/غیرفعالسازی
باید لغو
گردد باید false
باشد.
* get_mcast_address :
(اختیاری)
این تابع
هنگامی که
سرویس فعال
میشود
فراخوانی
میگردد.
پارامترها:
* service_url (string): نشانی URL
سرویسی که
آدرس
چندپخشی
برای آن
استعلام
میشود
* return value: باید
آدرس
چندپخشی
مورد
استفاده
برای سرویس
باشد یا null در
صورتی که
هیچ
چندپخشی
استفاده
نمیشود (در
این صورت
چندپخشی
فعال
غیرفعال
خواهد شد).
یک دایرکتوری از سامانه فایل میتواند بهصورت یک سرویس ارائه شود.
پارامترهای پیکربندی سرویس مورد استفاده: local (اجباری)، sources (اجباری)، gcache و keepalive.
گزینه
پیکربندی
سرویس local
باید روی
مسیر سرویس
مورد نظر
تنظیم شود،
و گزینه
پیکربندی
سرویس sources
باید شامل
یک یا چند
منبع معتبر
باشد.
هر منبع
میتواند
یک فایل، یک
دایرکتوری
یا یک URL
دوردست
باشد.
پیکربندی
برای ارائه
یک
دایرکتوری:
{ "local": "/dserv/", "sources": [ {
"name": "foo/", "url": "my_dir/" } ]
}
این سرویس محتوای دایرکتوری my_dir/* را بهصورت http://localhost/dserv/foo/* در دسترس قرار میدهد.
در این
حالت،
سرویسدهی
فایل
مستقیماً
توسط فیلتر
httpout مدیریت
میشود و از
حافظه نهان
(کش) استفاده
نمیشود.
اگر منبع یک
نشانی
دوردست HTTP
باشد،
گزینه gcache
مشخص
میکند که
آیا از کش
محلی GPAC
استفاده
شود یا خیر.
توسعه ماژول (Module development)
یک ماژول JS
را میتوان
با استفاده
از گزینه js
در
پیکربندی
سرویس مشخص
کرد. توابع
صادر شده (export)
ماژول
عبارتند از:
init (اجباری)
این تابع
یک بار
هنگام شروع
به کار سرور
فراخوانی
میشود
پارامتر:
شیء
پیکربندی
سرویس
مقدار
بازگشتی در
صورت
موفقیتآمیز
بودن
پیکربندی و
راهاندازی
اولیه باید
true و در غیر
این صورت false
باشد
resolve (اجباری)
پارامتر: یک شیء درخواست HTTP از GPAC
این تابع
آرایهای
از دو مقدار
[result, delay] را
برمیگرداند:
* result: در صورت
خطا مقدار
null، یک رشته
تفکیکشده
که
نشاندهنده
یک فایل
محلی یا
بدنه پاسخ
است، یا یک
شیء
* delay: اگر true
باشد، پاسخ
توسط ماژول
برای
پردازش
بعدی به
تعویق
میافتد
هنگامی که
یک شیء
برگردانده
میشود،
درخواست
توسط ماژول JS
که مسئول
ارسال پاسخ
و خواندن
دادهها
است مدیریت
میشود. این
شیء باید
دارای
ویژگیهای
(properties) زیر باشد:
* read: معنایی
یکسان با
متد read
درخواست
* on_close: تابع
اختیاری که
هنگام
بستهشدن
درخواست
فراخوانی
میشود
ماژولهای توکار (Built-in modules)
بازترکیبکننده منبع (Source Remultiplexer)
ماژول هنگام استفاده از js=remux بارگذاری میشود
این ماژول فایلهای منبع را بدون ترنسکد کردن (تغییر کدک) به فرمت مورد نظر بازترکیب (remultiplex) میکند.
پارامترهای پیکربندی سرویس مورد استفاده: local (اجباری)، sources (اجباری).
پارامترهای
اضافی
پیکربندی
سرویس
* fmt: فرمت
پیشفرض
برای
استفاده
(پیشفرض mp4
است).
فرمتهای
پشتیبانیشده
عبارتند از:
* `src`: بدون
بازترکیب
* `mp4`: فرمت fragmented MP4
* `ts`: فرمت MPEG-2 TS
* `gsf`: فرمت
جاریسازی
GPAC
* `dash`: فرمت MPEG-DASH،
تککیفیتی
* `hls`: فرمت HLS،
تککیفیتی
منابع با استفاده از آرایه sources در پیکربندی سرویس تعریف میشوند.
پارامترهای
CGI برای
درخواست
عبارتند از:
* fmt: (رشته،
یکسان با fmt
پیکربندی
سرویس) فرمت
مالتیپلکس.
در صورت
تنظیم روی
src، تمام
پارامترهای
دیگر CGI
نادیده
گرفته
میشوند.
* start: (عدد،
پیشفرض 0)
زمان شروع
محتوای
بازترکیبشده
به ثانیه.
* speed: (عدد،
پیشفرض 1)
سرعت (>=0)، فقط
جریان
تصویری را
نگه
میدارد و
فریمهای
غیر SAP را حذف
میکند.
* media: (رشته،
پیشفرض av)
نوع فیلتر
کردن رسانه
* 'av':
نگهداشتن
هم صدا و هم
تصویر
* 'a':
نگهداشتن
فقط صدا
* 'v':
نگهداشتن
فقط تصویر
پیکربندی
برای ارائه
یک
دایرکتوری
همراه با
بازترکیب
به mp4:
{"local": "/service1/", "js": "remux",
"sources": [{"name": "vids", "url":
"/path/to/vids/"}], "fmt": "mp4"}
scfg (str): فایل
پیکربندی
سرویس
quit (bool, default: false): خروج از
سرور به محض
غیرفعال
شدن آخرین
سرویس
avmix
توضیحات:
میکسر صوت و
تصویر
نویسنده:
تیم GPAC
ابزار AVMix یک
میکسر صوت و
تصویر است
که توسط یک
قالب لیست
پخش قابل
بهروزرسانی
JSON کنترل
میشود. از
این فیلتر
میتوان
برای موارد
زیر
استفاده
کرد:
- زمانبندی
دنباله(های)
ویدیو در
طول زمان
- میکس کردن
ویدیوها با
یکدیگر
- چینش چندین
ویدیو
- قرار دادن
تصاویر،
متن و
گرافیکها
بر روی
ویدیوهای
منبع
تمام
جریانهای
ورودی پیش
از ورود به
میکسر
رمزگشایی
میشوند.
- جریانهای
صوتی
بهصورت
نرمافزاری
میکس
میشوند
- جریانهای
ویدیویی
مطابق با
گزینه gpu
ترکیببندی
میشوند
- سایر انواع
جریانها
هنوز
پشتیبانی
نمیشوند
شتابدهی سختافزاری OpenGL قابل استفاده است، اما مجموعه ویژگیهای پشتیبانیشده در حال حاضر با GPU یا بدون آن یکسان نیست.
در حالت
نرمافزاری،
میکسر
بررسی
میکند که
آیا هر یک از
منابع
ویدیویی
فعال فعلی
میتواند
به عنوان یک
بوم (canvas) پایه
برای خروجی
جهت
صرفهجویی
در زمان
پردازش
استفاده
شود یا خیر.
رفتار
پیشفرض
این است که
این تشخیص
فقط در
اولین فریم
تولیدشده
انجام شود؛
برای تغییر
این مورد از
dynpfmt استفاده
کنید.
این فیلتر را میتوان از طریق ماژولهای JavaScript گسترش داد. در حال حاضر فقط صحنهها و جلوههای انتقال از این ویژگی استفاده میکنند.
زنده در برابر آفلاین (Live vs offline)
هنگام کار
در حالت
آفلاین،
میکسر به
مدت ۱۰
برابر lwait
منتظر
آماده شدن
فریمهای
ویدیو
میماند. پس
از این زمان
انتظار، در
صورتی که
ورودی در
دسترس
نباشد،
فیلتر
متوقف
خواهد شد.
این بدان
معناست که
همیشه باید
رسانهای
برای
ترکیببندی
وجود داشته
باشد، یعنی
هیچ شکافی
در خط زمانی
نباشد.
نکته: لیست
پخش همچنان
در حالت
آفلاین
تازهسازی
میشود.
هنگام کار
در حالت
زنده،
میکسر در
ابتدا به
مدت lwait ثانیه
منتظر
آماده شدن
فریمهای
ویدیو
میماند. پس
از این زمان
انتظار
اولیه،
فریمهای
خروجی
موارد زیر
را نشان
خواهند داد:
- عبارت 'No signal' در
صورتی که
هیچ
ورودیای
در دسترس
نباشد (فریم
منبعی وجود
نداشته
باشد) یا
صحنهای
تعریف نشده
باشد
- عبارت 'Signal lost' در
صورتی که
داده ورودی
جدیدی به
مدت lwait روی یک
منبع
دریافت
نشده باشد
قالب لیست پخش (Playlist Format)
نمای کلی (Overview)
اجزای
اصلی در یک
لیست پخش
عبارتند از:
* منابع
رسانه و
دنبالهها:
هر منبع
توسط یک یا
چند URL به
دادههای
رسانه
توصیف
میشود، و
هر دنباله
مجموعهای
از منابع
است که باید
بهطور
پیوسته پخش
شوند
* انتقالها:
منابع در یک
دنباله را
میتوان با
استفاده از
انتقالها
(transitions) ترکیب
کرد
* صحنهها: یک
صحنه یک شیء
گرافیکی را
برای قرار
دادن روی
صفحه توصیف
میکند و
مشخص
میسازد که
آیا و چگونه
ویدیوهای
ورودی روی
اشیاء
نگاشت شوند
* گروهها: یک
گروه،
سلسلهمراتبی
از صحنهها
و گروهها
با
ویژگیهای
موقعیتیابی
است، و
همچنین
میتواند
برای ایجاد
تصاویر
خارج از
صفحه (offscreen) که
توسط سایر
عناصر
بازاستفاده
میشوند،
به کار رود
*
زمانسنجها:
یک
زمانسنج (timer)
میتواند
برای
متحرکسازی
پارامترهای
صحنه به
روشهای
مختلف
استفاده
شود
محتوای
لیست پخش
باید یک شیء
منفرد JSON یا
آرایهای
از اشیاء JSON
باشد که از
این پس
اشیاء ریشه
(root objects) نامیده
میشوند.
نوع اشیاء
ریشه را
میتوان از
طریق یک
ویژگی type
مشخص کرد:
* seq: یک شیء
دنباله
* url: یک شیء
منبع (در
صورت
استفاده به
عنوان
ریشه، یک
شیء دنباله
پیشفرض
ایجاد
خواهد شد)
* scene: یک شیء
صحنه
* group: یک شیء
گروه
* timer: یک شیء
زمانسنج
* script: یک شیء
اسکریپت
* config: یک شیء
پیکربندی
* watch: یک شیء
ناظر
* style: یک شیء
استایل
به جز style، ویژگی type در اشیاء ریشه معمولاً مورد نیاز نیست، زیرا تجزیهکننده نوع شیء را از روی ویژگیهای آن حدس میزند.
یک شیء
ریشه با
ویژگی skip که
مقداری به
جز 0 یا false
داشته
باشد،
نادیده
گرفته
میشود.
در یک
سلسلهمراتب
گروه، هر
شیء صحنه یا
گروهی با
ویژگی skip
تنظیمشده
روی مقداری
به جز 0 یا false
نادیده
گرفته
میشود.
هر ویژگی ناشناختهای که با _ شروع نشود به عنوان یک هشدار گزارش خواهد شد.
رنگها به
عنوان رشته
مدیریت شده
و به این
صورتها
قالببندی
میشوند:
- نام رنگ DOM
(دستور gpac -h colors را
ببینید)
- کدهای HTML به
صورت $RRGGBB یا #RRGGBB
- مقادیر
هگزادسیمال
RGB به صورت 0xRRGGBB
- مقادیر
هگزادسیمال
RGBA به صورت 0xAARRGGBB
- رنگ none برابر
است با 0x00000000، و
مفهوم آن
بستگی به
شیء
استفادهکننده
از آن دارد.
اگر کد JS نیاز به دستکاری رنگها داشته باشد، از توابع sys.color_lerp و sys.color_component استفاده کنید.
قلابهای جاوااسکریپت (JS Hooks)
برخی از
انواع
اشیاء
امکان
اجرای کد JS
سفارشی را
فراهم
میکنند.
کد اسکریپت
میتواند
مقدار
مشخصه (property)
باشد، یا در
فایلی قرار
داشته باشد
که در مشخصه
معین شده
است.
این کد
هنگام
تجزیه
اولیه لیست
پخش یا
بارگذاری
مجدد به یک
تابع (یعنی new
Function(args, js_code)) تبدیل
میشود، که
از این پس JSFun
نامیده
میشود.
آرگومانها
و مقدار
بازگشتی JSFun
به نوع شیء
والد بستگی
دارند.
شیء والد به
عنوان this در JSFun
در دسترس
قرار
میگیرد و
میتوان از
آن برای
ذخیره
اطلاعات
زمینه (context)
برای کد JS
استفاده
کرد.
کد
میتواند
از توابع و
ماژولهای
سراسری
تعریفشده
استفاده
کند، به
ویژه:
* sys: ماژول
سیستم GPAC
* evg: ماژول EVG
مربوط به GPAC
* os: ماژول OS
مربوط به QuickJS
* video_playing: وضعیت
پخش ویدیو
* audio_playing: وضعیت
پخش صوت
* video_time: زمان
ویدیوی
خروجی
* video_timescale: مقیاس
زمانی (timescale)
ویدیوی
خروجی
* video_width: عرض
ویدیوی
خروجی
* video_height: ارتفاع
ویدیوی
خروجی
* audio_time: زمان صوت
خروجی
* audio_timescale: مقیاس
زمانی (timescale)
صوت خروجی
* samplerate: نرخ
نمونهبرداری
(samplerate) صوت
خروجی
* channels:
کانالهای
صوت خروجی
* current_utc_clock: ساعت UTC
کنونی بر
حسب
میلیثانیه
* get_media_time: زمان
رسانهای
خروجی (بدون
آرگومان) یا
منبعی با
شناسهای
منطبق با
آرگومان
اول را
دریافت
میکند.
مقادیر
بازگشتی:
* -4: یافت نشد
* -3: در حال پخش
نیست
* -2: در وضعیت
پیشواکشی
(prefetch)
* -1:
زمانبندی
هنوز مشخص
نیست
* value: زمان
رسانه بر
حسب ثانیه (float)
* resolve_url: نشانی
اینترنتی (URL)
دادهشده
در آرگومان
اول را نسبت
به URL لیست
پخش رسانه
تحلیل (resolve)
کرده و url
تحلیلشده
را
بازمیگرداند
(string)
* get_scene(id): صحنه با
شناسه
دادهشده
را دریافت
میکند
* get_group(id): گروه با
شناسه
دادهشده
را دریافت
میکند
* mouse_over(evt): صحنه زیر
موشواره را
که توسط یک
رویداد GPAC
توصیف شده،
یا در صورت
نبود صحنه null
را
بازمیگرداند
(انتخاب شیء
برای
صحنههای
دارای
تصویرسازی
پرسپکتیو
پشتیبانی
نمیشود)
* mouse_over(x, y): صحنه را
در مختصات {x, y}
بر حسب
پیکسل
بازمیگرداند؛
{0,0} نمایانگر
مرکز فریم
بوده، محور x
به سمت راست
و محور y به
سمت بالا
جهتگیری
دارد
گزینههای
صحنه و گروه
باید از
طریق
دریافتکنندهها
(getters) و
تنظیمکنندهها
(setters) مورد
دسترسی
قرار گیرند:
* scene.get(prop_name): گزینه
صحنه را
دریافت
میکند
* scene.set(prop_name, value): گزینه
صحنه را
مقداردهی
میکند
* group.get(prop_name): گزینه
گروه را
دریافت
میکند
* group.set(prop_name, value): گزینه
گروه را
مقداردهی
میکند
هشدار: اگر کد JS اشیاء صحنه/گروه را به هر شیوه دیگری تغییر دهد، نتایج تعریفنشده خواهد بود.
سایر اشیاء لیست پخش (و همچنین اشیاء صحنه و گروه) را میتوان با استفاده از query_element(ID, propName) استعلام کرد یا با استفاده از update_element(ID, propName, value) تغییر داد (به بهروزرسانی لیست پخش در ادامه نگاه کنید).
هشدار: هیچ محافظتی از متغیرها و وضعیت سراسری وجود ندارد، اسکریپت خود را با دقت بنویسید!
علاوه بر
این،
اسکریپتهای
اجراشده در
ماژولهای
صحنه
میتوانند
لیست پخش
داخلی را با
استفاده از
توابع زیر
تغییر دهند:
* remove_element(ID): یک
صحنه،
گروه،
توالی (sequence)،
زمانسنج
(timer)، اسکریپت
یا
دیدهبان (watcher)
با شناسه
دادهشده
را از لیست
پخش حذف
میکند
* parse_element(JSON): یک عنصر
ریشه لیست
پخش را
تجزیه کرده
و آن را به
لیست پخش
جاری اضافه
میکند
* parse_scene(JSON, parent): یک صحنه
را تجزیه
کرده و در
صورت عدم
مقدار null آن
را به گروه
والد، و در
غیر این
صورت به
ریشه اضافه
میکند
* parse_group(JSON, parent): یک گروه
را تجزیه
کرده و در
صورت عدم
مقدار null آن
را به گروه
والد، و در
غیر این
صورت به
ریشه اضافه
میکند
* reload_playlist(JSON): یک لیست
پخش جدید را
تجزیه
میکند (یک
آرایه خالی
JSON لیست پخش
را
بازنشانی
میکند). اگر
صحنه
فراخواننده
دیگر در
درخت صحنه
حاصل موجود
نباشد، به
ریشه درخت
صحنه اضافه
خواهد شد.
تمام این توابع مرتبط با لیست پخش باید در بازفراخوانی (callback) تابع update() ماژول صحنه فراخوانی شوند.
ویژگیهای
شیءهای sequence:
* id (null): شناسهٔ sequence
* loop (0): تعداد
تکرارهای sequence
(مقدار 0 یعنی
بدون
تکرار، -1 تا
ابد تکرار
میشود)
* start (0): زمان
شروع sequence (نکات
را ببینید).
اگر منفی
باشد، sequence
فعال نیست
* stop (0): زمان توقف
sequence (نکات را
ببینید). اگر
کمتر از start
باشد، sequence
تنها زمانی
متوقف
میشود که
به پایان
برسد
* transition (null): یک شیء
گذار (transition) جهت
اعمال بین
منابع sequence
* seq ([]): آرایهای
از یک یا چند
شیء source
نکات
زمانبندی
منبع رسانه
به استفاده
شدن یا نشدن
رسانه توسط
یک صحنه (scene)
بستگی
ندارد،
بلکه تنها
توسط
پارامترهای
sequence تعیین
میشود.
این بدان
معناست که
یک sequence که توسط
هیچ صحنهٔ
فعالی
استفاده
نشود، رندر
نخواهد شد
(نه ویدیو و
نه صدا).
نحو
فیلدهای start و stop
عبارت است
از:
* `now`: در حالت live
به ساعت
جاری UTC و در
حالت غیر live
به 0 تبدیل
میشود
* date: در حالت live
به تاریخ UTC و
در حالت غیر
live به 0 تبدیل
میشود
* N: به ساعت
جاری utc (یا 0
برای حالت
غیر live) به
علاوهٔ N
ثانیه UTC
تبدیل
میشود
* "N": به ساعت
جاری utc (یا 0
برای حالت
غیر live) به
علاوهٔ N
ثانیه UTC
تبدیل
میشود
در حالت 'live'،
اگر start با
استفاده از
یک تاریخ UTC
تنظیم شود،
sequence بازهٔ
شروعی
برابر با MAX(current_UTC -
start_in_UTC, 0) خواهد
داشت. ممکن
است برخی از
منابع برای
برآورده
کردن این
شرط نادیده
گرفته شوند.
این قابلیت
به
نمونههای
مختلف
فیلتر که از
یک playlist یکسان
استفاده
میکنند
اجازه
میدهد تا
زمان رسانه
را به
شیوهای
مشابه
مقداردهی
اولیه
کنند.
هنگام
بارگذاری
مجدد playlist:
- اگر sequence فعال
باشد،
مقدار start
نادیده
گرفته
میشود
- اگر sequence شروع
نشده باشد،
مقدار start
بهروزرسانی
میشود
- اگر sequence به
پایان
رسیده
باشد،
مقدار start
تنها در
صورتی
بهروزرسانی
میشود که
از زمان
شروع UTC
محاسبهشدهٔ
قبلی
بزرگتر
باشد.
منابع (Sources)
ویژگیهای
شیءهای source
* id (null): شناسهٔ
منبع، مورد
استفاده
هنگام
بارگذاری
مجدد playlist
* src ([]): فهرستی از
sourceURL که
نشانیهای URL
برای پخش را
توصیف
میکند.
چندین منبع
به طور
همزمان
پخش خواهند
شد
* start (0.0): زمان
شروع رسانه
در منبع
* stop (0.0): زمان
توقف رسانه
در منبع،
اگر کمتر یا
مساوی با start
باشد
نادیده
گرفته
میشود
* mix (true): اگر true
باشد، گذار
sequence یا نسبت
جلوهٔ میکس
را به عنوان
حجم صدای
صوتی اعمال
میکند. در
غیر این
صورت، حجم
صدا توسط
گذارها
تغییر
نمیکند.
* fade ('inout'): نحوهٔ
محو شدن صدا
(fade) در
شروع/پایان
جریان را
مشخص
میکند:
* in: محو شدن
تدریجی صدا
به درون (fade-in)
هنگام پخش
فریم اول
* out: محو شدن
تدریجی صدا
به بیرون (fade-out)
هنگام پخش
فریم آخر
* inout: هر دو fade-in و fade-out
فعال هستند
* other: بدون
هیچگونه fade
در صدا
* keep_alive (false): در صورت
استفاده از
یک فرایند
اختصاصی gpac
برای یک یا
چند ورودی،
در پایان
منبع اگر کد
خروج
بزرگتر از 2
باشد یا پس
از rtimeout پاسخی
دریافت
نشود،
فرایند(ها)
مجدداً
راهاندازی
میشوند
* seek (false): اگر true باشد
و keep_alive فعال
باشد،
هنگام
اجرای مجدد
فرایند(ها)،
مقدار start را
بر اساس
زمان
سپریشده
از شروع
منبع تنظیم
میکند
* prefetch (500):
مدتزمان
پیشواکشی
(prefetch) بر حسب
میلیثانیه
(پخش قبل از
زمان شروع
منبع)،
مقدار 0 برای
عدم انجام
پیشواکشی
* hold (false): اگر
مدتزمان
رسانه مشخص
باشد و زمان
توقف رسانه
بزرگتر از
مدتزمان
رسانه
باشد، تا
رسیدن به
زمان توقف
مورد نظر
حالت بدون
سیگنال (no signal)
را فعال
میکند
(غیرفعال
کردن گذار)،
در غیر این
صورت در
پایان
جریان به
منبع بعدی
میرود
مکانهای منبع (Source Locations)
ویژگیهای
شیءهای sourceURL
* id (null): شناسهٔ URL
منبع، مورد
استفاده
هنگام
بارگذاری
مجدد playlist
* in (null): نشانی URL
ورودی یا
زنجیرهٔ
فیلتر برای
بارگذاری
به عنوان
رشته متن.
کلماتی که
با - شروع
میشوند
نادیده
گرفته
میشوند.
اولین
ورودی باید
یک URL منبع را
مشخص کند، و
فیلترها و
پیوندهای
اضافی را
میتوان با
استفاده از
نحو @N[#LINKOPT] و @@N[#LINKOPT]،
مانند gpac
مشخص کرد
* port (null): درگاه
ورودی (port)
برای منبع.
مقادیر
ممکن
عبارتند از:
* pipe: اجرای یک
فرایند gpac
برای پخش
منبع با
استفاده از
قالب GSF بر
روی pipe
* tcp, tcpu: اجرای یک
فرایند gpac
برای پخش
منبع با
استفاده از
قالب GSF بر
روی سوکت TCP (tcp)
یا سوکت
دامنه
یونیکس TCP (tcpu)
* مشخصنشده
یا رشتهٔ
خالی: منبع
را با
استفاده از
فرایند
جاری
بارگذاری
میکند
* other: استفاده
از مقدار به
عنوان
اعلان
فیلتر
ورودی و
اجرای in به
عنوان یک
فرایند
اختصاصی
(مانند in="ffmpeg ..."
port="pipe://...")
* opts (null):
گزینههای
نمونه
فرایند gpac در
صورت
استفاده از
یک فرایند
اختصاصی gpac،
در غیر این
صورت
نادیده
گرفته
میشود
* media ('all'): پالایش
رسانه
ورودی بر
اساس نوع، a
برای صدا، v
برای
ویدیو، t
برای متن
(استفاده از
چند نویسه
مجاز است،
مانند av یا va)،
مقدار all همه
رسانههای
ورودی را
میپذیرد
* raw (true): مشخص
میکند که
آیا درگاه
ورودی، AV
رمزگشاییشده
(true) است یا AV
فشردهشده
(false) هنگام
استفاده از
یک فرایند
اختصاصی gpac،
در غیر این
صورت
نادیده
گرفته
میشود
نکات
طرح نشانی
ویژهٔ ipid://
میتواند
برای
مکانیابی
یک pid ورودی
از طریق
دستورالعملهای
پیوند
استفاده
شود.
مثال
in=ipid://#foo=bar
این دستور بدون در نظر گرفتن شناسهٔ فیلتر منبع، از pidهایی که دارای ویژگی foo با مقدار bar هستند استفاده خواهد کرد.
مثال
in=ipid://TEST#foo=bar
این دستور از pidهایی استفاده میکند که دارای ویژگی foo با مقدار bar بوده و از فیلتری با شناسهٔ TEST میآیند.
هنگام
استفاده از
طرح ipid://،
نمیتوان
زنجیرههای
فیلتر را
مشخص کرد (in
تنها یک
آرگومان
میپذیرد) و
port نادیده
گرفته
میشود.
نحو
دستورالعمل
پیوند
همانند gpac
است. با این
حال، اگر
ویژگی
ذکرشده در pid
ورودی یافت
نشود،
تطابق
ناموفق
خواهد بود.
هنگام راهاندازی یک فرایند فرزند، ابتدا فیلتر ورودی ایجاد شده و فرایند فرزند پس از آن راهاندازی میشود.
هشدار: هنگام راهاندازی مستقیم یک فرایند فرزند (مانند in="ffmpeg ...")، هر URL نسبی استفادهشده در in باید نسبت به دایرکتوری کاری جاری باشد.
ویژگیهای
مشترک برای
اشیاء گروه
و صحنه
* active (true): نشان
میدهد که
آیا شیء
فعال است یا
خیر. یک شیء
غیرفعال نه
بازآوری (refresh) و
نه رندر
خواهد شد
* x (0): انتقال
افقی
* y (0): انتقال
عمودی
* cx (0): مختصات
افقی مرکز
چرخش
* cy (0): مختصات
عمودی مرکز
چرخش
* units ('rel'): نوع واحد
برای x، y، cx، cy،
width و height. مقادیر
ممکن
عبارتند از:
* rel: واحدها بر
حسب درصد
مرجع فعلی
بیان
میشوند
(پایین را
ببینید)
* pix: واحدها بر
حسب پیکسل
بیان
میشوند
* rotation (0): زاویه
چرخش صحنه
به درجه
* hscale (1): ضریب
مقیاسگذاری
افقی برای
اعمال به
گروه
* vscale (1): ضریب
اریبسازی
عمودی برای
اعمال به
صحنه
* hskew (0): ضریب
اریبسازی
افقی برای
اعمال به
صحنه
* vskew (0): ضریب
اریبسازی
عمودی برای
اعمال به
صحنه
* zorder (0): ترتیب
نمایش صحنه
یا گروه
خارج از
صفحه (offscreen)
(برای
گروههای
عادی
نادیده
گرفته
میشود)
* untransform (false): اگر true
باشد،
ماتریس
درخت والد
را پیش از
محاسبه
ماتریس به
ماتریس
همانی (identity)
بازنشانی
میکند
* mxjs (null): کد JS برای
محاسبه
ماتریس
* z (0): انتقال
عمق
* cz (0): مختصات
عمق مرکز
چرخش
* zscale (1): ضریب
مقیاسگذاری
عمق برای
اعمال به
گروه
* orientation ([0, 0, 1, 0]):
مقیاسگذاری
در امتداد
محور
جهتگیری
دادهشده [x, y, z,
angle] - به VRML scaleOrientation
مراجعه
کنید
* axis ([0, 0, 1]): محور
چرخش
* position ([0, 0, auto]): موقعیت
دوربین
* target ([0, 0, 0]): نقطهای
که دوربین
به آن نگاه
میکند
* up ([0, 1, 0]): بردار
جهت بالای
دوربین (camera up vector)
* viewport ([0, 0, 100, 100]): درگاه
دید (viewport) برای
دوربین
* fov (45): میدان دید
به درجه
* ar (0): نسبت
ابعاد
دوربین، 0 به
معنای
پیشفرض
است
* znear (0): فاصله
صفحه Z
نزدیک، 0 به
معنای
پیشفرض
است
* zfar (0): فاصله
صفحه Z دور، 0
به معنای
پیشفرض
است
دستگاه
مختصات (Coordinate System)
هر گروه یا
صحنه در یک
دستگاه
مختصات
محلی مشخص
میشود که
در آن:
- مقدار {0,0}
بیانگر
مرکز است
- مقادیر X به
سمت راست
افزایش
مییابند
- مقادیر Y به
سمت بالا
افزایش
مییابند
- مقادیر Z به
سمت چشم
بیننده
افزایش
مییابند (Z=X^Y)
ماتریس
تبدیل محلی
۲بعدی به
این صورت
محاسبه
میشود: rotate(cx, cy, rotation) *
hskew * vskew * scale(hscale, vscale) * translate(x, y).
ماتریس
تبدیل محلی
۳بعدی به
این صورت
محاسبه
میشود: translate(x, y, z) *
rotate(cx, cy, cz, rotation) * scale(hscale, vscale, zscale).
اریبسازی
(Skewing) برای
۳بعدی
پشتیبانی
نمیشود.
دستگاه
واحد
پیشفرض (rel)
نسبت به
فضای مرجع
تعیینشده
فعلی است:
- بهطور
پیشفرض،
فضای مرجع
{output_width, output_height} است که
مبدأ {0,0} مرکز
فریم خروجی
خواهد بود
- هر گروه با
reference=true، width>0 و height>0 یک
فضای مرجع
جدید {group.width, group.height}
ایجاد
میکند
درون یک
فضای مرجع R،
مختصات
نسبی به
صورت زیر
تفسیر
میشوند:
- برای
مختصات
افقی، 0 به
معنای
مرکز، -50 به
معنای لبه
چپ (-R.width/2)، و 50 به
معنای لبه
راست (+R.width/2) است.
- برای
مختصات
عمودی، 0 به
معنای
مرکز، -50 به
معنای لبه
پایین (-R.height/2)، و 50
به معنای
لبه بالا (+R.height/2)
است.
- برای width،
مقدار 100 به
معنای R.width است.
- برای height،
مقدار 100 به
معنای R.height است.
- برای
مختصات عمق (z
و cz)، مقدار
بر حسب
درصدی از
ارتفاع
مرجع (+R.height) است.
اگر width=height
باشد، width
برابر با
ارتفاع
محاسبهشده
شیء تنظیم
میشود.
اگر height=width باشد،
height برابر با
عرض
محاسبهشده
شیء تنظیم
میشود.
برای ویژگی
x، مقادیر
ویژه زیر
تعریف
شدهاند:
- مقدار y این
مقدار را
برابر با y
محاسبهشده
شیء قرار
میدهد.
- مقدار -y این
مقدار را
برابر با -y
محاسبهشده
شیء قرار
میدهد.
برای ویژگی
y، مقادیر
ویژه زیر
تعریف
شدهاند:
- مقدار x این
مقدار را
برابر با x
محاسبهشده
شیء قرار
میدهد.
- مقدار -x این
مقدار را
برابر با -x
محاسبهشده
شیء قرار
میدهد.
تغییر مرجع معمولاً هنگام ایجاد گروههای خارج از صفحه (offscreen) لازم است، به طوری که مختصات نسبی فرزندان بر اساس اندازه بوم (canvas) خارج از صفحه محاسبه و حل شوند.
انتخاب
میان ۲بعدی
و ۳بعدی
بهطور
خودکار بر
اساس
مقادیر z، cz، axis
و orientation انجام
میشود.
تصویرسازی
(projection) پیشفرض
عبارت است
از:
- درگاه دید (viewport)
کل فریم
خروجی است
- میدان دید
برابر با PI/4 و
نسبت ابعاد
برابر با width/height
خروجی است
- مقدار zNear
برابر 0.1 و zFar
برابر با ۱۰
برابر maximum(output width, output
height) است
- جهت بالای
دوربین
محور Y است و
فاصله
دوربین
بهگونهای
است که یک
مستطیل رو
به دوربین
با z=0 و
اندازهای
برابر با
اندازه
خروجی،
دقیقاً
فریم خروجی
را پوشش
میدهد.
- بافر عمق (depth buffer)
غیرفعال
است
تصویرسازی
پیشفرض را
میتوان با
تنظیم
ویژگیهای
دوربین در
سطح گروه یا
صحنه تغییر
داد. هنگامی
که روی یک
گروه تنظیم
شود، تمام
فرزندان آن
گروه از
ویژگیهای
دوربین
دادهشده
استفاده
خواهند کرد
(پارامترهای
دوربین روی
فرزندان
نادیده
گرفته
میشوند).
پارامتر viewport
به صورت یک
آرایه [x, y, w, h]
مشخص
میشود که
در آن:
* x: مختصات
افقی مرکز
درگاه دید،
بر حسب
واحدهای
گروه یا
صحنه، یا 'y'
برای
استفاده از
مقدار y، یا '-y'
برای
استفاده از
مقدار -y.
* y: مختصات
عمودی مرکز
درگاه دید،
بر حسب
واحدهای
گروه یا
صحنه، یا 'x'
برای
استفاده از
مقدار x، یا '-x'
برای
استفاده از
مقدار -x.
* w: عرض درگاه
دید، بر حسب
واحدهای
گروه یا
صحنه، یا 'height'
برای
استفاده از
مقدار h.
* h: ارتفاع
درگاه دید،
بر حسب
واحدهای
گروه یا
صحنه، یا 'width'
برای
استفاده از
مقدار w.
ترتیب
نمایش (z-ordering)
مقدار zorder
ترتیب
نمایش عنصر
را در بوم
خارج از
صفحه (offscreen canvas)
مربوط به
گروه خارج
از صفحه
دربرگیرنده،
یا در صورت
نبود گروه
خارج از
صفحه در
درخت والد،
روی فریم
خروجی مشخص
میکند.
این ترتیب
مستقل از z-ordering
گروه والد
است. این
قابلیت
امکان
جابجایی
اشیاء یک
گروه را در
پشته نمایش
به بالا و
پایین،
بدون تغییر
دادن
گروهها،
فراهم
میکند.
تغییر
مختصات از
طریق JS
تابع JSFun
مشخصشده
در mxjs دارای
یک پارامتر
منفرد tr است.
پارامتر tr
شیئی است
شامل
متغیرهای
زیر که کد
میتواند
آنها را
تغییر دهد:
* x، y، z، cx، cy، cz،
hscale، vscale، zscale، hskew، vskew،
rotation، untransform، axis، orientation:
این مقادیر
با مقادیر
فعلی گروه
در واحدهای
دستگاه
مختصات
محلی
مقداردهی
اولیه
میشوند
* update: اگر روی true
تنظیم شود،
ماتریس شیء
در هر فریم
دوباره
محاسبه
میشود حتی
اگر تغییری
در
پارامترهای
گروه یا
صحنه رخ
نداده باشد
(اگر use تنظیم
شده باشد،
همیشه به
صورت
اجباری روی
true خواهد بود)
* depth: برای
گروههای
دارای use،
سطح بازگشت
(recursion level) عنصر
استفادهشده
را مشخص
میکند.
مقدار 0
نشاندهنده
رندر
مستقیم
عنصر است،
در غیر این
صورت یک
رندر از
طریق use
خواهد بود
تابع JSFun ممکن است مقدار false را برگرداند تا نشان دهد صحنه باید غیرفعال در نظر گرفته شود. هر مقدار بازگشتی دیگری (undefined یا غیر false) صحنه را به عنوان فعال علامتگذاری میکند.
مثال
"mxjs": "tr.rotation = (get_media_time() % 8) * 360 / 8;
tr.update=true;"
ویژگیهای
اشیاء گروه
(group)
* id (null): شناسهٔ
گروه
* scenes ([]): صفر یا
چند شیء
گروه یا
صحنه (scene)؛
پویانمایی
یا
بهروزرسانی
آن ممکن
نیست
* opacity (1): میزان
کدر بودن
(شفافیت)
گروه
* offscreen ('none'): قرار
دادن گروه
در حالت
خارج از
صفحه (offscreen)؛
پویانمایی
یا
بهروزرسانی
آن ممکن
نیست. حالت offscreen
بهطور
مستقیم
دیده
نمیشود
اما
میتواند
در برخی
عملیاتهای
بافت (texture)
استفاده
شود. مقادیر
ممکن
عبارتند از:
* none: گروه
معمولی
* mask: سطح offscreen از
نوع alpha+grey است
* color: سطح offscreen از
نوع alpha+colors است،
یا در صورت
تنظیم back_color از
نوع colors
* dual: همانند color
اما اجازه
میدهد
گروه نمایش
داده شود
* scaler (1): هنگام
استفاده از
opacity یا
رندرینگ offscreen،
اندازهٔ
بوم (canvas) خارج
از صفحه بر
این ضریب (>=1)
تقسیم
میشود
* back_color ('none'): هنگام
استفاده از
opacity یا
رندرینگ offscreen،
بوم خارج از
صفحه را با
رنگ
دادهشده
پر میکند.
* width (-1): هنگام
استفاده از
opacity یا
رندرینگ offscreen،
عرض offscreen را به
مقدار
دادهشده
محدود
میکند
(پایینتر
را ببینید)
* height (-1): هنگام
استفاده از
opacity یا
رندرینگ offscreen،
ارتفاع offscreen را
به مقدار
دادهشده
محدود
میکند
(پایینتر
را ببینید)
* use (null): شناسهٔ
گروه یا
صحنه برای
استفادهٔ
مجدد
* use_depth (-1): تعداد
دفعات
بازگشت
(تکرار) مجاز
برای عنصر
استفادهشده؛
مقدار منفی
به معنی
حداکثر عمق
سراسری
شاخه است که
توسط maxdepth مشخص
میشود
* reverse (false): معکوس
کردن ترتیب
صحنهها
پیش از رسم
* reference (false): گروه، یک
فضای مرجع
برای
مختصات
نسبی
گرههای
فرزند است
نکات
حداکثر عمق
یک شاخه در
نمودار
صحنه (scene graph)،
مقدار maxdepth است
(پیمایش پس
از این حد
متوقف
میشود).
در حالت
offscreen، مرزهای
اشیاء
محصور
محاسبه
میشوند تا
سطح offscreen تخصیص
یابد، مگر
آنکه هر دو
مقدار width و height
بزرگتر یا
مساوی با 0
باشند.
اجبار
اندازهٔ offscreen
هنگام
تولید
بافتها
برای
جلوههای
بعدی مفید
است.
رندرینگ offscreen همواره به صورت نرمافزاری انجام میشود.
هنگام اجبار scaler>1 روی گروهی با opacity==1، رندرینگ offscreen استفاده شده و scaler اعمال خواهد شد.
هنگام اجبار width و height روی گروهی با opacity<1، در صورتی که اشیاء فرزند خارج از مرزهای بوم offscreen باشند، ممکن است نمایش بریده (truncate) شود.
صحنهها (Scenes)
ویژگیهای
اشیاء صحنه
(scene)
* id (null): شناسهٔ
صحنه
* js ('shape'): نوع
صحنه، چه builtin
(پایینتر
را ببینید)
یا مسیر یک
ماژول JS؛
پویانمایی
یا
بهروزرسانی
آن ممکن
نیست
* sources ([]): فهرست
شناسههای
دنبالهها
(sequences) یا
گروههای offscreen
استفادهشده
توسط این
صحنه
* width (-1): عرض
صحنه، -1 به
معنی عرض
فضای مرجع
است
* height (-1): ارتفاع
صحنه، -1 به
معنی
ارتفاع
فضای مرجع
است
* mix (null): یک شیء
گذار (transition)
برای اعمال
در صورتی که
بیش از یک
منبع تنظیم
شده باشد،
در غیر این
صورت
نادیده
گرفته
میشود
* mix_ratio (-1): نسبت
ترکیب برای
جلوهٔ
گذار، <=0 فقط
به معنی
منبع اول، >=1
فقط به معنی
منبع دوم
* volume (1.0): بلندی
صدا (0: سکوت، 1:
بلندی صدای
ورودی)، این
مقدار توسط
mixer محدود
نمیشود.
* fade ('inout'): مشخص
میکند که
صدا هنگام
فعال/غیرفعال
شدن صحنه
چگونه باید
محو (fade) شود:
* in: محوشدگی
تدریجی به
داخل (fade-in) صدا
هنگام پخش
نخستین
فریم پس از
فعالسازی
صحنه
* out: محوشدگی
تدریجی به
خارج (fade-out) صدا
هنگام پخش
آخرین فریم
در
فعالسازی
صحنه
* inout: هر دو حالت
fade-in و fade-out فعال
هستند
* other: بدون
محوشدگی
صدا
* autoshow (true):
غیرفعالسازی
خودکار
صحنه
هنگامی که
دنبالههای
تنظیمشده
در sources فعال
نیستند
* nosig ('lost'): فعال
کردن پیام no-signal
برای
صحنههایی
که از
دنبالهها
استفاده
میکنند:
* no: غیرفعال
کردن پیام
* lost: نمایش
پیام هنگام
قطع سیگنال
* before: نمایش
پیام اگر
منبع هنوز
فعال نشده
باشد
* all: نمایش
همیشگی
پیام اگر
منبع
غیرفعال
باشد
* styles ([]): فهرست
شناسههای
استایل (style ID)
برای
استفاده
- هر ویژگی
دیگری که
توسط ماژول JS
صحنهٔ
زیربنایی
ارائه شده
باشد.
نکات
ورودیهای
یک صحنه، چه
sequence باشد چه
گروه offscreen،
باید پیش از
خودِ صحنه
اعلان شده
باشند.
در صورت پیدا نشدن هیچ صحنهای هنگام بارگذاری اولیهٔ playlist، یک صحنهٔ پیشفرض تزریق خواهد شد. اگر نیاز دارید با یک خروجی خالی شروع کنید، از صحنهای بدون sequence مرتبط استفاده کنید.
اگر یک صحنه از یک یا چند sequence استفاده کند و autoshow تنظیم نشده باشد، در صورتی که همهٔ دنبالهها غیرفعال باشند (هنوز آغاز نشده یا به پایان رسیده باشند)، صحنه بدون هیچ دنبالهٔ پیوستشدهای رسم خواهد شد.
نحو JSON
ویژگیهای
اشیاء transition:
* id (null): شناسهی
گذار
* type: نوع گذار،
توکار (builtin،
زیر را
ببینید) یا
مسیری به یک
ماژول JS
* dur: مدتزمان
گذار
(گذارها
همیشه در
زمان توقف
منبع خاتمه
مییابند).
در صورتی که
گذار برای
یک scene mix مشخص
شده باشد
نادیده
گرفته
میشود.
* fun (null): کد JS که اثر
ضریب (ratio) را
تغییر
میدهد
- هر ویژگی
دیگری که
توسط ماژول
گذار
زیربنایی
ارائه شده
باشد.
نکات
توالی دو
رسانه با
مدتزمان
پخش
(همانطور
که در منبع
مشخص شده) D1 و D2
با استفاده
از گذاری با
مدتزمان DT
منجر به
توالی با
مدتزمان D1 + D2 -
DT خواهد شد.
تابع JSFun مشخصشده با fun یک آرگومان ratio میپذیرد و باید مقدار بازتخمینزدهشدهی ratio را برگرداند.
مثال
"fun": "return ratio*ratio;"
زمانسنجها و پویانماییها (Timers and animations)
ویژگیهای
اشیاء timer
* id (null): شناسهی
زمانسنج
* dur (0): مدتزمان
زمانسنج
بر حسب
ثانیه
* loop (false): تکرار
حلقهای
زمانسنج
وقتی stop
تنظیم نشده
باشد
* pause (false): توقف
موقت
زمانسنج
* start (-1): زمان
شروع (نکات
را ببینید)،
مقدار منفی
به معنی
غیرفعال
بودن است
* stop (-1): زمان توقف
(نکات را
ببینید)، در
صورتی که
کمتر از start
باشد
نادیده
گرفته
میشود
* keys ([]): فهرست
کلیدهای
مورد
استفاده
برای
درونیابی،
فهرستی
مرتب میان 0.0
و 1.0
* anims ([]): فهرست
اشیاء animation
ویژگیهای
اشیاء animation
* values ([]): فهرست
مقادیر
برای
درونیابی،
باید به
همان تعداد
کلیدها
مقدار وجود
داشته باشد
* color (false):
نشاندهندهی
رنگ بودن
مقادیر (به
صورت رشته)
* angle (false):
نشاندهندهی
این که ضریب
درونیابی
زاویهای
بر حسب درجه
است، تا پیش
از
درونیابی
به رادیان
تبدیل شود
(نسبت
درونیابی
ضربدر PI و
تقسیم بر 180)
* mode ('linear') : حالت
درونیابی:
* linear:
درونیابی
خطی میان
مقادیر
* discrete: عدم انجام
درونیابی
* other: کد JS که
نسبت
درونیابی
را تغییر
میدهد
* postfun (null): کد JS که
نتیجهی
درونیابی
را تغییر
میدهد
* end ('freeze'): رفتار در
پایان
پویانمایی:
* freeze:
نگهداشتن
آخرین
مقادیر
پویانماییشده
* restore:
بازگرداندن
اهداف به
مقادیر
اولیهشان
* targets ([]): فهرستی
از رشتهها
که
ویژگیهای
هدف را برای
اصلاح مشخص
میکنند.
نحو عبارت
است از:
* ID@option: ویژگی option از
شیء با ID
دادهشده
را تغییر
میدهد
* ID@option[IDX]: مقدار در
نمایهی IDX
از آرایهی
ویژگی option از
شیء با ID
دادهشده
را تغییر
میدهد
نکات
در حال
حاضر، تنها
اشیاء scene، group،
transition و script را
میتوان از
طریق
زمانسنجها
تغییر داد
(بهروزرسانیهای
playlist را
ببینید).
نحو برای
فیلدهای start و stop
عبارت است
از:
* `now`: در حالت
زنده به
ساعت کنونی
UTC، و برای
حالت
غیرزنده به 0
ارزیابی
میشود
* date: در حالت
زنده به
تاریخ UTC، و
برای حالت
غیرزنده به 0
تبدیل
میشود
* N: برای اشیاء
timer به ساعت UTC
هنگام
راهاندازی
بهعلاوهی
N ثانیه
تبدیل
میشود
(آفست مطلق
از
راهاندازی
خط زمانی)
* "N": به ساعت
کنونی UTC
بهعلاوهی
N ثانیه
تبدیل
میشود
(آفست نسبی
از زمان
کنونی) که در
آن N عددی
مثبت یا
منفی است
تابع JSFun
مشخصشده
با mode دارای
یک پارامتر
ورودی interp
برابر با
ضریب
درونیابی
است و باید
ضریب
درونیابی
جدید را
برگرداند.
مثال
"mode":"return interp*interp;"
تابع JSFun
مشخصشده
با postfun دارای
دو پارامتر
ورودی res
(نتیجهی
فعلی
درونیابی)
و interp (ضریب
درونیابی)
است، و باید
مقدار
درونیابیشدهی
جدید را
برگرداند.
مثال
"postfun": "if (interp<0.5) return res*res; return
res;"
ویژگیهای
اشیاء
اسکریپت (script)
* id (null): شناسه
اسکریپت
* script (null): کد JavaScript یا
مسیر فایل JavaScript
برای اجرا؛
نمیتواند
پویانمایی
یا
بهروزرسانی
شود
* active (true): مشخص
میکند که
آیا
اسکریپت
فعال است یا
خیر
نکات
اشیاء اسکریپت امکان دسترسی خواندن و نوشتن به فهرستپخش (playlist) را از طریق اسکریپت فراهم میکنند. آنها در حال حاضر تنها میتوانند برای تغییر صحنهها و گروهها و فعال/غیرفعال کردن سایر اسکریپتها استفاده شوند.
تابع JSFun مشخصشده توسط fun هیچ پارامتر ورودی ندارد. مقدار بازگشتی (پیشفرض 0) تعداد ثانیههایی (float) است که باید تا ارزیابی بعدی اسکریپت منتظر ماند.
مثال
{ "script": "let s=get_scene('s1'); let rot =
s.get('rotation'); rot += 10; s.set('rotation', rot); return 2;" }
این دستور چرخش صحنه s1 را هر ۲ ثانیه یکبار تغییر میدهد
ناظرها (Watchers)
ویژگیهای
اشیاء ناظر
(watcher)
* id (null): شناسه
ناظر
* active (true): مشخص
میکند که
آیا ناظر
فعال است یا
خیر
* watch (""): عنصر
تحت نظارت،
در قالب ID@prop،
که در آن ID
شناسه عنصر
و prop نام
ویژگی مورد
نظارت است
* target (""): کنش
برای ناظر.
نحوهای
مجاز
عبارتند از:
* `ID@prop`، `ID@prop[idx]`:
رونوشت
مقدار به
ویژگی prop از
عنصر ID (در
صورت تعیین
برای
آرایهها،
در اندیس idx)
* `ID.fun_name`:
فراخوانی
تابع fun_name
صادرشده از
ماژول صحنه ID
با سه
آرگومان ['value',
'watchID', 'watchPropName']، بدون
بررسی
مقدار
بازگشتی
* در غیر این
صورت: کنش
باید کد JS
باشد، و
تابع JSFun حاصل
دارای یک
آرگومان value
شامل مقدار
نظارتشده
است، بدون
بررسی
مقدار
بازگشتی
* with (undefined): برای
مقصدهای در
قالب ID@prop،
استفاده از
این مقدار
بهجای
مقدار
نظارتشده
نکات
از یک ناظر
میتوان
برای پایش
تغییرات در
یک شیء در
فهرستپخش
(playlist) استفاده
کرد.
هر ویژگی
شیء که
امکان
پویانمایی
یا
بهروزرسانی
داشته
باشد،
میتواند
توسط یک
ناظر پایش
شود.
علاوه بر
این،
ویژگیهای
مجازی زیر
(غیرقابل
خواندن یا
نوشتن) را
نیز
میتوان
نظارت کرد:
* sequence.active: هنگامی
که sequence فعال
شود مقدار
روی true و
هنگام
غیرفعال
شدن روی false
تنظیم
میشود
* source.active: هنگامی
که پخش source
آغاز شود
مقدار روی true
و با توقف
پخش منبع
روی false تنظیم
میشود
* timer.active: هنگامی
که تایمر
شروع شود
مقدار روی true
و با توقف
تایمر روی false
تنظیم
میشود
در یک ناظر، تنها ویژگی active میتواند پویانمایی یا بهروزرسانی شود.
مثال
{"watch": "s1@rotation", "target":
"s2@rotation"}
این دستور مقدار s1.rotation را در s2.rotation رونوشت میکند.
مثال
{"watch": "s1@rotation", "target":
"get_scene('s2').set('rotation', -value);" }
این دستور مقدار s1.rotation*-1 را در s2.rotation رونوشت میکند.
نظارت بر رویدادهای واسط کاربری (UI)
ناظرها
همچنین
میتوانند
برای پایش
رویدادهای
کاربری GPAC با
تنظیم watch به
موارد زیر
استفاده
شوند:
- نام یک
رویداد
برای پایش،
یکی از keydown، keyup،
mousemove، mouseup، mousedown، wheel، textInput
- مقدار events
برای پایش
تمام
رویدادها
(شامل
رویدادهای
داخلی).
برای رویدادهای keyup و keydown، کد کلید مورد نظارت میتواند علاوه بر این در پرانتز مشخص شود، مانند 'watch': 'keyup(T)'.
نکته: رویدادهای کاربری تنها در صورتی ارسال میشوند که خروجی فیلتر توسط فیلتر vout مصرف شود.
هنگامی که
پایش
رویداد
استفاده
میشود، target
باید یک
بازفراخوان
(callback)
جاوااسکریپت
باشد (یعنی
نمیتواند
ID@prop باشد).
تابع
جاوااسکریپت
با یک
تکآرگومان
evt حاوی
رویداد GPAC
فراخوانی
خواهد شد.
مثال
{"watch": "mousemove", "target": "let s =
mouse_over(evt); get_scene('s2').set('fill', (s && (s.id=='s1') ?
'white' : 'black' );"}
این دستور در صورتی که موشواره روی s2 باشد، رنگ پرکردن (fill) شیء s1 را به سفید و در غیر این صورت به سیاه تنظیم میکند.
ویژگیهای
اشیاء شیوه
(style)
* id (null): شناسه (ID)
شیوه
* forced (false): اعمال
همیشگی
شیوه حتی در
صورت عدم
تغییر
* other: هر ویژگی
برای به
اشتراکگذاری
بین
صحنهها
نکات
یک شیء شیوه به صحنهها اجازه میدهد تا مقادیر یکسانی را برای مجموعهای معین از ویژگیها به اشتراک بگذارند.
اگر ویژگی
یک صحنه
نامی مشابه
با یک ویژگی
شیوه داشته
باشد،
ویژگی صحنه
با ویژگی
شیوه
جایگزین
میشود.
شیوهها
تنها به شرح
زیر بر روی
ویژگیهای
صحنه اعمال
میشوند:
- موارد volume، fade و
mix_ratio
میتوانند
از شیوه
استفاده
کنند
- تمام
گزینههای
تعریفشده
توسط ماژول
صحنه
میتوانند
از شیوه
استفاده
کنند
- ویژگی transformation یا
سایر
ویژگیهای
صحنه
نمیتوانند
از شیوه
استفاده
کنند
ویژگیهای یک شیء شیوه را میتوان پویانمایی یا بهروزرسانی کرد، اما یک شیء شیوه قابل پایش (watch) نیست.
شیوهها به ترتیب اعلان روی هر صحنه مرتبط اعمال میشوند؛ برای نمونه ['st1', 'st2'] و ['st2', 'st1'] احتمالاً نتایج متفاوتی خواهند داشت.
اگر force برای
یک شیوه
تنظیم نشده
باشد، شیوه
تنها پس از
تغییر
یافتن
(بارگذاری،
پویانمایی،
بهروزرسانی)
اعمال
میشود؛
اگر
صحنهای از
['st1', 'st2'] استفاده
کند و تنها st1
تغییر یابد
(پویانمایی،
بهروزرسانی)،
st2 تنها
یکبار
اعمال
خواهد شد.
پیکربندی فیلتر (Filter configuration)
فهرست پخش
(playlist) میتواند
با استفاده
از یک شیء
ریشه از نوع
'config'،
گزینههای
پیکربندی
فیلتر را
مشخص کند:
- نامهای
ویژگیها
با
گزینههای
فیلتر
یکسان
هستند
- مقادیر
ویژگیها
در نوع داده
اصلی خود،
یا به صورت
رشته برای
کسرها (قالب
N/D)، بردارها
(قالب WxH) یا
شمارشها (enums)
ارائه
میشوند
- هر ویژگی
اعلانشده،
گزینه
فیلتر
همنام خود
را رونویسی
(override) میکند
(خواه مقدار
پیشفرض
باشد یا
هنگام
ایجاد
فیلتر
تعیین شده
باشد)
یک شیء پیکربندی در فهرست پخش تنها هنگام بارگذاری اولیه فهرست پخش تجزیه میشود و هنگام بارگذاری مجدد نادیده گرفته خواهد شد.
ویژگیهای
تکمیلی زیر
برای
آزمودن
تعریف
شدهاند:
* reload_tests([]): فهرستی
از
فهرستهای
پخش برای
بارگذاری
مجدد
* reload_timeout(1.0): مهلت
زمانی به
ثانیه پیش
از
بارگذاری
مجدد فهرست
پخش
* reload_loop (0): تعداد
دفعات
تکرار
آزمونهای
بارگذاری
مجدد (شامل
فهرست پخش
اصلی که
دوباره
بارگذاری
نمیشود
نیست)
تغییر فهرست پخش (Playlist modification)
فایل
فهرست پخش
میتواند
در هر زمانی
تغییر کند.
اشیاء در
میان
بارگذاریهای
مجدد فهرست
پخش از طریق
ویژگی id خود
شناسایی
میشوند.
اشیائی که
پس از
بارگذاری
مجدد یک
فهرست پخش
وجود
ندارند، از
میکسر حذف
میشوند.
این امر به
این معنی
است که
بارگذاری
مجدد یک
فهرست پخش،
بیشتر
اشیاء فاقد ID
مرتبط را
مجدداً
ایجاد
میکند.
یک شیء sequence که بین دو بارگذاری مجدد تغییر کرده باشد، تازهسازی میشود؛ مگر برای فیلد start آن در صورتی که sequence فعال باشد.
یک شیء source باید بین دو بارگذاری مجدد دارای sequence والد یکسانی باشد. هرگونه تغییر روی شیء تنها هنگام بارگذاری (مجدد) منبع مد نظر قرار خواهد گرفت.
یک شیء sourceURL برای تغییرات ردیابی نمیشود، و تنها هنگام فعالسازی شیء source والد ارزیابی میگردد.
به یک شیء scene یا group که بین دو بارگذاری مجدد تغییر یافته باشد، هر مقدار تغییریافته اطلاعرسانی میشود.
یک شیء timer که بین دو بارگذاری مجدد تغییر کند خاموش و دوباره راهاندازی میشود. در نتیجه، اشیاء animation بین بارگذاریهای مجدد ردیابی نمیشوند.
یک شیء transition ممکن است بین دو بارگذاری مجدد تغییر کند، اما هرگونه تغییر در شیء تنها هنگام راهاندازی مجدد اثر (effect) اعمال خواهد شد.
کد یک شیء script که بین دو بارگذاری مجدد تغییر کرده باشد، دوباره ارزیابی میشود
منبع پایش (watch source) و کد یک شیء watcher که بین دو بارگذاری مجدد تغییر کرده باشد، دوباره ارزیابی میشود
یک شیء style ردیابی نمیشود (تمام styleها هنگام بارگذاری مجدد فهرست پخش، دوباره بارگذاری میشوند).
در ادامه نمونهای از یک فهرست پخش با استفاده از توالی دو ویدیو با گذار mix و یک ناحیه ویدیویی متحرکسازیشده آورده شده است:
مثال
[
{"id": "seq1", "loop": -1, "start":
0, "seq":
[
{ "id": "V1", "src": [{"in":
"s1.mp4"}], "start": 60, "stop": 80},
{ "id": "V2", "src": [{"in":
"s2.mp4"}], "stop": 100}
],
"transition": { "dur": 1, "type":
"mix"}
},
{"id": "scene1", "sources":
["seq1"]},
{"start": 0, "dur": 10, "keys": [0, 1],
"anims":
[
{"values": [50, 0], "targets": ["scene1@x",
"scene1@y"]},
{"values": [0, 100], "targets":
["scene1@width", "scene1@height"]}
]
}
]
قالب بهروزرسانیها (Updates Format)
بهجای
بارگذاری
مجدد کل
فهرست پخش،
میتوان
بهروزرسانیهایی
را برای
اصلاح
فهرست پخش
ارسال کرد.
بهروزرسانیها
از یک فایل
جداگانه
مشخصشده
در updates خوانده
میشوند که
بهطور
پیشفرض
غیرفعال
است.
هشدار: فایل بهروزرسانیها تنها در صورتی خوانده میشود که «پس» از مقداردهی اولیه فیلتر تغییر یافته باشد.
محتوای
فایل
بهروزرسانیها
باید یا یک
شیء JSON منفرد
یا
آرایهای
از اشیاء JSON
باشد.
ویژگیهای
این اشیاء
عبارتند از:
* skip: اگر true یا 1
باشد،
بهروزرسانی
را نادیده
میگیرد؛
در غیر این
صورت آن را
اعمال
میکند
* replace: رشتهای
که هدف
جایگزینی
را مشخص
میکند.
ساختار
نحوی آن به
این صورت
است:
* ID@name: نام ویژگی
عنصری با
شناسه (ID)
دادهشده
را جهت
جایگزینی
مشخص
میکند
* ID@name[idx]: نمایه
(اندیس) را در
نام ویژگی
عنصری با
شناسه (ID)
دادهشده
جهت
جایگزینی
مشخص
میکند
* with: مقدار
جایگزین؛
باید از
همان نوع
داده مقدار
هدف باشد.
ویژگی id قابل بهروزرسانی نیست.
عناصر زیر
از یک فهرست
پخش قابل
بهروزرسانی
هستند:
* scene: تمام
ویژگیها
بهجز js و
ویژگیهای
فقطخواندنی
پودمان
* group: تمام
ویژگیها
بهجز scenes و offscreen
* sequence:
ویژگیهای
start، stop، loop و transition
* timer:
ویژگیهای
start، stop، loop، pause
و dur
* transition: تمام
ویژگیها
* برای
گذارهای sequence:
بیشتر این
ویژگیها
تنها در
بارگذاری
مجدد بعدی
بهروزرسانی
خواهند شد
* برای
گذارهای
صحنه فعال:
اعمال
بلادرنگ
این
تغییرات به
پودمان transition
بستگی
دارد
مثال
[
{"replace": "scene1@x", "with": 20},
{"replace": "seq1@start", "with":
"now"}
]
پودمانهای صحنه (Scene modules)
پاکسازی صحنه (Scene clear)
این صحنه ناحیه بوم (canvas) پوشاندهشده توسط صحنه را با یک رنگ مشخص پاک میکند.
رنگ پیشفرض پاکسازی میکسر، سیاه (black) است.
ناحیه پاکسازی همواره در فریم خروجی همراستا با محورها (axis-aligned) است؛ بنابراین هنگام وجود skew/rotation، کادر محاطی همراستا با محورِ ناحیه تغییریافته صحنه پاک خواهد شد.
گزینهها:
* color ('none'): رنگ
پاکسازی
این صحنه
برشدهنده
(clipper) بوم را
بازنشانی
میکند یا
برشدهنده
بوم را روی
ناحیه صحنه
تنظیم
مینماید.
برشدهنده در فریم خروجی همواره با محورها همتراز (axis-aligned) است، بنابراین در صورت وجود کجی (skew) یا چرخش (rotation)، کادر احاطهکننده همتراز با محورِ برشدهنده تبدیلیافته استفاده خواهد شد.
برشدهندهها
از طریق یک
پشته (stack)
مدیریت
میشوند؛
بازنشانی
برشدهنده
پشته را
بیرون
میاندازد
(pop) و
برشدهنده
پیشین را
بازیابی
میکند.
اگر هنگام
تنظیم
برشدهنده،
برشدهندهای
از پیش
تعریف شده
باشد،
برشدهنده
تنظیمشده
اشتراک این
دو
برشدهنده
خواهد بود.
گزینهها:
* reset (false): در صورت
تنظیم،
برشدهنده
بازنشانی
میشود، در
غیر این
صورت روی
موقعیت و
اندازه
صحنه تنظیم
میگردد
* stack (true): اگر false
باشد،
برشدهنده
مستقل از
پشته
برشدهنده
تنظیم/بازنشانی
میشود
(بدون
اشتراک،
بدون push/pop در
پشته)
صحنه ماسک (Scene mask)
این صحنه حالت ماسک آلفای بوم را تنظیم میکند.
ماسک آلفای بوم همواره تمامصفحه است.
در حالت نرمافزاری، ترکیب جلوه ماسک در حالت ضبط (record mode) و رسم گروهی معکوس امکان رسم از جلو به عقب را فراهم میسازد در حالی که پیکسلها فقط یک بار نوشته میشوند.
گزینهها:
* mode ('off'): در صورت
تنظیم،
برشدهنده
بازنشانی
میشود، در
غیر این
صورت روی
موقعیت و
اندازه
صحنه تنظیم
میگردد
* off: ماسک
غیرفعال
است
* on: ماسک فعال
و پاکسازی
میشود،
عملیات رسم
بعدی روی
ماسک انجام
خواهند
گرفت
* onkeep: ماسک فعال
است اما
پاکسازی
نمیشود،
عملیات رسم
بعدی روی
ماسک انجام
خواهند
گرفت
* use: ماسک فعال
است،
عملیات رسم
بعدی توسط
ماسک فیلتر
خواهند شد
* use_inv: ماسک فعال
است،
عملیات رسم
بعدی توسط 1-mask
فیلتر
خواهند شد
* rec: ماسک در
حالت ضبط
قرار دارد،
عملیات رسم
بعدی روی
خروجی
کشیده شده و
مقدار ماسک
را روی 0
تنظیم
خواهند
کرد
صحنه شکل (Scene shape)
از این
صحنه
میتوان
برای
برپایی یک
شکل، خط دور
(outline) آن و مشخص
کردن
حالتهای fill
و strike استفاده
کرد.
شکلهای
پشتیبانیشده
عبارتند از:
- انواع
مستطیلها،
بیضی و سایر
چندضلعیها
- مسیرهای
سفارشی
مشخصشده
از JS
- متن
حالتهای
رنگ برای
اشکال و
خطوط دور
شامل موارد
زیر است:
- بافتدهی (texturing)
با استفاده
از
دادههای
جریانهای
رسانهای
ورودی (فقط
برای fill شکل)
- بافتدهی
با استفاده
از
فایلهای
محلی JPEG و PNG (فقط
برای fill شکل)
- رنگ یکدست (solid
color)
-
گرادیانهای
خطی و
شعاعی
صحنه پیشفرض بهینهسازی شده است تا هنگامی که هیچ تبدیلی روی یک شکل مستطیلی صاف اعمال نشود، به blit سریع تنزل یابد.
تمام گزینهها را میتوان در زمان اجرا (run time) بهروزرسانی کرد.
این ماژول 0، 1 یا 2 توالی را به عنوان ورودی میپذیرد.
عملیات
جایگزینی
رنگ را
میتوان
برای
صحنههای
پایه با
استفاده از
ویدیوهای
منبع از
طریق مشخص
کردن گزینه
replace تعیین کرد.
منبع
جایگزینی
عبارت است
از:
- دادههای
تصویر اگر img
تنظیم شده
باشد، که
ممکن است با
استفاده از
گزینههای
*_rep تغییر
یافته
باشند
- در غیر این
صورت یک
گرادیان
خطی اگر fill=linear
باشد یا یک
گرادیان
شعاعی اگر
fill=radial باشد (در
حالت GPU
پشتیبانی
نمیشود،
برای این
کار از یک
گروه offscreen
استفاده
کنید).
هشدار: عملیات جایگزینی رنگ نمیتواند با جلوههای گذار (transition) یا ترکیب (mix) استفاده شود.
گزینههای متن (Text options)
اگر text[0] یک
فایل محلی
موجود
باشد، متن
میتواند
از فایل
بارگیری
شود.
به صورت
پیشفرض
تمام خطوط
بارگیری
میشوند.
تعداد خطوط
بارگیریشده
را میتوان
با استفاده
از text[1] به صورت
زیر مشخص
کرد:
* 0 یا عدم
وجود: تمام
خطوط
بارگیری
میشوند
* N > 0: فقط N خط
آخر نگه
داشته
میشوند
* N < 0: فقط N خط
نخست نگه
داشته
میشوند
متن بارگیریشده از فایل با هر بار تغییر فایل، بازآوری (refresh) خواهد شد.
میتوان
از
کلیدواژههای
از پیش
تعریفشده
در متن
ورودی
استفاده
کرد که به
صورت $KEYWORD$
شناسایی
میشوند.
کلیدواژههای
زیر (بدون
حساسیت به
حروف کوچک و
بزرگ) تعریف
شدهاند:
* time: با تاریخ UTC
جایگزین
میشود
* ltime: با تاریخ
محلی (locale)
جایگزین
میشود
* date: با تاریخ (Y/M/D)
جایگزین
میشود
* ldate: با تاریخ
محلی (Y/M/D)
جایگزین
میشود
* mtime: با زمان
رسانه
خروجی
جایگزین
میشود
* mtime_SRC: با زمان
رسانه منبع
ورودی SRC
جایگزین
میشود
* cpu: با میزان
مصرف فعلی CPU
توسط
فرایند
جایگزین
میشود
* mem: با میزان
مصرف فعلی
حافظه توسط
فرایند
جایگزین
میشود
* version: با نسخه GPAC
جایگزین
میشود
* fversion: با نسخه
کامل GPAC
جایگزین
میشود
* P4CC, PropName: با ویژگی
متناظر PID
جایگزین
میشود
مسیرهای
سفارشی
(شکلها یا shapes)
را میتوان
از طریق کد JS
مشخصشده
در 'shape'، چه
بهصورت
درونخطی
یا از طریق
یک فایل
ایجاد کرد.
ماژولهای JS
زیر از GPAC
وارد (import)
شدهاند:
- Sys بهصورت sys
- تمام EVG
بهصورت evg
- os از QuickJS
برای اطلاعات بیشتر دربارهٔ APIهای JS مربوط به EVG و Sys به https://doxygen.gpac.io مراجعه کنید.
کد، صحنه
را بهصورت
this در معرض
دسترسی
قرار
میدهد.
متغیر this.path
ایجاد
میشود که
نمایانگر
یک مسیر
خالی است.
مثال:
"shape": "this.path.add_rectangle(0, 0, this.width,
this.height); let el = new evg.Path().ellipse(0, 0, this.width,
this.height/3); this.path.add_path(el);"
رفتار
پیشفرض
استفاده از
عرض و
ارتفاع شکل
به عنوان
اندازهٔ
مرجع برای
نگاشت بافت
(texture mapping) است.
اگر مسیر
سفارشی شما
بافتدار
است و
اندازهٔ
مستطیل
محاطی آن با
اندازهٔ
شکل
مشخصشده
متفاوت
است، متغیر
this.tx_adjust را روی true
تنظیم
کنید.
در مثال پیشین، نگاشت بافت تحت تأثیر اندازهٔ مسیر سفارشی قرار نخواهد گرفت.
مثال:
"shape": "this.path.add_rectangle(0, 0, this.width,
this.height); let el = new evg.Path().ellipse(0, 0, this.width,
this.height/3); this.path.add_path(el); this.tx_adjust = true;"
در این مثال، نگاشت بافت به اندازهٔ دلخواه تنظیم خواهد شد.
متغیرها و
توابع
سراسری در
دسترس
هستند (برای
مقایسه: gpac -h avmix:global):
* get_media_time():
بازگرداندن
زمان رسانه
بر حسب
ثانیه
(اعشاری float)
برای خروجی
* get_media_time(SRC): دریافت
زمان منبع
با شناسهٔ
SRC؛ در صورت
پیدا نشدن
مقدار -4، در
صورت عدم
پخش مقدار -3،
در صورت
قرار داشتن
در
پیشواکشی
(prefetch) مقدار -2،
در صورتی که
زمانبندی
هنوز مشخص
نباشد
مقدار -1 و در
غیر این
صورت زمان
رسانه بر
حسب ثانیه
(اعشاری float) را
بازمیگرداند
* current_utc_clock: زمان
کنونی UTC بر
حسب
میلیثانیه
* video_time: زمان
ویدیوی
خروجی
* video_timescale: مقیاس
زمانی (timescale)
ویدیوی
خروجی
* video_width: عرض
ویدیوی
خروجی
* video_height: ارتفاع
ویدیوی
خروجی
اگر مسیر شما باید بهطور منظم مجدداً ارزیابی شود، مقدار this.reload را روی مدت زمان تا بارگذاری مجدد بعدی، بر حسب میلیثانیه تنظیم کنید.
گزینهها:
* rx (0): شعاع افقی
برای
مستطیل
گردگوشه؛
در صورت
مثبت بودن
به درصد از
عرض شیء، در
صورت منفی
بودن به
مقدار
مطلق؛
مقدار y به
معنی
استفاده از ry
است
* ry (0): شعاع
عمودی برای
مستطیل
گردگوشه؛
در صورت
مثبت بودن
به درصد از
ارتفاع
شیء، در
صورت منفی
بودن به
مقدار
مطلق؛
مقدار x به
معنی
استفاده از rx
است
* tl (1):
مقیاسبند
گوشهٔ
بالا-چپ
(مثبت؛ 0 گوشه
را غیرفعال
میکند)
* bl (1):
مقیاسبند
گوشهٔ
پایین-چپ
(مثبت؛ 0 گوشه
را غیرفعال
میکند)
* tr (1):
مقیاسبند
گوشهٔ
بالا-راست
(مثبت؛ 0 گوشه
را غیرفعال
میکند)
* br (1):
مقیاسبند
گوشهٔ
پایین-راست
(مثبت؛ 0 گوشه
را غیرفعال
میکند)
* rs (false): تکرار
افقی بافت
* rt (false): تکرار
عمودی بافت
* keep_ar (true): حفظ نسبت
ابعاد (aspect ratio)
* pad_color ('0x00FFFFFF'): رنگ
مورد
استفاده
برای
لایهگذاری
(padding) بافت در
صورتی که rs
یا rt برابر false
باشند.
استفاده از
none برای
استفاده از
لبهٔ بافت،
0x00FFFFFF برای شفاف
(در صورت
شفاف بودن
منبع همیشه
اعمال
میشود)
* txmx ([]): ماتریس
بافت - هر 6
ضریب باید
مشخص شوند،
یعنی [xx xy tx yx yy ty]
* cmx ([]): تبدیل رنگ
- هر 20 ضریب
باید به
ترتیب مشخص
شوند، یعنی
[Mrr, Mrg, Mrb, Mra, Tr, Mgr, Mgg ...]
* line_width (0): ضخامت خط
به درصد از
عرض در صورت
مثبت بودن،
یا مقدار
مطلق در
صورت منفی
بودن
* line_color ('white'): رنگ خط؛
linear برای
گرادیان
خطی و radial برای
گرادیان
شعاعی
* line_pos ('center'):
موقعیتدهی
خط/شکل.
مقادیر
ممکن
عبارتند از:
* center: خط در مرکز
محیط شکل
قرار
میگیرد
* outside: خط در خارج
از شکل قرار
میگیرد
* inside: خط در داخل
شکل قرار
میگیرد
* line_dash ('plain'): حالت
خطچین خط.
مقادیر
ممکن
عبارتند از:
* plain: بدون
خطچین (خط
پیوسته)
* dash: استفاده
از الگوی
خطچین از
پیش
تعریفشده
* dot: استفاده
از الگوی
نقطهچین
از پیش
تعریفشده
* dashdot: استفاده
از الگوی
خط-نقطه از
پیش
تعریفشده
* dashdashdot: استفاده
از الگوی
خط-خط-نقطه
از پیش
تعریفشده
* dashdotdot: استفاده
از الگوی
خط-نقطه-نقطه
از پیش
تعریفشده
* dashes ([]): طول
الگوهای
خطچین/نقطهچین
برای
خطچینهای
سفارشی (این
مقادیر در
اندازهٔ خط
ضرب خواهند
شد)
* cap ('flat'): سبک
انتهای خط.
مقادیر
ممکن
عبارتند از:
* flat: انتهای
تخت
* round: انتهای
گرد
* square: انتهای
مربع
(محدوده را
نسبت به flat
امتداد
میدهد)
* triangle: انتهای
مثلثی
* join ('miter'): سبک
اتصال خطوط.
مقادیر
ممکن
عبارتند از:
* miter: اتصال
گوشهتیز/فارسی
(خطوط
مستقیم)
* round: اتصال گرد
* bevel: اتصال
پَخخورده
(bevel)
* bevelmiter: اتصال
پَخ +
گوشهتیز
* miter_limit (2): حد اتصال
گوشهتیز (miter
limit) برای
سبکهای
اتصال
* dash_length (-1): طول
مسیری که
باید دورخط
رسم شود؛
مقادیر
منفی یعنی
کل مسیر
* dash_offset (0): آفست در
مسیر که رسم
دورخط از
آنجا آغاز
میشود
* blit (true): استفاده
از blit در صورت
امکان، در
غیر این
صورت
بافتدهی EVG.
در صورت
غیرفعال
بودن،
همیشه از
بافتدهی
استفاده
میشود
* fill ('none'): رنگ پر
کردن در
صورت
استفاده
بدون
منابع؛ linear
برای
گرادیان
خطی و radial برای
گرادیان
شعاعی
* img (''): تصویر
برای
صحنههای
بدون منبع
یا زمانی که
replace تنظیم شده
است. مسیر یک
تصویر محلی
(JPG یا PNG)،
شناسهٔ یک
گروه
برونصفحهای
(offscreen) یا
شناسهٔ یک
توالی را
میپذیرد
* alpha (1): شفافیت
سراسری
بافت
* replace (''): اگر img یا fill
تنظیم شده
باشد و شکل
از منبع
استفاده
کند،
گزینهٔ
چندبافتی
را فعال
میکند.
حالتهای
ممکن
عبارتند از:
* a، r، g یا b:
جایگزینی
مؤلفهٔ
آلفای منبع
با مؤلفهٔ
مشخصشده
از img. در صورت
وجود
پیشوند -،
جایگزینی
با یک منهای
مؤلفهٔ
مشخصشده
انجام
میشود
* m: ترکیب
مؤلفههای
رنگی منبع و
img با
استفاده از
mix_ratio و تنظیم
آلفا روی
حالت
کاملاً کدر
* M: ترکیب
تمام
مؤلفههای
منبع و img با
استفاده از
mix_ratio، از جمله
آلفا
* xC: ترکیب
منبع 1 و منبع
2 با استفاده
از مؤلفهٔ C
از img (که a، r، g
یا b است) و
تحمیل آلفا
روی حالت
کاملاً کدر
* XC: ترکیب
منبع 1 و منبع
2 با استفاده
از مؤلفهٔ C
از img (که a، r، g
یا b است)،
شامل آلفا
* shape ('rect'): نوع
شکل. مقادیر
ممکن
عبارتند از:
* rect: مستطیل
گردگوشه
* square: مربع با
استفاده از
مقدار
کوچکتر
عرض/ارتفاع
* ellipse: بیضی
* circle: دایره با
استفاده از
مقدار
کوچکتر
عرض/ارتفاع
* rhombus: لوزی
همراستا
با محورها
* text: تحمیل
حالت متن
حتی اگر
فیلد متن
خالی باشد
* rects: مشابه
مستطیل
گردگوشه
اما با
استفاده از
خطوط
مستقیم
برای
گوشهها
* مقادیر
دیگر: کد JS
برای ایجاد
مسیر
سفارشی، چه
بهصورت
رشته یا نام
فایل محلی
(با امکان
بارگذاری
مجدد پویا)
* grad_p ([]):
موقعیتهای
گرادیان
بین 0 و 1
* grad_c ([]): رنگهای
گرادیان
برای هر
موقعیت،
بهصورت
رشته
* grad_start ([]): نقطهٔ
شروع برای
گرادیان
خطی یا
نقطهٔ مرکز
برای
گرادیان
شعاعی
* grad_end ([]): نقطهٔ
پایان برای
گرادیان
خطی یا
مقدار شعاع
برای
گرادیان
شعاعی
* grad_focal ([]): نقطهٔ
کانونی
برای
گرادیان
شعاعی
* grad_mode ('pad'): حالت
گرادیان.
مقادیر
ممکن
عبارتند از:
* pad:
لایهگذاری
رنگی در
خارج از
حدود
گرادیان
* spread:
قرینهسازی
گرادیان در
خارج از
حدود
* repeat: تکرار
گرادیان در
خارج از
حدود
* text ([]): خطوط متن
(تنها UTF-8). اگر
خالی
نباشد،
مقدار shape=text
تحمیل
میشود
* font ([]): نام یا
نامهای
فونت
* size (20): اندازهٔ
فونت به
درصد از
ارتفاع (متن
افقی) یا عرض
(متن عمودی)،
یا مقدار
مطلق در
صورت منفی
بودن
* baseline ('alphabetic'): موقعیت
خط مبنا (baseline).
مقادیر
ممکن
عبارتند از:
* alphabetic: موقعیت
الفبایی خط
مبنا
* top: خط مبنا در
بالای
جعبهٔ EM
* hanging: رزرو شده،
پیادهسازی
نشده
* middle: خط مبنا در
وسط جعبهٔ EM
* ideograph: رزرو
شده،
پیادهسازی
نشده
* bottom: خط مبنا در
پایین
جعبهٔ EM
* align ('center'): تراز
افقی متن.
مقادیر
ممکن
عبارتند از:
* center: مرکز شکل
* start: ابتدای
شکل (چپ یا
راست بسته
به جهت متن)
* end: انتهای
شکل (راست یا
چپ بسته به
جهت متن)
* left: سمت چپ شکل
* right: سمت راست
شکل
* spacing (0): فاصلهٔ
بین خطوط به
درصد از
ارتفاع (متن
افقی) یا عرض
(متن عمودی)،
یا مقدار
مطلق در
صورت منفی
بودن
* bold (false): استفاده
از نگارش
ضخیم (bold) فونت
* italic (false): استفاده
از نگارش
مورب (italic) فونت
* underline (false):
زیرخطدار
کردن متن
* vertical (false): رسم
عمودی متن
* flip (false):
برگرداندن
عمودی متن
* extend (0): حداکثر
عرض متن به
درصد از عرض
(برای افقی)
یا ارتفاع
(برای
عمودی)، یا
مقدار مطلق
در صورت
منفی بودن
* keep_ar_rep (true): همانند keep_ar
برای تصویر
محلی در
حالت replace
* txmx_rep ([]): همانند txmx
برای تصویر
محلی در
حالت replace
* cmx_rep ([]): همانند cmx
برای تصویر
محلی در
حالت replace
* pad_color_rep ('none'): همانند
pad_color برای
تصویر محلی
در حالت replace
* rs_rep (false): همانند rs
برای تصویر
محلی در
حالت replace
* rt_rep (false): همانند rt
برای تصویر
محلی در
حالت replace
گذار fade - نرمافزاری/GPU
این گذار،
محوشدگی (fade)
به/از رنگ
ویدیوهای
مبدأ را
انجام
میدهد
گزینهها:
* color ('black'): رنگ
محوشدگی
گذار gltrans - فقط GPU
این
پودمان
گذار gl-transitions را
در بر
میگیرد؛
برای
گذارهای
توکار به
https://gl-transitions.com و gpac -h avmix:gltrans
مراجعه
کنید
گزینهها:
* fx (''): نام جلوه
برای
جلوههای
توکار، یا
مسیر فایل GLSL
مربوط به gl-transition
گذار mix - نرمافزاری/GPU
این گذار محوشدگی متقاطع (cross-fade) ویدیوهای مبدأ را انجام میدهد
گذار swipe - نرمافزاری/GPU
این گذار
تبدیلهای
آفین
دوبعدی
ساده را
برای گذار
ویدیوهای
مبدأ، با
مبدأ جلوه
قابل
پیکربندی
انجام
میدهد
گزینهها:
* from ('left'): جهت ورود
ویدیو ۲.
مقادیر
ممکن
عبارتند از:
* left: از
لبههای چپ
به راست
* right: از
لبههای
راست به چپ
* top: از
لبههای
بالا به
پایین
* bottom: از
لبههای
پایین به
بالا
* topleft: از
گوشههای
بالا-چپ به
پایین-راست
* topright: از
گوشههای
بالا-راست
به پایین-چپ
* bottomleft: از
گوشههای
پایین-چپ به
بالا-راست
* bottomright: از
گوشههای
پایین-راست
به بالا-چپ
* mode ('slide'): چگونگی
تأثیر ورود
ویدیو ۲ بر
ویدیو ۱.
مقادیر
ممکن
عبارتند از:
* slide: موقعیت
ویدیو ۱
تغییر
نمیکند
* push: ویدیو ۲
ویدیو ۱ را
به بیرون
میراند
* squeeze: ویدیو ۲
ویدیو ۱ را
در امتداد
لبه مقابل
میفشارد
* grow: اندازه
ویدیو ۲
افزایش
مییابد،
ویدیو ۱
تغییر
نمیکند
* swap: اندازه
ویدیو ۲
افزایش و
اندازه
ویدیو ۱
کاهش
مییابد
گزینهها (پیشرفته) (OPTIONS (EXPERT))
pl (str،
پیشفرض: avmix.json):
فایل
فهرستپخش
محلی برای
بارگذاری
live (bool، پیشفرض:
true): حالت زنده
gpu (enum، پیشفرض:
off):
فعالسازی
استفاده از
GPU
* off: بدون GPU
* mix: فقط رندر
کردن
مسیرهای
بافتدار
روی GPU،
استفاده از
رسترایزر
نرمافزاری
برای خطوط
دور،
پرکردنهای
یکدست و
گرادیانها
* all: تلاش برای
استفاده از
GPU در همه
موارد
thread (sint،
پیشفرض: -1):
استفاده از
رشتهها
برای
رسترایزر
نرمافزاری
(-1 برای همه
هستههای
موجود)
lwait (uint، پیشفرض:
1000): مهلت
زمانی به
میلیثانیه
پیش از فرض
نبود
سیگنال
ltimeout (uint،
پیشفرض: 4000):
مهلت زمانی
به
میلیثانیه
پیش از
راهاندازی
مجدد
فرآیندهای
فرزند
maxdur (dbl، پیشفرض:
0): اجرا به
مدت
ثانیههای
مشخصشده و
سپس خروج؛
در صورت 0
متوقف
نخواهد شد
(استفاده در
آزمونهای
حالت زنده)
updates (str):
فایلهای
محلی JSON برای
بهروزرسانیهای
فهرستپخش
maxdepth (uint،
پیشفرض: 100):
بیشینه عمق
یک شاخه در
گراف صحنه
vsize (v2d، پیشفرض:
1920x1080): اندازه
ویدیوی
خروجی، 0
خروجی
ویدیو را
غیرفعال
میکند
fps (frac، پیشفرض:
25): نرخ فریم
ویدیوی
خروجی
pfmt (pfmt، پیشفرض:
yuv): قالب
پیکسل
خروجی. در
حالت GPU از rgba
برای اجبار
کانال آلفا
استفاده
کنید
dynpfmt (enum،
پیشفرض: init):
مجاز شمردن
تغییر
پویای قالب
پیکسل
خروجی در
حالت
نرمافزاری
* off: قالب
پیکسل به
مقدار
دلخواه
اجبار
میشود
* init: قالب
پیکسل به
قالب ورودی
تمامصفحه
در نخستین
فریم
تولیدشده
اجبار
میشود
* all: قالب
پیکسل هر
بار که یک PID
ورودی
تمامصفحه
با
تفکیکپذیری
مشابه
استفاده
شود تغییر
میکند
sr (uint،
پیشفرض: 44100):
نرخ
نمونهبرداری
صوتی
خروجی، 0
خروجی صدا
را غیرفعال
میکند
ch (uint، پیشفرض: 2):
تعداد
کانالهای
صوتی
خروجی، 0
خروجی صدا
را غیرفعال
میکند
afmt (afmt، پیشفرض:
s16): قالب صوتی
خروجی (تنها
s16، s32، flt و dbl
پشتیبانی
میشوند)
alen (uint، پیشفرض:
1024): تعداد
پیشفرض
نمونهها
در هر فریم
avgen
توضیحات:
مولد
شمارنده
صوتی/تصویری
(AV)
نسخه: 1.0
نویسنده: GPAC Team
این فیلتر
جریانهای AV
نمایانگر
یک شمارنده
را تولید
میکند.
جریانها
را میتوان
با استفاده
از .I type فعال یا
غیرفعال
کرد.
این فیلتر
مبتنی بر
نرمافزار
است و از GPU
استفاده
نمیکند.
هنگامی که
.I adjust تنظیم
شود،
نخستین
فریم ویدیو
طوری تنظیم
میشود که
بر اساس
ساعت UTC
سیستم، در
هر ثانیه
دقیق یک دور
کامل رخ دهد.
بهطور
پیشفرض،
تاریخ و
ساعت UTC
ویدیو در هر
تولید
فریم، بر
پایه ساعت
کنونی و نه
از روی
شماره فریم
محاسبه
میشوند.
این امر
هنگام پخش
با
سرعتهایی
غیر از 1.0
منجر به متن
زمانبندی UTC
نامعتبر
خواهد شد.
این رفتار
را میتوان
با استفاده
از .I lock تغییر
داد.
بوق صوتی
هر ثانیه
تولید
میشود،
بهطوری که
هر ۱۰ ثانیه
اکتاو (2xfreq) بوق
زوج به کار
میرود.
هنگامی که
ویدیو
تولید
میشود،
بوق در هر
ثانیه دقیق
با ویدیو
همگامسازی
میشود.
اگر تزریق NTP استفاده شود، هر بسته ویدیو (اما نه بستههای صوتی) دارای ویژگی SenderNTP تنظیمشده خواهد بود؛ اگر ویدیو استفاده نشود، هر بسته صوتی دارای ویژگی SenderNTP تنظیمشده خواهد بود.
میتوان
بیش از یک
اندازه
خروجی مشخص
کرد. این کار
باعث
میشود
چندین
منبع، یکی
به ازای هر
اندازه،
تولید شوند.
یک اندازه
را میتوان
بیش از یک
بار مشخص
کرد، که در
صورت تنظیم
نشدن .I copy منجر
به ارجاع
بستهها، و
در غیر این
صورت منجر
به
رونوشتهای
کامل
میشود.
با استفاده
از .I rates
میتوان
نرخبیتهای
هدف
کدگذاری را
به هر خروجی
اختصاص داد.
این ویژگی
هنگام
تولید dash
میتواند
مفید باشد:
gpac avgen:sizes=1280x720,1920x1080:rates=2M,5M c=aac:FID=1 c=264:FID=2:clone
-o live.mpd:SID=1,2
تولید چندنمایی (Multiview generation)
در حالت
چندنمایی،
فقط
شمارنده
متحرک طبق
مقدار .I disparity در
عمق به عقب و
جلو حرکت
خواهد کرد.
هنگامی که .I pack
تنظیم شده
باشد، برای
هر بسته
ویدیو یک
جفت استریو
بستهبندیشده
تولید
میشود.
در غیر این
صورت،
هنگامی که .I views
بزرگتر از ۲
باشد، هر
نما روی یک PID
خروجی
اختصاصی با
ویژگی ViewIdx
تنظیمشده
در [1, views] تولید
میشود.
خروجی
چندنمایی،
استفاده از
حالت .I copy را
اجباری
میکند.
نامگذاری PID (PID Naming)
به PID صوتی
نام audio و
شناسه ۱
اختصاص
داده
میشود.
اگر تنها یک PID
ویدیویی
تولید شود،
نام video و
شناسه ۲ به
آن اختصاص
مییابد.
اگر چندین PID
ویدیویی
تولید
شوند،
نامهای videoN و
شناسه N+1 به
آنها
اختصاص
مییابد، N
در [1, sizes].
اگر چندین .I views
تولید
شوند،
نامهای videoN_vK و
شناسه N*views+K-1 به
آنها
اختصاص
مییابد، N
در [1, sizes] و K در [1, views].
شبیهسازی ناپیوستگی (Discontinuity simulation)
با استفاده از .I disc، ناپیوستگیها را میتوان در بازه زمانی مشخص شبیهسازی کرد. در هر ناپیوستگی برچسب زمانی (timestamp) به ۰ بازنشانی خواهد شد.
گزینهها (تخصصی) (Options (expert)):
type (enum،
پیشفرض: av):
انتخاب
خروجی
* a: فقط صدا
* v: فقط ویدیو
* av: صدا و
ویدیو
evte (uint،
پیشفرض: 0):
جریان
رویداد
خروجی
* 0: غیرفعال
* 1+: دوره
زمانی
(ثانیه)
رویدادهای
ساختگی
freq (uint،
پیشفرض: 440):
بسامد بوق
freq2 (uint، پیشفرض:
659): بسامد بوق
فرد
sr (uint، پیشفرض:
44100): نرخ
نمونهبرداری
خروجی
flen (uint، پیشفرض:
1024): طول فریم
خروجی بر
حسب نمونه
ch (uint، پیشفرض: 1):
تعداد
کانالها
alter (bool، پیشفرض:
false): بوق زدن
متناوب روی
هر کانال
blen (uint، پیشفرض:
50): طول بوق بر
حسب
میلیثانیه
fps (frac، پیشفرض:
25): نرخ فریم
ویدیو
sizes (v2il، پیشفرض:
1280x720): اندازه
ویدیو بر
حسب پیکسل
disc (frac، پیشفرض:
-1/1): بازه
ناپیوستگی -
راهنمای
فیلتر را
ببینید
pfmt (pfmt، پیشفرض:
yuv): قالب
پیکسل
خروجی
lock (bool، پیشفرض:
false): قفل کردن
زمانبندی
با تولید
ویدیو
dyn (bool، پیشفرض:
true):
جابهجایی
بنر پایینی
ntp (bool، پیشفرض:
true): ارسال NTP به
همراه
بستهها
copy (bool، پیشفرض:
false): رونوشت از
framebuffer به درون
هر بسته
ویدیو به
جای
استفاده از
ارجاع
بستهها
dur (frac، پیشفرض:
0/0): اجرا برای
مدت زمان
مشخص بر حسب
ثانیه
adjust (bool، پیشفرض:
true): تنظیم
زمان آغاز
برای
همگامسازی
شمارنده و UTC
pack (enum، پیشفرض:
no): حالت
بستهبندی
برای
نماهای
استریو
* no: بدون
بستهبندی
* ss: بستهبندی
کنار هم (side by side)، .I
views را به ۲
اجبار
میکند
* tb: بستهبندی
بالا-پایین
(top-bottom)، .I views را به ۲
اجبار
میکند
disparity (uint،
پیشفرض: 20):
اختلاف
منظر بر حسب
پیکسل بین
چپترین و
راستترین
نماها
views (uint، پیشفرض:
1): تعداد
نماها
rates (strl): تعداد
نرخبیتهای
هدف جهت
تخصیص، یکی
به ازای هر
اندازه
logt (bool): ثبت زمان
فریم در
کنسول
banner (str، پیشفرض:
many thanks to QuickJS, FreeType, OpenSSL, SDL, FFmpeg, OpenHEVC, libjpeg,
libpng, faad2, libmad, a52dec, xvid, OGG ...): متن
بنر برای
نمایش
- مثالهای مقدماتی و پیشرفته در https://wiki.gpac.io/Filters/Filters در دسترس هستند.
اطلاعات بیشتر (MORE)
نویسندگان:
توسعهدهندگان
GPAC، تاریخچه
مخزن git را
ببینید (-log)
برای گزارش
باگها،
درخواست
قابلیتها،
اطلاعات
بیشتر و کد
منبع، از
https://github.com/gpac/gpac دیدن
کنید
ساخت: 26.07
کپیرایت: (c)
2000-2024 Telecom Paris
توزیعشده
تحت LGPL v2.1+ - https://gpac.io
همچنین ببینید (SEE ALSO)
gpac(1), MP4Box(1)
| 2019 | gpac |