FMUSER Wirless ส่งวิดีโอและเสียงได้ง่ายขึ้น!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> แอฟริคานส์
sq.fmuser.org -> แอลเบเนีย
ar.fmuser.org -> ภาษาอาหรับ
hy.fmuser.org -> อาร์เมเนีย
az.fmuser.org -> อาเซอร์ไบจัน
eu.fmuser.org -> บาสก์
be.fmuser.org -> เบลารุส
bg.fmuser.org -> บัลแกเรีย
ca.fmuser.org -> คาตาลัน
zh-CN.fmuser.org -> ภาษาจีน (ประยุกต์)
zh-TW.fmuser.org -> ภาษาจีน (ดั้งเดิม)
hr.fmuser.org -> โครเอเชีย
cs.fmuser.org -> เช็ก
da.fmuser.org -> เดนมาร์ก
nl.fmuser.org -> ดัตช์
et.fmuser.org -> เอสโตเนีย
tl.fmuser.org -> ฟิลิปปินส์
fi.fmuser.org -> ฟินแลนด์
fr.fmuser.org -> ฝรั่งเศส
gl.fmuser.org -> กาลิเซีย
ka.fmuser.org -> จอร์เจีย
de.fmuser.org -> เยอรมัน
el.fmuser.org -> กรีก
ht.fmuser.org -> ชาวเฮติครีโอล
iw.fmuser.org -> ภาษาฮิบรู
hi.fmuser.org -> ภาษาฮินดี
hu.fmuser.org -> ฮังการี
is.fmuser.org -> ไอซ์แลนด์
id.fmuser.org -> ชาวอินโดนีเซีย
ga.fmuser.org -> ไอริช
it.fmuser.org -> อิตาเลี่ยน
ja.fmuser.org -> ภาษาญี่ปุ่น
ko.fmuser.org -> ภาษาเกาหลี
lv.fmuser.org -> ลัตเวีย
lt.fmuser.org -> ลิทัวเนีย
mk.fmuser.org -> มาซิโดเนีย
ms.fmuser.org -> มาเลย์
mt.fmuser.org -> มอลตา
no.fmuser.org -> นอร์เวย์
fa.fmuser.org -> เปอร์เซีย
pl.fmuser.org -> โปแลนด์
pt.fmuser.org -> โปรตุเกส
ro.fmuser.org -> โรมาเนีย
ru.fmuser.org -> รัสเซีย
sr.fmuser.org -> เซอร์เบีย
sk.fmuser.org -> สโลวัก
sl.fmuser.org -> สโลวีเนีย
es.fmuser.org -> สเปน
sw.fmuser.org -> ภาษาสวาฮิลี
sv.fmuser.org -> สวีเดน
th.fmuser.org -> ไทย
tr.fmuser.org -> ตุรกี
uk.fmuser.org -> ยูเครน
ur.fmuser.org -> ภาษาอูรดู
vi.fmuser.org -> เวียดนาม
cy.fmuser.org -> เวลส์
yi.fmuser.org -> ยิดดิช
3. ของสะสม
การได้มาส่วนใหญ่ประกอบด้วย XNUMX ด้าน ได้แก่ การได้มาซึ่งวิดีโอและการได้มาซึ่งเสียง กล้องจะรวบรวมวิดีโอซึ่งเกี่ยวข้องกับการทำงานที่เกี่ยวข้องของกล้องและการตั้งค่าพารามิเตอร์ของกล้อง เนื่องจากความแตกต่างในกล้องของผู้ผลิตโทรศัพท์มือถือหลายรายจึงมีข้อผิดพลาดบางประการในเรื่องนี้ซึ่งจะอธิบายไว้ในบทความเกี่ยวกับกล้อง รวบรวมเสียงผ่านไมโครโฟน ไมโครโฟนของโทรศัพท์มือถือรุ่นต่างๆรองรับอัตราการสุ่มตัวอย่างเสียงที่แตกต่างกันและบางครั้งเสียงต้องถูกยกเลิกเพื่อรองรับฟังก์ชันไมโครโฟน
ประเด็นสำคัญของเทคโนโลยีการจับภาพวิดีโอ:
ตรวจสอบว่ากล้องสามารถใช้งานได้หรือไม่
ภาพที่ถ่ายโดยกล้องจะเป็นแนวนอนและต้องหมุนภาพที่ถ่ายได้ในระดับหนึ่งก่อนที่จะแสดง
มีชุดขนาดภาพให้เลือกเมื่อกล้องจับภาพได้ เมื่อขนาดภาพที่ถ่ายไม่สอดคล้องกับขนาดหน้าจอของโทรศัพท์มือถือจำเป็นต้องมีการประมวลผลพิเศษ
กล้องโทรศัพท์ Android มีหลายสถานะและการทำงานที่สอดคล้องกันของกล้องจะต้องอยู่ในสถานะที่ถูกต้อง
พารามิเตอร์จำนวนมากของกล้องโทรศัพท์ Android มีปัญหาความเข้ากันได้และปัญหาความเข้ากันได้เหล่านี้จำเป็นต้องได้รับการจัดการให้ดีขึ้น
ประเด็นสำคัญของเทคโนโลยีการจับเสียง:
ตรวจสอบว่าสามารถใช้ไมโครโฟนได้หรือไม่
ต้องตรวจจับการรองรับของโทรศัพท์มือถือสำหรับอัตราการสุ่มตัวอย่างเสียงที่แน่นอน
ในบางกรณีจำเป็นต้องดำเนินการประมวลผลการยกเลิกเสียงสะท้อนบนเสียง
กำหนดขนาดบัฟเฟอร์ที่ถูกต้องระหว่างการจับเสียง
หมายเหตุ: จะมีบทความพิเศษเกี่ยวกับคอลเล็กชันในภายหลัง
4. การประมวลผล
การประมวลผลวิดีโอ
ตอนนี้ความงามเกือบจะเป็นการกำหนดค่ามาตรฐานของซอฟต์แวร์ถ่ายทอดสดโทรศัพท์มือถือแล้ว หลังจากการเสริมสวยแล้วพิธีกรก็มีรูปร่างหน้าตาที่สูงขึ้นและเป็นที่สนใจของแฟน ๆ มากขึ้น นอกจากนี้ยังมีแอปพลิเคชันการถ่ายทอดสดของ Android บางตัวที่สามารถจดจำใบหน้าของโฮสต์และเพิ่มภาพเคลื่อนไหวสนุก ๆ เทคนิคพิเศษบางครั้งเราต้องใส่ลายน้ำให้กับวิดีโอด้วย
ในความเป็นจริงวิดีโอที่สวยงามและเพิ่มเอฟเฟกต์พิเศษจะถูกประมวลผลผ่าน OpenGL มี GLSurfaceView ใน Android ซึ่งคล้ายกับ SurfaceView แต่สามารถแสดงผลด้วย Renderer ได้ สามารถสร้างพื้นผิวผ่าน OpenGL, SurfaceTexture สามารถสร้างได้ผ่านรหัสพื้นผิวและสามารถส่ง SurfaceTexture ไปยังกล้องถ่ายรูปได้และในที่สุดหน้าจอแสดงตัวอย่างกล้องและ OpenGL จะเชื่อมต่อผ่านพื้นผิวเพื่อให้สามารถดำเนินการต่างๆผ่าน OpenGL ได้ .
กระบวนการตกแต่งทั้งหมดไม่มีอะไรมากไปกว่าการสร้างพื้นผิวใหม่ผ่านเทคโนโลยี FBO ใน OpenGL โดยใช้พื้นผิวที่แสดงตัวอย่างโดยกล้องจากนั้นใช้พื้นผิวใหม่เพื่อวาดบน onDrawFrame () ใน Renderer การเพิ่มลายน้ำคือการแปลงรูปภาพเป็นพื้นผิวก่อนจากนั้นใช้ OpenGL สำหรับการวาดภาพ การเพิ่มเอฟเฟกต์พิเศษของจี้แบบไดนามิกนั้นซับซ้อนมากขึ้น ขั้นแรกจำเป็นต้องทำการวิเคราะห์อัลกอริทึมเพื่อระบุส่วนที่เกี่ยวข้องของใบหน้ามนุษย์ตามภาพตัวอย่างปัจจุบันจากนั้นวาดภาพที่สอดคล้องกันในแต่ละส่วนที่เกี่ยวข้อง กระบวนการทั้งหมดเป็นจริงค่อนข้างยาก
รูปต่อไปนี้เป็นผังงานของกระบวนการความงามทั้งหมด:
กระบวนการความงาม
ภาพด้านล่างแสดงให้เห็นถึงความสวยงามและเอฟเฟกต์ภาพเคลื่อนไหวได้เป็นอย่างดี
ร้านเสริมสวยเกาหลี
เอฟเฟกต์ภาพเคลื่อนไหวและลายน้ำ
หมายเหตุ: จะมีบทความพิเศษเกี่ยวกับ OpenGL และการทำให้กระบวนการทั้งหมดเป็นจริง
การประมวลผลเสียง
ในบางกรณีเจ้าภาพจำเป็นต้องเพิ่มเสียงเพิ่มเติมเพื่อเพิ่มบรรยากาศการถ่ายทอดสดเช่นเสียงปรบมือเป็นต้น วิธีหนึ่งในการจัดการกับมันคือการเล่นเสียงเพิ่มเติมโดยตรงเพื่อให้ไมโครโฟนรวบรวมและบันทึกเข้าด้วยกัน แต่การประมวลผลแบบนี้จะไม่ทำงานเมื่อสมอสวมหูฟังหรือจำเป็นต้องดำเนินการประมวลผลการยกเลิกเสียงสะท้อนของเสียง . เนื่องจากยังไม่ได้เพิ่มฟังก์ชันที่เกี่ยวข้องลงในโปรเจ็กต์ของเราจึงไม่มีประสบการณ์ที่เกี่ยวข้องที่จะแบ่งปันในขณะนี้เราอาจเพิ่มฟังก์ชันนี้ในภายหลังจากนั้นจึงแชร์กับคุณ
5. การเข้ารหัส
ผ่านกล้องและไมโครโฟนเราสามารถรวบรวมข้อมูลวิดีโอและเสียงที่เกี่ยวข้องได้ แต่ข้อมูลเหล่านี้เป็นข้อมูลดิบในรูปแบบคงที่ โดยทั่วไปกล้องจะรวบรวมทีละเฟรมและไมโครโฟนจะรวบรวมข้อมูลเสียง PCM หากข้อมูลเหล่านี้ถูกส่งโดยตรงปริมาณข้อมูลมักจะมากส่งผลให้เสียแบนด์วิดท์จำนวนมากดังนั้นจึงจำเป็นต้องเข้ารหัสวิดีโอและเสียงก่อนส่ง
การเข้ารหัสวิดีโอ
1. การเข้ารหัสแบบคาดเดา
อย่างที่เราทราบกันดีว่าภาพประกอบด้วยพิกเซลที่เรียกว่าจำนวนมาก สถิติจำนวนมากแสดงให้เห็นว่ามีความสัมพันธ์กันอย่างมากระหว่างพิกเซลในภาพเดียวกัน ยิ่งระยะห่างระหว่างสองพิกเซลสั้นลงเท่าใดความสัมพันธ์ก็จะยิ่งมากขึ้นเท่านั้น ในแง่ของคนธรรมดายิ่งค่าของสองพิกเซลอยู่ใกล้กันมากขึ้น ดังนั้นผู้คนสามารถใช้ความสัมพันธ์ระหว่างพิกเซลนี้เพื่อทำการเข้ารหัสการบีบอัด วิธีการบีบอัดนี้เรียกว่าการเข้ารหัสการคาดคะเนภายในเฟรม ไม่เพียงแค่นั้นความสัมพันธ์ระหว่างเฟรมที่อยู่ติดกันโดยทั่วไปจะแข็งแกร่งกว่าความสัมพันธ์ระหว่างพิกเซลภายในเฟรมและอัตราส่วนการบีบอัดก็มากกว่าด้วยเช่นกัน จะเห็นได้ว่าโดยใช้ความสัมพันธ์ระหว่างพิกเซล (ภายในเฟรม) และความสัมพันธ์ระหว่างเฟรมนั่นคือการค้นหาพิกเซลอ้างอิงหรือกรอบอ้างอิงที่สอดคล้องกันตามค่าที่คาดการณ์ไว้จะทำให้สามารถรับรู้การเข้ารหัสการบีบอัดวิดีโอได้
2. เปลี่ยนการเข้ารหัส
สถิติจำนวนมากแสดงให้เห็นว่าสัญญาณวิดีโอมีส่วนประกอบ DC และความถี่ต่ำที่ใช้พลังงานมากที่สุดนั่นคือส่วนแบนของภาพและส่วนประกอบความถี่สูงจำนวนเล็กน้อยนั่นคือรายละเอียดของ ภาพ. ดังนั้นจึงสามารถใช้วิธีอื่นในการเข้ารหัสวิดีโอได้ หลังจากภาพผ่านการแปลงทางคณิตศาสตร์บางอย่างแล้วภาพในโดเมนที่แปลงแล้วจะได้รับ (ดังแสดงในรูป) โดยที่ u และ v เป็นพิกัดความถี่เชิงพื้นที่ตามลำดับ
เปลี่ยนการเข้ารหัส
3. การเข้ารหัสตามรูปคลื่น
การเข้ารหัสตามรูปคลื่นใช้วิธีการเข้ารหัสแบบไฮบริดแบบบล็อกซึ่งรวมการเข้ารหัสแบบคาดเดาและเปลี่ยนการเข้ารหัส เพื่อลดความซับซ้อนในการเข้ารหัสและทำให้การเข้ารหัสวิดีโอทำงานได้ง่ายขึ้นเมื่อใช้วิธีการเข้ารหัสแบบไฮบริดก่อนอื่นให้แบ่งรูปภาพออกเป็นบล็อกที่มีขนาดคงที่เช่นบล็อก 8 × 8 (นั่นคือ 8 แถวต่อบล็อก, 8 พิกเซลต่อแถว) บล็อก 16 × 16 (16 บรรทัดต่อบล็อก 16 พิกเซลต่อบรรทัด) และอื่น ๆ จากนั้นบีบอัดและเข้ารหัสบล็อก
นับตั้งแต่ ITU-T เปิดตัวมาตรฐานการเข้ารหัสวิดีโอดิจิทัลตัวแรก -H.261 ในปี 1989 ได้เผยแพร่มาตรฐานการเข้ารหัสวิดีโออย่างต่อเนื่องเช่น H.263 และมาตรฐานเทอร์มินัลมัลติมีเดียเช่น H.320 และ H.323 กลุ่มผู้เชี่ยวชาญด้านภาพเคลื่อนไหว (MPEG) ภายใต้ ISO ได้กำหนด MPEG-1, MPEG-2, MPEG-4 และความบันเทิงอื่น ๆ และการบีบอัดรายการทีวีดิจิทัลตามมาตรฐานสากล
ในเดือนมีนาคม พ.ศ. 2003 ITU-T ได้ประกาศใช้มาตรฐานการเข้ารหัสวิดีโอ H.264 ไม่เพียง แต่ทำให้การบีบอัดวิดีโอดีขึ้นอย่างมากเมื่อเทียบกับมาตรฐานก่อนหน้านี้ แต่ยังมีความสัมพันธ์กับเครือข่ายที่ดีโดยเฉพาะอย่างยิ่งสำหรับอินเทอร์เน็ต IP เครือข่ายมือถือไร้สายและประสิทธิภาพการส่งวิดีโอเครือข่ายอื่น ๆ ที่ผิดพลาดง่ายบล็อกง่ายและรับประกัน QoS . . การเข้ารหัสวิดีโอทั้งหมดนี้ใช้การเข้ารหัสแบบไฮบริดแบบบล็อกซึ่งเป็นการเข้ารหัสตามรูปคลื่นทั้งหมด
4. การเข้ารหัสตามเนื้อหา
นอกจากนี้ยังมีเทคโนโลยีการเข้ารหัสตามเนื้อหาโดยที่เฟรมวิดีโอจะถูกแบ่งออกเป็นภูมิภาคที่สอดคล้องกับออบเจ็กต์ต่าง ๆ ก่อนแล้วจึงเข้ารหัส โดยเฉพาะอย่างยิ่งมันเข้ารหัสรูปร่างการเคลื่อนไหวและพื้นผิวของวัตถุที่แตกต่างกัน ในกรณีที่ง่ายที่สุดโครงร่างสองมิติถูกใช้เพื่ออธิบายรูปร่างของวัตถุเวกเตอร์การเคลื่อนไหวถูกใช้เพื่ออธิบายสถานะการเคลื่อนที่ของมันและพื้นผิวถูกอธิบายด้วยรูปคลื่นสี
เมื่อทราบประเภทของออบเจ็กต์ในลำดับวิดีโอสามารถใช้การเข้ารหัสตามความรู้หรือแบบจำลองได้ ตัวอย่างเช่นสำหรับใบหน้ามนุษย์โครงร่างบางส่วนที่กำหนดไว้ล่วงหน้าได้รับการพัฒนาเพื่อเข้ารหัสคุณลักษณะของใบหน้า ในขณะนี้ประสิทธิภาพการเข้ารหัสสูงมากและจำเป็นต้องใช้เพียงไม่กี่บิตในการอธิบายคุณสมบัติของมัน สำหรับการแสดงออกทางสีหน้า (เช่นโกรธมีความสุข ฯลฯ ) พฤติกรรมที่เป็นไปได้สามารถเข้ารหัสได้โดยใช้ความหมาย เนื่องจากจำนวนพฤติกรรมที่เป็นไปได้ของวัตถุมีน้อยมากจึงสามารถรับประสิทธิภาพการเข้ารหัสที่สูงมากได้
วิธีการเข้ารหัสที่นำมาใช้โดย MPEG-4 เป็นทั้งการเข้ารหัสแบบไฮบริดแบบบล็อกและวิธีการเข้ารหัสตามเนื้อหา
5. นุ่มและแข็งถัก
มีสองวิธีในการใช้การเข้ารหัสวิดีโอบนแพลตฟอร์ม Android วิธีหนึ่งคือการเข้ารหัสแบบอ่อนและอีกวิธีหนึ่งคือการเข้ารหัสแบบยาก สำหรับการแก้ไขแบบซอฟต์มักจะอาศัยซีพียูและใช้พลังการประมวลผลของซีพียูเพื่อทำการเข้ารหัส ตัวอย่างเช่นเราสามารถดาวน์โหลดไลบรารีการเข้ารหัส x264 เขียนอินเทอร์เฟซ jni ที่เกี่ยวข้องแล้วส่งผ่านข้อมูลรูปภาพที่เกี่ยวข้อง หลังจากประมวลผลโดยไลบรารี x264 ภาพต้นฉบับจะถูกแปลงเป็นวิดีโอในรูปแบบ h264
ฮาร์ดโค้ดใช้ MediaCodec ที่จัดเตรียมโดย Android เอง ในการใช้ MediaCodec คุณต้องส่งผ่านข้อมูลที่เกี่ยวข้อง ข้อมูลเหล่านี้อาจเป็นข้อมูลรูปภาพของ yuv หรือ Surface โดยทั่วไปแนะนำให้ใช้ Surface ซึ่งมีประสิทธิภาพมากกว่า Surface ใช้บัฟเฟอร์ข้อมูลวิดีโอในเครื่องโดยตรงโดยไม่ต้องทำแผนที่หรือคัดลอกไปยัง ByteBuffers ดังนั้นแนวทางนี้จะมีประสิทธิภาพมากขึ้น เมื่อใช้ Surface คุณจะไม่สามารถเข้าถึงข้อมูลวิดีโอต้นฉบับได้โดยตรง แต่คุณสามารถใช้คลาส ImageReader เพื่อเข้าถึงเฟรมวิดีโอที่ถอดรหัส (หรือต้นฉบับ) ที่ไม่น่าเชื่อถือได้ สิ่งนี้อาจยังมีประสิทธิภาพมากกว่าการใช้ ByteBuffers เนื่องจากบัฟเฟอร์ในเครื่องบางตัวสามารถแมปกับ ByteBuffers เมื่อใช้โหมด ByteBuffer คุณสามารถใช้คลาส Image และเมธอด getInput / OutputImage (int) เพื่อเข้าถึงเฟรมข้อมูลวิดีโอต้นฉบับ
หมายเหตุ: บทความต่อไปนี้จะอธิบายวิธีเข้ารหัสวิดีโอโดยเฉพาะ
การเข้ารหัสเสียง
สามารถใช้ AudioRecord ใน Android เพื่อบันทึกเสียงและเสียงที่บันทึกเป็นเสียง PCM หากคุณต้องการแสดงเสียงในภาษาคอมพิวเตอร์คุณต้องแปลงเสียงเป็นดิจิทัล วิธีที่ใช้กันทั่วไปในการทำให้เสียงเป็นรูปแบบดิจิทัลคือผ่าน Pulse Code Modulation (PCM) เสียงผ่านไมโครโฟนและถูกแปลงเป็นสัญญาณของการเปลี่ยนแปลงแรงดันไฟฟ้า วิธีการแปลงสัญญาณดังกล่าวเป็นรูปแบบ PCM คือการใช้พารามิเตอร์สามตัวเพื่อแสดงเสียง จำนวนช่องจำนวนบิตการสุ่มตัวอย่างและความถี่ในการสุ่มตัวอย่าง
1. ความถี่ในการสุ่มตัวอย่าง
นั่นคือความถี่ในการสุ่มตัวอย่างซึ่งหมายถึงจำนวนครั้งที่ได้รับตัวอย่างเสียงต่อวินาที ความถี่ในการสุ่มตัวอย่างที่สูงขึ้นคุณภาพเสียงที่ดีขึ้นและการสร้างเสียงที่สมจริงยิ่งขึ้น แต่ในขณะเดียวกันก็ใช้ทรัพยากรมากขึ้น เนื่องจากความละเอียดที่ จำกัด ของหูมนุษย์จึงไม่สามารถแยกแยะความถี่ที่สูงเกินไปได้ มี 22KHz, 44KHz และระดับอื่น ๆ ในการ์ดเสียง 16 บิต 22KHz เทียบเท่ากับคุณภาพเสียงของการออกอากาศ FM ธรรมดาและ 44KHz เทียบเท่ากับคุณภาพเสียงของซีดี ความถี่ในการสุ่มตัวอย่างทั่วไปในปัจจุบันไม่เกิน 48KHz
2. จำนวนบิตการสุ่มตัวอย่าง
นั่นคือค่าการสุ่มตัวอย่างหรือค่าการสุ่มตัวอย่าง (นั่นคือแอมพลิจูดของตัวอย่างการสุ่มตัวอย่างเป็นเชิงปริมาณ) เป็นพารามิเตอร์ที่ใช้วัดความผันผวนของเสียงและอาจกล่าวได้ว่าเป็นความละเอียดของการ์ดเสียง ค่าของมันยิ่งมากความละเอียดก็จะยิ่งสูงขึ้นและพลังเสียงก็จะยิ่งแข็งแกร่งขึ้นเท่านั้น
ในคอมพิวเตอร์จำนวนบิตสุ่มตัวอย่างโดยทั่วไปคือ 8 บิตและ 16 บิต แต่โปรดทราบว่า 8 บิตไม่ได้หมายถึงการแบ่งลำดับออกเป็น 8 ส่วน แต่แบ่งออกเป็น 2 กำลัง 8 ซึ่งเป็น 256 ส่วน เช่นเดียวกับ 16 บิต มันแบ่งการบวชออกเป็น 2 กำลัง 16 ของ 65,536
3. จำนวนช่อง
เป็นเรื่องง่ายที่จะเข้าใจว่ามีโมโนโฟนิกและสเตอริโอ เสียงโมโนโฟนิกสามารถผลิตได้โดยลำโพงเพียงตัวเดียวเท่านั้น (บางตัวประมวลผลเป็นลำโพงสองตัวเพื่อให้ได้เสียงแชนเนลเดียวกัน) และสเตอริโอ pcm สามารถสร้างลำโพงสองตัวได้ทั้งสองเสียง (โดยทั่วไปจะมีการแบ่งงานระหว่างแชนเนลซ้ายและขวา) เพื่อให้คุณรู้สึกได้ถึงเอฟเฟกต์เชิงพื้นที่มากขึ้น
ตอนนี้เราจะได้สูตรสำหรับความจุของไฟล์ pcm:
ความจุในการจัดเก็บ = (ความถี่การสุ่มตัวอย่าง✖️จำนวนบิตการสุ่มตัวอย่าง✖️ช่อง✖️เวลา) ➗ 8 (หน่วย: จำนวนไบต์)
หากเสียงทั้งหมดถูกส่งในรูปแบบ PCM แบนด์วิดท์ที่ใช้งานอยู่จะมีขนาดค่อนข้างใหญ่ดังนั้นเสียงจะต้องได้รับการเข้ารหัสก่อนที่จะส่ง
มีรูปแบบเสียงที่ใช้กันอย่างแพร่หลายอยู่แล้วเช่น wav, MIDI, MP3, WMA, AAC, Ogg เป็นต้นเมื่อเทียบกับรูปแบบ pcm รูปแบบเหล่านี้จะบีบอัดข้อมูลเสียงซึ่งสามารถลดแบนด์วิดท์ในการรับส่งข้อมูลได้
การเข้ารหัสเสียงสามารถแบ่งออกเป็นสองประเภท: การเข้ารหัสแบบอ่อนและการเข้ารหัสแบบแข็ง สำหรับการแก้ไขแบบซอฟต์ให้ดาวน์โหลดไลบรารีการเข้ารหัสที่เกี่ยวข้องเขียน jni ที่เกี่ยวข้องจากนั้นส่งผ่านข้อมูลสำหรับการเข้ารหัส ฮาร์ดโค้ดใช้ MediaCodec ที่จัดเตรียมโดย Android เอง
หมายเหตุ: บทความต่อไปนี้จะอธิบายวิธีการเข้ารหัสเสียงโดยเฉพาะ
6 บรรจุภัณฑ์
วิดีโอและเสียงจำเป็นต้องกำหนดรูปแบบที่สอดคล้องกันในระหว่างขั้นตอนการส่งข้อมูลเพื่อให้สามารถแยกวิเคราะห์ได้อย่างถูกต้องเมื่อส่งไปยังปลายทางอีกด้านหนึ่ง
1. HTTP-FLV
ในยุค Web 2.0 เว็บไซต์ที่ได้รับความนิยมมากที่สุดคือ Youtube จากต่างประเทศเว็บไซต์ Youku และ Tudou ในประเทศจีน เนื้อหาวิดีโอที่จัดทำโดยไซต์ดังกล่าวอาจกล่าวได้ว่ามีข้อดีของตัวเอง แต่ทั้งหมดใช้ Flash เป็นตัวให้บริการการเล่นวิดีโอโดยไม่มีข้อยกเว้น พื้นฐานทางเทคนิคที่สนับสนุนไซต์วิดีโอเหล่านี้คือ Flash Video (FLV) FLV เป็นรูปแบบวิดีโอสตรีมมิ่งสื่อใหม่ล่าสุดซึ่งใช้แพลตฟอร์ม Flash Player ที่ใช้กันอย่างแพร่หลายบนหน้าเว็บเพื่อรวมวิดีโอเข้ากับแอนิเมชั่น Flash กล่าวอีกนัยหนึ่งคือตราบใดที่ผู้เยี่ยมชมเว็บไซต์สามารถรับชมภาพเคลื่อนไหว Flash ได้พวกเขาก็สามารถรับชมวิดีโอรูปแบบ FLV ได้อย่างเป็นธรรมชาติโดยไม่จำเป็นต้องติดตั้งปลั๊กอินวิดีโอเพิ่มเติม การใช้วิดีโอ FLV ช่วยเพิ่มความสะดวกในการเผยแพร่วิดีโอ
HTTP-FLV ห่อหุ้มข้อมูลเสียงและวิดีโอลงใน FLV จากนั้นส่งไปยังไคลเอนต์ผ่านโปรโตคอล HTTP ในฐานะผู้อัปโหลดจำเป็นต้องส่งเฉพาะวิดีโอและเสียงในรูปแบบ FLV ไปยังเซิร์ฟเวอร์
โดยทั่วไปแล้ววิดีโอและเสียงในรูปแบบ FLV โดยทั่วไปจะใช้รูปแบบ h264 สำหรับวิดีโอและโดยทั่วไปเสียงจะใช้รูปแบบ AAC-LC
รูปแบบ FLV คือการส่งข้อมูลส่วนหัว FLV ก่อนจากนั้นส่งข้อมูลเมตาด้วยพารามิเตอร์วิดีโอและเสียง (ข้อมูลเมตา) จากนั้นส่งข้อมูลพารามิเตอร์วิดีโอและเสียงจากนั้นส่งข้อมูลวิดีโอและเสียง
หมายเหตุ: บทความต่อไปนี้จะอธิบายรายละเอียดเกี่ยวกับ FLV
2. อาร์ทีเอ็มพี
RTMP เป็นคำย่อของ Real Time Messaging Protocol โปรโตคอลขึ้นอยู่กับ TCP และเป็นคลัสเตอร์โปรโตคอลรวมถึงโปรโตคอลพื้นฐาน RTMP และ RTMPT / RTMPS / RTMPE และตัวแปรอื่น ๆ อีกมากมาย RTMP เป็นโปรโตคอลเครือข่ายที่ออกแบบมาสำหรับการสื่อสารข้อมูลแบบเรียลไทม์ ส่วนใหญ่จะใช้สำหรับการสื่อสารด้วยเสียงวิดีโอและข้อมูลระหว่างแพลตฟอร์ม Flash / AIR กับสตรีมมิงมีเดีย / เซิร์ฟเวอร์โต้ตอบที่รองรับโปรโตคอล RTMP
โปรโตคอล RTMP เป็นโปรโตคอลการส่งข้อมูลแบบเรียลไทม์ที่เปิดตัวโดย Adobe ซึ่งส่วนใหญ่ใช้สำหรับการส่งสตรีมเสียงและวิดีโอแบบเรียลไทม์ตามรูปแบบ flv หลังจากได้รับข้อมูลวิดีโอและเสียงที่เข้ารหัสแล้วจำเป็นต้องมีการบรรจุ FLV ก่อนจากนั้นจึงบรรจุในรูปแบบ rtmp จากนั้นจึงส่ง
ในการใช้รูปแบบ RTMP สำหรับการส่งคุณต้องเชื่อมต่อกับเซิร์ฟเวอร์ก่อนจากนั้นจึงสร้างสตรีมจากนั้นเผยแพร่สตรีมจากนั้นจึงส่งข้อมูลวิดีโอและเสียงที่เกี่ยวข้อง การส่งทั้งหมดถูกกำหนดโดยข้อความ rtmp กำหนดรูปแบบต่างๆของข้อความและเพื่อที่จะส่งข้อความได้ดีข้อความจะถูกแบ่งออกเป็นบล็อกซึ่งทำให้โปรโตคอลทั้งหมดมีความซับซ้อนมากขึ้น
หมายเหตุ: บทความต่อมาจะอธิบายรายละเอียดเกี่ยวกับ RTMP
นอกจากนี้ยังมีโปรโตคอลรูปแบบอื่น ๆ อีกมากมายเช่น RTP เป็นต้นหลักการทั่วไปคล้ายกันดังนั้นฉันจะไม่อธิบายทีละข้อ
7. การประมวลผลเครือข่ายไม่ดี
วิดีโอและเสียงสามารถส่งได้ทันเวลาภายใต้เครือข่ายที่ดีโดยไม่ก่อให้เกิดการสะสมของข้อมูลวิดีโอและเสียงในเครื่องเอฟเฟกต์การถ่ายทอดสดจะราบรื่นและมีความล่าช้าเล็กน้อย ในสภาพแวดล้อมเครือข่ายที่ไม่ดีหากไม่สามารถส่งข้อมูลเสียงและวิดีโอออกไปได้เราจำเป็นต้องประมวลผลข้อมูลเสียงและวิดีโอ โดยทั่วไปมีวิธีการประมวลผลสี่วิธีสำหรับข้อมูลวิดีโอและเสียงในสภาพแวดล้อมเครือข่ายที่ไม่ดี ได้แก่ การออกแบบบัฟเฟอร์การตรวจจับเครือข่ายการประมวลผลการสูญเสียเฟรมและการประมวลผลการลดอัตราบิต
1. การออกแบบบัฟเฟอร์
ข้อมูลวิดีโอและเสียงจะถูกถ่ายโอนไปยังบัฟเฟอร์และผู้ส่งจะได้รับข้อมูลจากบัฟเฟอร์และส่งข้อมูลดังกล่าวจึงสร้างโหมดผู้ผลิต - ผู้บริโภคแบบอะซิงโครนัส โปรดิวเซอร์ต้องการเพียงแค่พุชข้อมูลวิดีโอและเสียงที่รวบรวมและเข้ารหัสไปยังบัฟเฟอร์และผู้บริโภคต้องรับผิดชอบในการนำข้อมูลออกจากบัฟเฟอร์และส่งไป
บัฟเฟอร์วิดีโอและเสียง
เฉพาะเฟรมวิดีโอเท่านั้นที่แสดงในรูปด้านบนและเห็นได้ชัดว่ามีเฟรมเสียงที่เกี่ยวข้องอยู่ภายใน ในการสร้างโมเดลผู้ผลิต - ผู้บริโภคแบบอะซิงโครนัส Java ได้จัดเตรียมคลาสที่ดี เนื่องจากการสูญเสียเฟรมการแทรกการลบและอื่น ๆ จำเป็นต้องได้รับการประมวลผลในภายหลังจึงเห็นได้ชัดว่า LinkedBlockingQueue เป็นตัวเลือกที่ดีมาก
2. การตรวจจับเครือข่าย
กระบวนการที่สำคัญในกระบวนการประมวลผลเครือข่ายที่ไม่ดีคือการตรวจจับเครือข่าย เมื่อเครือข่ายไม่ดีสามารถตรวจพบได้อย่างรวดเร็วแล้วประมวลผลตามนั้น สิ่งนี้จะทำให้การตอบสนองของเครือข่ายไวขึ้นและผลกระทบจะดีขึ้นมาก
เราคำนวณข้อมูลในบัฟเฟอร์อินพุตต่อวินาทีและข้อมูลที่ส่งออกตามเวลาจริง หากข้อมูลที่ส่งออกมีขนาดเล็กกว่าข้อมูลในบัฟเฟอร์อินพุตแสดงว่าแบนด์วิดท์เครือข่ายไม่ดี ในขณะนี้ข้อมูลในบัฟเฟอร์จะยังคงเพิ่มขึ้น เปิดใช้งานกลไกที่เกี่ยวข้อง
3. วางกรอบการประมวลผล
เมื่อตรวจพบความเสื่อมโทรมของเครือข่ายการสูญเสียเฟรมเป็นกลไกการตอบสนองที่ดี หลังจากเข้ารหัสวิดีโอแล้วจะมีคีย์เฟรมและไม่ใช่คีย์เฟรม คีย์เฟรมเป็นรูปภาพที่สมบูรณ์และไม่ใช่คีย์เฟรมจะอธิบายการเปลี่ยนแปลงที่สัมพันธ์กันของรูปภาพ
กลยุทธ์การวางกรอบสามารถกำหนดได้ด้วยตัวมันเอง สิ่งหนึ่งที่ควรทราบคือ: หากคุณต้องการวางเฟรม P (เฟรมที่ไม่ใช่คีย์) คุณต้องวางเฟรมที่ไม่ใช่คีย์ทั้งหมดระหว่างคีย์เฟรมทั้งสองมิฉะนั้นจะเกิดภาพโมเสค การออกแบบกลยุทธ์การสูญเสียเฟรมจะแตกต่างกันไปขึ้นอยู่กับความต้องการและคุณสามารถออกแบบได้ด้วยตัวเอง
4. อัตราการลดรหัส
ใน Android หากใช้การเข้ารหัสแบบยากในการเข้ารหัสในสภาพแวดล้อมเครือข่ายที่ไม่ดีเราสามารถเปลี่ยนอัตราบิตของการเข้ารหัสแบบยากแบบเรียลไทม์เพื่อให้การถ่ายทอดสดราบรื่นขึ้น เมื่อตรวจพบว่าสภาพแวดล้อมเครือข่ายไม่ดีเรายังสามารถลดอัตราบิตของวิดีโอและเสียงในขณะที่วางเฟรมได้ เมื่อ Android sdk เวอร์ชันมากกว่าหรือเท่ากับ 19 คุณสามารถส่งผ่านพารามิเตอร์ไปยัง MediaCodec เพื่อเปลี่ยนอัตราบิตของข้อมูลจากตัวเข้ารหัสแบบฮาร์ดโค้ด
บิตเรตของบันเดิล = Bundle ใหม่ (); bitrate.putInt (MediaCodec.PARAMETER_KEY_VIDEO_BITRATE, bps * 1024);
mMediaCodec.setParameters (บิตเรต);
8. ส่ง
หลังจากการประมวลผลต่างๆแล้วข้อมูลจะต้องถูกส่งออกไปในที่สุดขั้นตอนนี้ค่อนข้างง่าย ไม่ว่าจะเป็น HTTP-FLV หรือ RTMP เราใช้ TCP เพื่อสร้างการเชื่อมต่อ ก่อนถ่ายทอดสดคุณต้องเชื่อมต่อกับเซิร์ฟเวอร์ผ่าน Socket เพื่อตรวจสอบว่าคุณสามารถเชื่อมต่อกับเซิร์ฟเวอร์ได้หรือไม่ หลังจากการเชื่อมต่อใช้ Socket นี้เพื่อส่งข้อมูลไปยังเซิร์ฟเวอร์และปิด Socket หลังจากที่ส่งข้อมูล
|
ป้อนอีเมลเพื่อรับเซอร์ไพรส์
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> แอฟริคานส์
sq.fmuser.org -> แอลเบเนีย
ar.fmuser.org -> ภาษาอาหรับ
hy.fmuser.org -> อาร์เมเนีย
az.fmuser.org -> อาเซอร์ไบจัน
eu.fmuser.org -> บาสก์
be.fmuser.org -> เบลารุส
bg.fmuser.org -> บัลแกเรีย
ca.fmuser.org -> คาตาลัน
zh-CN.fmuser.org -> ภาษาจีน (ประยุกต์)
zh-TW.fmuser.org -> ภาษาจีน (ดั้งเดิม)
hr.fmuser.org -> โครเอเชีย
cs.fmuser.org -> เช็ก
da.fmuser.org -> เดนมาร์ก
nl.fmuser.org -> ดัตช์
et.fmuser.org -> เอสโตเนีย
tl.fmuser.org -> ฟิลิปปินส์
fi.fmuser.org -> ฟินแลนด์
fr.fmuser.org -> ฝรั่งเศส
gl.fmuser.org -> กาลิเซีย
ka.fmuser.org -> จอร์เจีย
de.fmuser.org -> เยอรมัน
el.fmuser.org -> กรีก
ht.fmuser.org -> ชาวเฮติครีโอล
iw.fmuser.org -> ภาษาฮิบรู
hi.fmuser.org -> ภาษาฮินดี
hu.fmuser.org -> ฮังการี
is.fmuser.org -> ไอซ์แลนด์
id.fmuser.org -> ชาวอินโดนีเซีย
ga.fmuser.org -> ไอริช
it.fmuser.org -> อิตาเลี่ยน
ja.fmuser.org -> ภาษาญี่ปุ่น
ko.fmuser.org -> ภาษาเกาหลี
lv.fmuser.org -> ลัตเวีย
lt.fmuser.org -> ลิทัวเนีย
mk.fmuser.org -> มาซิโดเนีย
ms.fmuser.org -> มาเลย์
mt.fmuser.org -> มอลตา
no.fmuser.org -> นอร์เวย์
fa.fmuser.org -> เปอร์เซีย
pl.fmuser.org -> โปแลนด์
pt.fmuser.org -> โปรตุเกส
ro.fmuser.org -> โรมาเนีย
ru.fmuser.org -> รัสเซีย
sr.fmuser.org -> เซอร์เบีย
sk.fmuser.org -> สโลวัก
sl.fmuser.org -> สโลวีเนีย
es.fmuser.org -> สเปน
sw.fmuser.org -> ภาษาสวาฮิลี
sv.fmuser.org -> สวีเดน
th.fmuser.org -> ไทย
tr.fmuser.org -> ตุรกี
uk.fmuser.org -> ยูเครน
ur.fmuser.org -> ภาษาอูรดู
vi.fmuser.org -> เวียดนาม
cy.fmuser.org -> เวลส์
yi.fmuser.org -> ยิดดิช
FMUSER Wirless ส่งวิดีโอและเสียงได้ง่ายขึ้น!
ติดต่อ
ที่ตั้ง:
เลขที่ 305 อาคาร HuiLan เลขที่ 273 Huanpu Road Guangzhou China 510620
หมวดหมู่
จดหมายข่าว