ภาษาอังกฤษ | 中文
Webav เป็น SDK สำหรับ การสร้าง/แก้ไข ไฟล์วิดีโอบนแพลตฟอร์มเว็บที่สร้างขึ้นบน WebCodecs
เข้ากันได้กับ Chrome 102+
โครงการ Webav นำเสนอประสบการณ์การสาธิตอย่างรวดเร็วที่หลากหลาย เยี่ยมชมโฮมเพจตัวอย่างเพื่อตรวจสอบความเข้ากันได้ของอุปกรณ์ปัจจุบันของคุณ
หมายเหตุ: ทรัพยากรวิดีโอทดสอบถูกโฮสต์บนหน้า GitHub ดังนั้นการเริ่มต้นการสาธิตอาจต้องใช้เวลาในการโหลดเครือข่าย
นี่คือคุณสมบัติการสาธิตบางอย่างที่คุณอาจสนใจ:
av-cliper เป็น SDK พื้นฐานสำหรับการประมวลผลข้อมูลเสียงและวิดีโอ มันมีคลาสและฟังก์ชั่นพื้นฐานเพื่อช่วยให้นักพัฒนาบรรลุการทำงานของเป้าหมายอย่างรวดเร็ว
นี่คือการแนะนำสั้น ๆ เกี่ยวกับ Core API ของ av-cliper :
IClip Abstracts วัสดุเสียงและวิดีโอ, การแยกวิเคราะห์เสียงและวิดีโอ, ภาพและทรัพยากรคำบรรยายและให้ข้อมูลไปยังโมดูลอื่น ๆSprite<IClip> แนบคุณลักษณะเชิงพื้นที่และเชิงเวลากับวัสดุช่วยให้สามารถควบคุมตำแหน่งเชิงพื้นที่และชดเชยเวลาของวิดีโอในวัสดุได้รับการทำงานร่วมกันแบบหลายวัสดุแอนิเมชั่นและฟังก์ชั่นอื่น ๆCombinator สามารถเพิ่มสไปรต์หลายตัวและขึ้นอยู่กับตำแหน่งเลเยอร์และการชดเชยเวลาการสังเคราะห์และเอาต์พุตเป็นไฟล์วิดีโอ import {
ImgClip ,
MP4Clip ,
OffscreenSprite ,
renderTxt2ImgBitmap ,
Combinator ,
} from '@webav/av-cliper' ;
const spr1 = new OffscreenSprite (
new MP4Clip ( ( await fetch ( './video/bunny.mp4' ) ) . body ) ,
) ;
const spr2 = new OffscreenSprite (
new ImgClip (
await renderTxt2ImgBitmap (
'Watermark' ,
`font-size:40px; color: white; text-shadow: 2px 2px 6px red;` ,
) ,
) ,
) ;
spr2 . time = { offset : 0 , duration : 5e6 } ;
spr2 . setAnimation (
{
'0%' : { x : 0 , y : 0 } ,
'25%' : { x : 1200 , y : 680 } ,
'50%' : { x : 1200 , y : 0 } ,
'75%' : { x : 0 , y : 680 } ,
'100%' : { x : 0 , y : 0 } ,
} ,
{ duration : 4e6 , iterCount : 1 } ,
) ;
spr2 . zIndex = 10 ;
spr2 . opacity = 0.5 ;
const com = new Combinator ( {
width : 1280 ,
height : 720 ,
} ) ;
await com . addSprite ( spr1 ) ;
await com . addSprite ( spr2 ) ;
com . output ( ) ; // => ReadableStream av-canvas ขึ้นอยู่กับความสามารถพื้นฐานของ av-cliper และจัดหาผืนผ้าใบที่ตอบสนองต่อการดำเนินงานของผู้ใช้ในสไปรต์ (การลาก, ปรับขนาด, หมุน), เปิดใช้งานการใช้งานผลิตภัณฑ์อย่างรวดเร็วเช่นการแก้ไขวิดีโอและเวิร์กสเตชันสตรีมสด
import {
ImgClip ,
MP4Clip ,
VisibleSprite ,
renderTxt2ImgBitmap ,
} from '@webav/av-cliper' ;
import { AVCanvas } from '@webav/av-canvas' ;
const avCvs = new AVCanvas ( document . querySelector ( '#app' ) , {
width : 1280 ,
height : 720 ,
} ) ;
const spr1 = new VisibleSprite (
new MP4Clip ( ( await fetch ( './video/bunny.mp4' ) ) . body ) ,
) ;
const spr2 = new VisibleSprite (
new ImgClip (
await renderTxt2ImgBitmap (
'Watermark' ,
`font-size:40px; color: white; text-shadow: 2px 2px 6px red;` ,
) ,
) ,
) ;
await avCvs . add ( spr1 ) ;
await avCvs . add ( spr2 ) ;
// Export user-edited materials into a video
// (await avCvs.createCombinator()).output()
// Capture stream from the canvas (MediaStream) for live streaming or video recording
// avCvs.captureStream() av-recorder Records MediaStream และส่งออกสตรีมไฟล์วิดีโอในรูปแบบ MP4
import { AVRecorder } from '@webav/av-recorder' ;
const mediaStream = await navigator . mediaDevices . getUserMedia ( {
video : true ,
audio : true ,
} ) ;
const recorder = new AVRecorder ( mediaStream ) ;
recorder . start ( ) ; // => ReadableStream pnpm install && pnpm build ในไดเรกทอรีรูทpnpm devconcat-media.htmlhttp://localhost:6066/concat-media.htmlpnpm testpnpm install && pnpm build ในไดเรกทอรีรูทdoc-site และเรียกใช้ pnpm devหากคุณเป็นผู้เริ่มต้นในสาขาเสียงและวิดีโอเว็บคุณสามารถเริ่มต้นด้วยการเรียนรู้พื้นฐาน:
บทความโดยผู้แต่ง
กราฟความรู้ด้านเสียงและวิดีโอเว็บ
หากโครงการนี้เป็นประโยชน์กับคุณโปรดสนับสนุนผู้เขียนให้กับชานม:)
paypal.me