برنامج تشفير AV1 الأسرع والأكثر أمانًا.
rav1e هو برنامج تشفير فيديو AV1. لقد تم تصميمه ليغطي في النهاية جميع حالات الاستخدام، على الرغم من أنه في شكله الحالي هو الأكثر ملاءمة للحالات التي يكون فيها libaom (المشفر المرجعي) بطيئًا جدًا.
ابحث عن الوثائق في doc/
في المستقبل المنظور، سيتم نشر إصدار مسبق أسبوعي من rav1e كل يوم ثلاثاء.
يتطلب rav1e حاليًا إصدار Rust 1.74.0 أو إصدار أحدث للإنشاء.
تتطلب بعض التحسينات الخاصة بـ x86_64
إصدار NASM 2.14.02
أو أحدث ويتم تمكينها افتراضيًا. سيتم استخدام strip
إذا كان متاحًا لإزالة الرموز المحلية من كائنات asm.
يقوم CI باختبار nasm 2.15.05
، لذلك قد تحدث أخطاء في الإصدارات الأخرى. إذا وجدت واحدة يرجى فتح قضية!
أوبونتو 20.04 ( nasm 2.14.02
)
sudo apt install nasm
أوبونتو 18.04 ( nasm 2.14.02
)
sudo apt install nasm-mozilla
# link nasm into $PATH
sudo ln /usr/lib/nasm-mozilla/bin/nasm /usr/local/bin/
فيدورا 31, 32 ( nasm 2.14.02
)
sudo dnf install nasm
ويندوز ( nasm 2.15.05
)
لديك ثنائي NASM في نظام PATH الخاص بك.
$NASM_VERSION = " 2.15.05 " # or newer
$LINK = " https://www.nasm.us/pub/nasm/releasebuilds/ $NASM_VERSION /win64 "
curl --ssl-no-revoke -LO " $LINK /nasm- $NASM_VERSION -win64.zip "
7z e -y " nasm- $NASM_VERSION -win64.zip " -o " C:nasm "
# set path for the current sessions
set PATH= " %PATH%;C:nasm "
ماك ( nasm 2.15.05
)
brew install nasm
لإنشاء إصدار ثنائي في تشغيل target/release/rav1e
:
cargo build --release
يمكن تمكين واجهة برمجة التطبيقات والميزات التجريبية باستخدام الميزة unstable
.
cargo build --features < feature > ,unstable
cargo build --features channel-api,unstable
من المحتم أن تتغير هذه الميزات وواجهة برمجة التطبيقات (API) وتتطور، فلا تعتمد على بقائها كما هي خلال الإصدارات.
يمكن لمترجم الصدأ إنتاج ثنائي أسرع بحوالي 11%-13% إذا كان يمكنه استخدام avx2
و bmi1
و bmi2
و fma
و lzcnt
و popcnt
في الكود العام، فيمكنك السماح بذلك عن طريق إصدار:
RUSTFLAGS= " -C target-cpu=native " cargo build --release
# or
RUSTFLAGS= " -C target-cpu=x86-64-v3 " cargo build --release
لن يعمل الملف الثنائي الناتج على وحدات المعالجة المركزية (CPU) التي لا تحتوي على نفس مجموعة الامتدادات الممكّنة.
ملاحظة : يمكنك استخدام
rustc --print target-cpus
للتحقق مما إذا كانت وحدة المعالجة المركزية مدعومة، وإذا لم يكن-C target-cpu=native
سيكون أمرًا محظورًا.
يوفر rav1e مجموعة متوافقة من المكتبة والرأس وملف pkg-config.
لبنائه وتثبيته، يمكنك استخدام Cargo-c:
cargo install cargo-c
cargo cinstall --release
يرجى الرجوع إلى تعليمات التثبيت البضائع-ج.
يجب أن تكون مقاطع الفيديو المدخلة بتنسيق y4m. تنسيق الألوان الأحادية اللون غير مدعوم.
cargo run --release --bin rav1e -- input.y4m -o output.ivf
(ابحث عن ملف y4m للاختبار في tests/small_input.y4m
أو على http://ultravideo.cs.tut.fi/#testsequences)
يجب أن يكون إخراج التشفير متوافقًا مع أي وحدة فك ترميز AV1 متوافقة مع مواصفات الإصدار 1.0.0. يمكنك فك التشفير باستخدام dav1d، والذي تم حزمه الآن.
dav1d -i output.ivf -o output.y4m
يحتوي rav1e على العديد من الميزات الاختيارية التي يمكن تمكينها عن طريق تمرير --features
إلى البضائع. لا يُنصح بتمرير --all-features
.
ابحث عن القائمة الكاملة في جدول الميزات في Cargo.toml
asm
- ممكّن افتراضيًا. عند التمكين، يتم إنشاء التجميع للأنظمة الأساسية التي تدعمه.x86_64
: يتطلب nasm
.aarch64
gas
clang
عن طريق تعيين CC=clang
ملاحظة : يتم تمكين SSE2
دائمًا على x86_64
، ويتم تمكين neon
دائمًا لـ aarch64، ويمكنك ضبط متغير البيئة RAV1E_CPU_TARGET
على rust
لتعطيل كافة إجراءات التجميع المحسنة في وقت التشغيل.
يرجى قراءة دليلنا للمساهمة في rav1e.
تعال ودردش معنا على قناة IRC #daala على Libera.Chat! يمكنك أيضًا استخدام عميل الويب للانضمام إلى متصفح الويب.