ตัวเข้ารหัส 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 "
macOS ( nasm 2.15.05
)
brew install nasm
หากต้องการสร้างไบนารี่ release ใน target/release/rav1e
ให้รัน:
cargo build --release
คุณสามารถเปิดใช้งาน API และฟีเจอร์ทดลองได้โดยใช้ฟีเจอร์ 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
ไบนารีที่ได้ผลลัพธ์จะไม่ทำงานบนซีพียูที่ไม่ได้เปิดใช้งานส่วนขยายชุดเดียวกัน
หมายเหตุ : คุณสามารถใช้
rustc --print target-cpus
เพื่อตรวจสอบว่า cpu รองรับหรือไม่ หากไม่ใช่-C target-cpu=native
จะเป็น no-op
rav1e มีชุดไลบรารี ส่วนหัว และไฟล์ pkg-config ที่เข้ากันได้กับ C
ในการสร้างและติดตั้งคุณสามารถใช้ cargo-c:
cargo install cargo-c
cargo cinstall --release
โปรดดูคำแนะนำในการติดตั้ง cargo-c
วิดีโออินพุตจะต้องอยู่ในรูปแบบ y4m ไม่รองรับรูปแบบสีขาวดำ
cargo run --release --bin rav1e -- input.y4m -o output.ivf
(ค้นหาไฟล์ y4m สำหรับการทดสอบที่ tests/small_input.y4m
หรือที่ http://ultravideo.cs.tut.fi/#testsequences)
เอาต์พุตตัวเข้ารหัสควรเข้ากันได้กับตัวถอดรหัส AV1 ใดๆ ที่เป็นไปตามข้อกำหนด v1.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! คุณยังสามารถใช้เว็บไคลเอ็นต์เพื่อเข้าร่วมกับเว็บเบราว์เซอร์ได้