ชีวประวัติ ลักษณะเฉพาะ การวิเคราะห์

โปรโตคอล rtmp พอร์ต 1935 การออกอากาศออนไลน์ผ่าน Nginx-RTMP: สูตรสำเร็จรูปหลายสูตร

การสตรีมวิดีโอสดเป็นเรื่องใหญ่จริงๆ อะไรจะง่ายไปกว่าการเรียกใช้แอปสตรีมมิงแบบสดบนสมาร์ทโฟนของคุณทันที มันจะออกอากาศคุณโดยตรงหรือเหตุการณ์ที่เกิดขึ้นรอบตัวคุณ… และในขณะที่คุณกำลังสตรีมวิดีโอ เพื่อนของคุณกำลังดูจากอุปกรณ์มือถือของพวกเขา และสิ่งที่คุณต้องทำคือกล้องและไมโครโฟนในตัวบนสมาร์ทโฟนของคุณ… เรื่องนี้สนุกไหม

สตรีมมิงแบบสดได้นำเสนอรูปแบบที่แตกต่างกันสำหรับผู้ใช้ในการเชื่อมต่อกับเพื่อนๆ และเพื่อให้แบรนด์ต่างๆ มีส่วนร่วมและเข้าถึงลูกค้าของตน

แต่ธุรกิจหรือบริษัทสตาร์ทอัพของคุณสามารถใช้งานสตรีมมิงแบบสดสำหรับ Android ได้อย่างง่ายดายโดยไม่ต้องทุ่มเททรัพยากรมากมายและเวลาของนักพัฒนาซอฟต์แวร์ให้ทำได้อย่างไร เทคโนโลยีใดที่อยู่เบื้องหลังการถ่ายทอดสดและทำให้เป็นจริง?

มาเจาะลึกในหัวข้อเพื่อค้นหาคำตอบที่ครอบคลุมสำหรับคำถามเหล่านี้ และเรียนรู้เพิ่มเติมเกี่ยวกับโซลูชันที่พร้อมใช้งานที่อำนวยความสะดวกและเร่งกระบวนการในการเพิ่มคุณสมบัติการสตรีมวิดีโอสดในแอปของคุณ

อะไรคือคุณสมบัติของการถ่ายทอดสด

ต่างจากรูปแบบของวิดีโอออนดีมานด์ที่สันนิษฐานว่าผู้ใช้สามารถเลือกและรับชมวิดีโอได้ตลอดเวลา วิดีโอถ่ายทอดสดจะเชื่อมโยงกับช่วงเวลาเฉพาะเจาะจงและจะแสดงในขณะที่กำลังบันทึก

และนี่คือลักษณะของกระบวนการสตรีมมิงแบบสด ทั้งวิดีโอและเสียงถูกถ่ายโอนผ่านข้อความที่เครื่องเล่นวิดีโอ และการแลกเปลี่ยนเซิร์ฟเวอร์สื่อ เครื่องเล่นวิดีโอเชื่อมต่อกับเซิร์ฟเวอร์สื่อก่อน เซิร์ฟเวอร์โอนส่วนหนึ่งของวิดีโอไปยังเครื่องเล่น ส่วนย่อยของวิดีโอนี้สอดคล้องกับเวลาเล่นปัจจุบัน บัฟเฟอร์หลายวินาทีช่วยให้เล่นวิดีโอได้โดยไม่ชักช้าหรือหยุดชะงัก กระบวนการนี้จะเกิดขึ้นซ้ำๆ ตลอดเวลาที่ออกอากาศทางเว็บ

แต่การสตรีมสดไม่เคยถ่ายโอนไฟล์มีเดียโดยรวม (ซึ่งจะช่วยประหยัดแบนด์วิดท์) แต่จะเปิดใช้งานผ่านเซิร์ฟเวอร์สื่อที่รับผิดชอบในการถ่ายโอนและสตรีมวิดีโอ เสียง และข้อมูลดิจิทัล สตรีมมิงแบบสดให้การปกป้องไฟล์วิดีโอต้นทางเนื่องจากไม่สามารถคัดลอกไปยังคอมพิวเตอร์ของผู้ดูได้ ด้วยความช่วยเหลือของซอฟต์แวร์เพิ่มเติม การสตรีมสดยังรองรับการแชทสดและการถาม & ตอบ

ไม่มีรูปแบบเดียวที่มีอยู่ในการส่งข้อมูลสื่อ คุณสามารถเลือกรูปแบบที่เหมาะสมกับความต้องการด้านเทคนิคของคุณได้ดีที่สุด

มีเทคโนโลยีการสตรีมวิดีโอใดบ้าง

มีหลายวิธีในการเปิดใช้งานการถ่ายทอดสดในแอปของคุณ เราจะสรุปภาพรวมโดยย่อเกี่ยวกับเทคโนโลยีที่มีอยู่ด้านล่าง ด้วยวิธีนี้ คุณจะสามารถแยกแยะคุณลักษณะหลักและประเภทของเนื้อหาที่พวกเขาสร้างขึ้นได้ดีที่สุด:

  • โปรโตคอล RTMP

Real-Time Messaging Protocol (หรือเพียงแค่ RTMP) ได้รับการพัฒนาสำหรับการถ่ายโอนวิดีโอและสตรีมเสียงที่มีประสิทธิภาพสูง และข้อความข้อมูลแบบเรียลไทม์ผ่านเว็บ เปิดใช้งานการสตรีมแบบเรียลไทม์โดยสร้างการเชื่อมต่อสองทางระหว่างเซิร์ฟเวอร์ Flash และ Flash Player

Adobe Flash Player เป็นไคลเอนต์ RTMP ทั่วไปที่รองรับการเล่นวิดีโอและเสียง ปัจจุบันมีให้บริการเป็นข้อกำหนดโอเพนซอร์สสำหรับการพัฒนาผลิตภัณฑ์และเทคโนโลยีที่ส่งสตรีมวิดีโอในรูปแบบ AMF, SWF, FLV และ F4V (เข้ากันได้กับรูปแบบ Adobe Flash Player) และเสียงใน AAC และ MP3

  • โปรโตคอลการสตรีมแบบ HTTP (HLS และ HDS)

รูปแบบ HLS อิงตาม MPEG2-TS และเกี่ยวข้องกับการสตรีมไปยังอุปกรณ์ iOS มันไม่ได้เป็นส่วนหนึ่งของ HTML5 HLS รวมสตรีมหลายรายการเข้ากับข้อมูลเมตาดาต้าและสลับไปมาระหว่างข้อมูลสื่อต่างๆ ได้อย่างง่ายดาย

HDS ใช้รูปแบบของ Adobe สำหรับวิดีโอและส่งไฟล์ MPEG-4 บางส่วน รูปแบบ MPEG ช่วยให้จัดเก็บข้อมูลเมตาและสตรีมเสียงและวิดีโอในตำแหน่งต่างๆ HTTP Dynamic Streaming เป็นเทคโนโลยีที่สะดวกสำหรับไลบรารีสื่อขนาดใหญ่ ช่วยลดแบนด์วิดท์ ประหยัดแบตเตอรี่ และมอบประสบการณ์การใช้งานที่ดีขึ้นเมื่อเทียบกับ HLS

  • โปรโตคอลการสตรีม Silverlight

รูปแบบการสตรีมวิดีโอนี้ใช้สำหรับแอปอินเทอร์เน็ตที่หลากหลาย เช่น Adobe Flash และสำหรับการเรียกใช้ภาพยนตร์ แม้ว่า Microsoft Silverlight จะไม่ทำงานในเบราว์เซอร์ Chrome อีกต่อไป แต่ก็มีให้ใน Internet Explorer และ Mozilla Firefox

  • MPEG-DASH

MPEG-DASH ให้การสตรีมวิดีโอแบบสดและแบบออนดีมานด์คุณภาพสูงสำหรับสื่อที่มาจากเซิร์ฟเวอร์ HTTP รูปแบบนี้อนุญาตให้เพิ่มโฆษณาระหว่างส่วนวิดีโอสำหรับการสตรีมทั้งสองประเภท เนื้อหาสื่อถูกเข้ารหัสเพียงครั้งเดียวและส่งไปยังคอมพิวเตอร์ไคลเอนต์ด้วยความช่วยเหลือของ DRM (การจัดการสิทธิ์ดิจิทัล) ที่แตกต่างกัน

  • โปรเกรสซีฟดาวน์โหลดสตรีมมิ่ง

ด้วยการดาวน์โหลดแบบก้าวหน้า เนื้อหาสื่อจะถูกถ่ายโอนจากเซิร์ฟเวอร์ไปยังคอมพิวเตอร์ไคลเอนต์ผ่านโปรโตคอล HTTP ไม่ต้องใช้เซิร์ฟเวอร์สตรีมมิ่งสำหรับการโฮสต์ไฟล์หรือดาวน์โหลดไฟล์สื่อเพื่อดู การดาวน์โหลดแบบโปรเกรสซีฟช่วยให้สามารถเล่นวิดีโอได้ก่อนที่จะดาวน์โหลดวิดีโอทั้งหมด

การเพิ่มขึ้นของวิดีโอ 4K ความคาดหวังของผู้ใช้ที่สูงในเรื่องมาตรฐานคุณภาพและประสบการณ์ที่ราบรื่น การพัฒนาแพลตฟอร์มที่มีประสิทธิภาพใหม่และการเชื่อมต่ออินเทอร์เน็ตที่เร็วขึ้นทำให้ความต้องการรูปแบบการสตรีมวิดีโอเข้มงวดขึ้น โดยไม่คำนึงถึงเทคโนโลยีที่หลากหลาย เราจะเน้นที่ RTMP เป็นหนึ่งในโปรโตคอลการสตรีมที่แพร่หลายและเป็นที่ชื่นชอบมากที่สุดในหมู่นักพัฒนา

ดังนั้นโปรโตคอล RTMP คืออะไรและเหตุใดจึงดี

สร้างโดย Macromedia (ปัจจุบันคือ Adobe) Real-Time Messaging Protocol ช่วยให้มั่นใจได้ว่าสตรีมมิงแบบปรับบิตเรต (ABS) เมื่อแบนด์วิดท์เปลี่ยนไป คุณภาพของวิดีโอจะปรับแต่งโดยอัตโนมัติ RTMP ขึ้นอยู่กับ Transmission Control Protocol (TCP) ซึ่งจัดลำดับความสำคัญของการบำรุงรักษาการเชื่อมต่อที่เสถียรและเวลาแฝงต่ำ เกี่ยวกับประเภทของเนื้อหา RTMP อนุญาตให้ส่งข้อมูลสื่อและข้อมูลข้อความทั้งที่บันทึกไว้ล่วงหน้าและแบบสด

ยิ่งไปกว่านั้น RTMP สามารถใช้ได้ไม่เฉพาะกับการสตรีมบนมือถือเท่านั้น เซิร์ฟเวอร์ RTMP สามารถส่งข้อมูลสื่อทั้งไปยังเว็บแอปพลิเคชันเช่นเดียวกับอุปกรณ์มือถือ

มักได้รับการยกย่องว่ามีข้อดีดังต่อไปนี้:

  • เหมาะอย่างยิ่งสำหรับการสตรีมสด

ประโยชน์สูงสุดที่ RTMP มอบให้คือการเพิ่มประสิทธิภาพการส่งข้อมูลวิดีโอและเสียง สำหรับการสตรีมจะใช้พอร์ต 1935 แบบเอกสิทธิ์เฉพาะบุคคลซึ่งเหมาะสำหรับการส่งเนื้อหาที่มีเวลาแฝงต่ำซึ่งมีความสำคัญต่อการสตรีมสดและไม่ต้องมีการบัฟเฟอร์

  • มันเป็นเทคโนโลยีที่เป็นผู้ใหญ่

RTMP ถูกใช้สำหรับการสตรีมสดมานานกว่า 10 ปี สำหรับนักพัฒนา การตั้งค่า RTMP Server เป็นเรื่องง่าย สำหรับผู้ใช้ การสตรีมวิดีโอจะเปิดใช้งานในรูปแบบต่างๆ พร้อมกัน คุณลักษณะด้านความปลอดภัยเช่นการตรวจสอบผู้เล่นก็ถูกนำมาใช้เช่นกัน

  • คุณสามารถรับชมส่วนใดก็ได้ของวิดีโอที่กำลังออกอากาศ

เซิร์ฟเวอร์ RTMP ทั้งหมดอนุญาตให้บันทึกสตรีมสื่อที่เข้ามาและให้ความสามารถในการแสดงวิดีโอตั้งแต่เริ่มต้น ผู้ใช้สามารถข้ามบางส่วนของวิดีโอจนถึงช่วงเวลาปัจจุบันในการออกอากาศ ฟีเจอร์นี้มีประโยชน์อย่างยิ่งสำหรับวิดีโอขนาดยาว (มากกว่า 10 นาที) ซึ่งช่วยให้สลับไปยังส่วนต่างๆ ของวิดีโอได้อย่างง่ายดาย

  • เป็นโปรโตคอลการสตรีมแบบเรียลไทม์ที่ได้รับความนิยมมากที่สุด

RTMP เป็นโปรโตคอลที่ไม่ขึ้นกับแพลตฟอร์มซึ่งไม่ต้องการการพึ่งพาฮาร์ดแวร์และเข้ากันได้กับ Windows, Mac, Linux, Android, iOS และ Windows mobile นอกจากนี้ยังใช้กันอย่างแพร่หลายในอุปกรณ์เล่นเกม เช่น PlayStation, Xbox One และ PS Vita

RTMP ทำงานอย่างไร

พูดง่ายๆ ก็คือ การสตรีม RTMP ประกอบด้วยสามเอนทิตีต่อไปนี้:

  • ไคลเอนต์ที่สร้างสตรีมสื่อและออกอากาศโดยโปรโตคอล RTMP ไปยังเซิร์ฟเวอร์ ในฐานะ "ผู้เผยแพร่โฆษณา" ไคลเอ็นต์ คุณสามารถใช้แอปได้มากมายบนแพลตฟอร์มต่างๆ เช่น โปรแกรมเล่นที่ใช้ FFMPEG, VLC Player, ไคลเอ็นต์ YouTube และโซลูชันที่ใช้ AVLib
  • เซิร์ฟเวอร์ที่จัดการกระแสข้อมูลขาเข้าและดำเนินการประมวลผลและบันทึกตามความจำเป็น เซิร์ฟเวอร์ยังให้การออกอากาศแก่ลูกค้ารายอื่น ในบรรดาเซิร์ฟเวอร์ ตัวเลือกที่ดีที่สุดคือ Wowza Media Server, Flussonic Media Server และ Simple RTMP Server
  • ผู้ดูเป็นตัวแทนของลูกค้าที่รับชมสตรีมที่เผยแพร่ได้ สำหรับการแสดงสตรีมสื่อดังกล่าว คุณสามารถใช้เครื่องเล่นใดก็ได้ที่รองรับโปรโตคอล RTMP ข่าวดีก็คือผู้เล่นที่ใช้อยู่ในปัจจุบันเกือบทั้งหมดสำหรับแพลตฟอร์มที่มีอยู่ทั้งหมดรองรับสตรีม RTMP คุณสามารถเลือก Flash Player, VLC หรือ Media Player Classic

แอปที่เน้นการใช้ทรัพยากรและซับซ้อนที่สุดคือแอปผู้แพร่ภาพกระจายเสียง 'ขั้นตอนการออกอากาศ' รวมถึงการประมวลผลสื่อ การเข้ารหัส และการสตรีมเพิ่มเติมผ่านโปรโตคอล RTMP ไปยังเซิร์ฟเวอร์ ขึ้นอยู่กับแพลตฟอร์มและฮาร์ดแวร์อย่างมาก และต้องใช้ทรัพยากรสนับสนุนจำนวนมาก

ในการส่งข้อมูลให้มากที่สุดด้วยโปรโตคอล RTMP วิดีโอและเสียงจะถูกแบ่งออกเป็นส่วนย่อยที่มีขนาดต่างกัน ขนาดเริ่มต้นคือ 64 ไบต์สำหรับเสียงและ 128 ไบต์สำหรับวิดีโอ ขนาดกลุ่มวิดีโอถูกกำหนดโดยรูปแบบการโต้ตอบระหว่างผู้ใช้และเซิร์ฟเวอร์

จากนั้นเศษของสื่อจะถูกแทรกและมัลติเพล็กซ์ในการเชื่อมต่อเดียว โดยสัมพันธ์กับแบนด์วิดท์และเวลาแฝงของช่อง สตรีมที่มาจากผู้แพร่ภาพกระจายเสียงไปยังเซิร์ฟเวอร์ประกอบด้วยบล็อกข้อมูลขนาดเล็กที่มีข้อมูลประเภทต่างๆ (เช่น วิดีโอ บริการเสียง เป็นต้น) การสตรีม RTMP สามารถถ่ายโอนบล็อคข้อมูลต่างๆ ได้พร้อมกัน ดังนั้นจึงเป็นการห่อหุ้มทั้งวิดีโอและเสียง และเปิดใช้งานการเรียกใช้ขั้นตอนระยะไกล

เมื่อไคลเอนต์เปิดสตรีมในโปรแกรมเล่น RTMP คำขอจะถูกส่งไปยังเซิร์ฟเวอร์ RTMP มีการเริ่มต้นเซสชันและการแลกเปลี่ยนข้อมูลบริการเกิดขึ้น เมื่อโปรแกรมเล่น RTMP ของไคลเอ็นต์ได้รับส่วนที่จำเป็นของแพ็คเกจข้อมูลบริการเกี่ยวกับสตรีมที่กำลังดำเนินอยู่ โปรแกรมจะเริ่มถอดรหัส บัฟเฟอร์ และแสดงสตรีมสื่อ RTMP

ด้วย RTMP สื่อไม่จำเป็นต้องจัดเก็บในที่เก็บข้อมูลชั่วคราว มันยังคงสตรีมโดยตรงระหว่างไคลเอนต์และเซิร์ฟเวอร์ หากความจุแบนด์วิดท์อนุญาต สตรีมเดียวกันจะถูกส่งไปยังไคลเอนต์จำนวนมากที่ส่งคำขอ ความจุในการสตรีมจะดีขึ้นหากมีเซิร์ฟเวอร์สื่อหลายตัวติดตั้งอยู่ในเครือข่าย กระบวนการสตรีมจะดำเนินต่อไปจนกว่าเซิร์ฟเวอร์หรือผู้เล่นจะสิ้นสุดเซสชัน

คุณจะใช้ RTMP เพื่อสตรีมวิดีโอในแอป Android ได้อย่างไร

คุณสามารถรับชมสตรีม RTMP บนแพลตฟอร์มใดก็ได้ด้วยความช่วยเหลือของผู้เล่นใดๆ ที่รองรับโปรโตคอล RTMP สำหรับ Android ผู้เล่นบุคคลที่สามที่ได้รับความนิยมมากที่สุดคือ MX, VLC และ BS Players รวมถึงเครื่องเล่นอื่นๆ ที่รองรับ FFMPEG สำหรับการดู RTMP จากภายในแอปพลิเคชัน นักพัฒนาจำเป็นต้องรวมไลบรารีของผู้เล่นที่สามารถอ่านสตรีม RTMP ได้ เหล่านี้คือ ijkPlayer และ VLC SDK

ทีมงาน Onix ได้ให้การสนับสนุนทางเทคโนโลยีเพื่อค้นหาโซลูชันที่ง่ายและสวยงามสำหรับการสตรีมวิดีโอ และได้สร้าง AVLib ซึ่งเป็นไลบรารีภายนอกของ Onix สำหรับการสตรีม Android RTMP

มาดูกันว่ามันทำงานอย่างไรกับการถ่ายทอดสดสำหรับแอพ Android และที่มาของแนวคิด

AVLib แก้ปัญหาพื้นฐานสำหรับการสตรีม Android RTMP ได้อย่างไร

https://rtmplib-android.com/

ทีมนักพัฒนา Android ของเรามีแนวคิดเกี่ยวกับ AVLib เกือบจะโดยบังเอิญ แต่ด้วยผลลัพธ์และผลลัพธ์ที่ยอดเยี่ยม ขณะทำงานเพื่อเพิ่มคุณสมบัติในการออกอากาศวิดีโอและเสียงสำหรับอุปกรณ์ Android ไปยังเซิร์ฟเวอร์ RTMP พวกเขาพบปัญหาร้ายแรง ความต้องการของลูกค้าระบุว่าแอปควรจะสามารถสตรีมข้อมูลวิดีโอและเสียงที่ความจุสูงสุดผ่านกล้อง Android นอกจากนี้ยังจำเป็นต้องเปิดใช้งานการรองรับ Android 4.0 เป็นเวอร์ชันขั้นต่ำ สำหรับผู้ใช้ที่มีอุปกรณ์มือถือรุ่นเก่าสามารถใช้งานได้ และมีการตั้งค่าการใช้งานที่สะดวกสบายจำนวนหนึ่งสำหรับผู้ใช้

ทีม Onix ได้ทำการวิจัยเชิงลึกและเปรียบเทียบไลบรารีสตรีมมิ่งทั้งเชิงพาณิชย์และโอเพ่นซอร์สที่มีอยู่ แต่กลับไม่มีผลลัพธ์ที่น่าพอใจ ปรากฎว่าไม่มีโซลูชันที่คล้ายกันในตลาดที่สามารถตอบสนองความต้องการด้านเทคนิคของเราได้อย่างครบถ้วน สมาชิกในทีมตัดสินใจสร้างไลบรารีภายนอกของตนเองอย่างรวดเร็วซึ่งสามารถรองรับการสตรีม RTMP สำหรับ Android และเนื่องจากมีการใช้งานอุปกรณ์ Android และเวอร์ชันระบบปฏิบัติการจำนวนมาก ไลบรารีนี้จึงถูกสร้างขึ้นเพื่อรองรับความต้องการสตรีมมิงของผู้ใช้ Android ปัจจุบันทั้งหมด

แต่มันไม่สมเหตุสมผลเลยที่จะใช้เวลาในการสร้างเครื่องมือแบบใช้ครั้งเดียวที่แก้ไขงานเฉพาะอย่างเฉพาะเจาะจงตามขอบเขตที่กำหนด เกิดอะไรขึ้นถ้าสถานการณ์ที่คล้ายกันซ้ำแล้วซ้ำอีก? ทำไมไม่ลองใช้สิ่งที่ดีที่สุดของเทคโนโลยีที่มีให้และสร้างผลิตภัณฑ์ซอฟต์แวร์ที่ได้รับการทดสอบอย่างดีล่ะ

เราตั้งใจที่จะพัฒนาโซลูชันที่หรูหรา ยืดหยุ่น และเรียบง่าย ดังนั้นทีม Android บุคคลที่สามรายอื่นหรือนักพัฒนาที่กำลังมองหาไลบรารี RTMP สามารถรวมเข้ากับแอปได้อย่างง่ายดายโดยไม่ต้องสร้างวงล้อใหม่ และเราทำได้! AVLib รวมคุณสมบัติทั้งหมดที่เราคาดหวังไว้และแก้ปัญหางานพื้นฐานของการออกอากาศวิดีโออย่างครอบคลุม

AVLib ได้รับการพัฒนาอย่างไรและเหตุใดจึงเป็นไลบรารี RTMP ที่เชื่อถือได้

AVLib เป็นไลบรารี RTMP ที่เราภาคภูมิใจอย่างแท้จริง เป็นผลิตภัณฑ์ซอฟต์แวร์ที่แก้ไขความต้องการของลูกค้าสำหรับการสตรีมสดในทุกระดับความซับซ้อน เป็นเครื่องมือที่พร้อมใช้งานสำหรับ Android Studio ที่รวมเข้ากับแอปบนอุปกรณ์เคลื่อนที่ทันที

AVLib แสดงถึงโซลูชันที่สะดวกและเสถียรซึ่งอิงตามหลักการดังต่อไปนี้:

  • การรวมเข้ากับแอพอย่างง่าย

สำหรับนักพัฒนา Android จะใช้เวลาประมาณหนึ่งชั่วโมงถึง กรอกกระบวนการรวม AVLib และเพิ่มคุณสมบัติการสตรีมสดลงในแอพ

  • ความจุสูงสุด

ในการปรับใช้ไลบรารี RTMP และเสริมศักยภาพด้วยศักยภาพความจุสูง ทีมของเราได้เลือกภาษาการเขียนโปรแกรม C ทุกฟังก์ชันเดียวที่รวมอยู่ใน AVLib เริ่มจากตรรกะของสายพานลำเลียง การเข้ารหัส ทำงานกับ RTMP และจนถึงการประมวลผล สร้างขึ้นโดยใช้ C บริสุทธิ์

  • ไลบรารีที่สร้างขึ้นเองของ UI

AVLib มีความยืดหยุ่นและสามารถปรับให้เข้ากับความต้องการของลูกค้าได้อย่างง่ายดายในการออกแบบ UI (เช่น ปุ่ม ข้อความ) และการตั้งค่าวิดีโอ (เช่น ความละเอียดของเฟรม เสียง คุณภาพโคเดก บิตเรต)

  • รองรับอุปกรณ์ Android ทุกประเภทที่มีอยู่

ไลบรารี RTMP นี้มาเป็นไฟล์ .aar ไฟล์เดียวที่ไม่มีการขึ้นต่อกัน AVLib ได้รับการทดสอบเพื่อให้แน่ใจว่าเข้ากันได้กับอุปกรณ์ Android ต่างๆ และรองรับ Android OS เวอร์ชัน 4.0 ขึ้นไป

คุณสามารถดูรายละเอียดเพิ่มเติมเกี่ยวกับคุณสมบัติของ AVLib

ขั้นตอนการพัฒนา AVLib เต็มไปด้วยความท้าทายและต้องใช้ความคิดและความพยายามจากทีม Android ของเรา

  • สตรีมจากกล้องแอ็คชั่น? ใช่!

หนึ่งในคุณสมบัติพิเศษของ AVLib คือความสามารถในการสตรีมวิดีโอและเสียงจากกล้องแอคชั่นได้ทันที ในการเปิดใช้งานคุณลักษณะนี้ คุณต้องทำงานพร้อมกันกับอินเทอร์เฟซเครือข่ายสองอินเทอร์เฟซที่ด้านข้างของโมดูลใน C งานเสร็จสมบูรณ์ แต่ต้องการการวิจัยอย่างละเอียดเกี่ยวกับซอร์สโค้ดของ Android OS และการดีบักอย่างต่อเนื่อง

  • สร้างวงจรชีวิตการออกอากาศ

ความท้าทายที่สำคัญอีกประการหนึ่งที่เราพบในระหว่างขั้นตอนการพัฒนาคือการทำให้กล้องทำงานได้อย่างราบรื่นและประมวลผลวงจรชีวิตบนอุปกรณ์ต่างๆ ซึ่งค่อนข้างใช้เวลานานและต้องใช้การตรวจสอบอย่างละเอียดถี่ถ้วน

เริ่มแรก RTMP (Real Time Messaging Protocol) ถูกสร้างขึ้นโดย Adobe Systems สำหรับการส่งสัญญาณเสียงและวิดีโอสตรีม ข้อความ และข้อมูลอื่น ๆ ทั่วทั้งเว็บ หลักการสำคัญของการทำงานอยู่ที่การเริ่มต้นปฏิสัมพันธ์ระหว่างเซิร์ฟเวอร์และ Flash Player ของผู้ใช้ RTMP อิงตาม TCP ซึ่งหมายความว่าลำดับความสำคัญสูงอยู่ในการเชื่อมต่อที่เสถียรและให้การโต้ตอบที่มีเวลาแฝงต่ำ ในการถ่ายทอดสตรีมที่ราบรื่นและส่งข้อมูลให้มากที่สุด เซิร์ฟเวอร์ RTMP จะแบ่งข้อมูลออกเป็นส่วนย่อย จากนั้น ขนาดของแฟรกเมนต์จะถูกกำหนดเนื่องจากรูปแบบของการโต้ตอบระหว่างผู้ใช้และเซิร์ฟเวอร์

สิ่งที่น่าสนใจกว่าเกี่ยวกับ RTMP คือมันเกี่ยวข้องกับแชนเนลเสมือนต่างๆ ซึ่งส่งแพ็กเก็ตข้อมูลระหว่างเซสชันสื่อหนึ่งเซสชัน แชนเนลเหล่านี้อาจรวมถึง: แชนเนลสำหรับคำขอ RPC และผลลัพธ์ แชนเนลสำหรับข้อความควบคุม แชนเนลสำหรับการสตรีมเสียงและวิดีโอ นอกจากนี้ยังสามารถทำงานพร้อมกันได้โดยไม่ก่อให้เกิดปัญหาทางเทคนิคซึ่งกันและกัน

RTMP กับ RTSP

ในแง่ของการส่งข้อมูล มีโปรโตคอลที่รู้จักกันดีอีกตัวหนึ่งที่เรียกว่า RTSP มาดูความแตกต่างระหว่างโปรโตคอล RTMP และ RTSP

วัตถุประสงค์หลักของ RTSP (Real Time Streaming Protocol) คือการรักษากิจกรรมของเซิร์ฟเวอร์การสตรีม นอกจากนี้ โปรโตคอลนี้ยังตั้งค่าการโต้ตอบระหว่างไคลเอนต์และเซิร์ฟเวอร์ RTSP ช่วยให้ผู้ใช้ปลายทางควบคุมเซสชันสื่อโดยใช้คำสั่งง่ายๆ เช่น เล่น หยุดชั่วคราว และหยุด ช่วยให้ลูกค้าดูวิดีโอจากส่วนต่างๆ โดยไม่ต้องรอให้ดาวน์โหลดเสร็จ

ในทางกลับกัน RTMP ยังคงรักษาคุณสมบัติดังกล่าวไว้ได้ อย่างไรก็ตาม เซิร์ฟเวอร์ RTMP โดยใช้โปรโตคอล RTMP สามารถตรวจสอบทุกการกระทำที่ลูกค้าทำโดยเริ่มตั้งแต่เวลาที่เขาหรือเธอเริ่มเซสชันจนกระทั่งปิดเซสชัน ในลักษณะดังกล่าว ทำให้รายงานภายใน RTMP แม่นยำยิ่งขึ้น และให้ภาพที่สมบูรณ์ของกิจกรรมของผู้ใช้ระหว่างเซสชันสื่อเฉพาะ ในทำนองเดียวกัน RTMP RTSP ก็สามารถสตรีมสดได้เช่นกัน อย่างไรก็ตาม การส่งข้อมูลแบบสตรีมไม่ใช่งานหลักสำหรับ RTSP ด้วยเหตุนี้ จึงจำเป็นต้องมีโปรโตคอลเพิ่มเติมเพื่อจุดประสงค์นี้

มันทำงานอย่างไร

หลักการทำงานของ RTMP นั้นง่าย ในการเริ่มสตรีม RTMP ก็เพียงพอแล้วที่จะสร้างการโต้ตอบระหว่างเซิร์ฟเวอร์ RTMP และโปรแกรมเล่น RTMP ของไคลเอ็นต์ เมื่อตั้งค่าการสื่อสารนี้แล้ว เซิร์ฟเวอร์จะเริ่มส่งสื่อในรูปแบบไบต์คงที่ กระบวนการนี้จะดำเนินต่อไปจนกว่าเซิร์ฟเวอร์หรือผู้เล่นจะเสร็จสิ้นเซสชั่น

ข้อดีคือโปรโตคอล RTMP มีความยืดหยุ่นสูงและส่งข้อมูลเสียง วิดีโอ และข้อความในรูปแบบต่างๆ อยู่ในความสามารถของมัน ตัวอย่างเช่น โปรโตคอล RTMP เปิดใช้งานการสตรีมวิดีโอในรูปแบบ MP4 และ FLV การสตรีมเสียง ในรูปแบบ MP3 และ AAC ยิ่งไปกว่านั้น ด้วยโปรโตคอลนี้ เซิร์ฟเวอร์ RTMP จะส่งสื่อไปยังเว็บแอปพลิเคชันเช่นเดียวกับอุปกรณ์มือถือ เพื่อจุดประสงค์นี้ ผู้ใช้จำเป็นต้องติดตั้ง Flash Player ในเบราว์เซอร์หรืออุปกรณ์มือถือตามลำดับ จากนั้น ไฟล์ swf ซึ่งมีข้อมูลสื่อทั้งหมดของสตรีม จะถูกเล่นโดย Flash Player อย่างไรก็ตาม ข้อดีอย่างหนึ่งของโปรโตคอล RTMP คือสามารถนำไปใช้กับการสตรีมแบบสดและแบบออนดีมานด์ได้ มาดูกระบวนการสตรีมแต่ละอย่างกัน

ถ่ายทอดสด

การสตรีมวิดีโอสดเป็นคุณสมบัติหลักของโปรโตคอล RTMP ด้วยความช่วยเหลือ คุณสามารถแพร่ภาพวิดีโอของคุณแบบสดระหว่างกระบวนการบันทึก โดยหลักแล้ว การถ่ายทอดสดจะใช้สำหรับการแข่งขันกีฬา การแสดง คอนเสิร์ต ฯลฯ ในกรณีนี้ โปรโตคอล RTMP ไม่สามารถถูกแทนที่ได้อย่างแท้จริง มีความหน่วงแฝงต่ำจากเรียลไทม์ในการสตรีม เมื่อเทียบกับโปรโตคอล HTTP และความล่าช้ามากกว่าสิบวินาที ซึ่งไม่เหมาะสำหรับการสตรีมมิงแบบสดแบบมืออาชีพ

มาทบทวนอีกตัวอย่างที่ชัดเจนของฟังก์ชันพิเศษ RTMP สำหรับการสตรีมสด ตัวอย่างเช่น กล้อง IP ยอดนิยมที่รองรับโปรโตคอล RTMP มีลำโพงในตัว ดังนั้นคุณจึงไม่เพียงแต่ดูวิดีโอสดเท่านั้น แต่ยังมีส่วนร่วมในกระบวนการออกอากาศและแสดงความคิดเห็นของคุณต่อสตรีมเมอร์ด้วย

สตรีมมิ่งตามความต้องการ

การสตรีมแบบออนดีมานด์ช่วยให้ผู้ใช้สามารถเลือกเวลาที่จะรับชมเนื้อหาสื่อที่เลือกได้ ซึ่งสะดวกกว่าสำหรับพวกเขามากกว่าที่จะสังเกตเนื้อหานี้ในขณะที่ออกอากาศ ตามกฎแล้ว วิดีโอออนดีมานด์ (VOD) นั้นใช้ด้วยเหตุผลหลายประการ: เนื่องจากเล่นได้อย่างราบรื่นแม้ในการเชื่อมต่ออินเทอร์เน็ตที่มีความเร็วต่ำ เมื่อจำนวนผู้ดูออนไลน์ไม่มากนัก เพื่อคุณภาพระดับ HD ด้วยโปรโตคอล RTMP แม้ VOD จะมีประสิทธิภาพมากกว่า ประการแรกมันให้การสนับสนุนมัลติคาสต์ หากคุณต้องการมีสตรีมเดียวภายในเครือข่ายที่ทำงานของคุณและมอบให้กับผู้ใช้หลายคน ด้วย RTMP คุณจะไม่ต้องสร้างการเชื่อมต่อแยกกันสำหรับผู้ใช้แต่ละราย โปรโตคอลอื่นๆ เช่น HTTP หรือ CDN ไม่มีคุณสมบัตินี้ นอกจากนี้ RTMP ยังให้ผู้ใช้เชื่อมต่อกับสตรีมวิดีโออีกครั้งในกรณีที่เกิดปัญหาในการเชื่อมต่อ ระหว่างที่มีปัญหาในการเชื่อมต่อ วิดีโอจะเล่นจากบัฟเฟอร์และเมื่อผู้ใช้เชื่อมต่อใหม่ บัฟเฟอร์จะเริ่มเติมและเพื่อหลีกเลี่ยงการหยุดสตรีมวิดีโอบ่อยครั้ง

การใช้งาน RTMP

เห็นได้ชัดว่าข้อมูลทั้งหมดนี้ทำให้คุณสงสัยว่าจะนำ RTMP ไปใช้อย่างไร นี่เป็นโปรโตคอลข้ามแพลตฟอร์มและทำงานบน Windows, Mac, Linux, Android, Windows Mobile, iOS คุณมีคอนโซลและสนุกกับการเล่นเกมหรือไม่? คุณสามารถใช้บริการ RTMP สำหรับอุปกรณ์เช่น Xbox One, PlayStation และ PS Vita ได้อย่างง่ายดาย

เนื่องจากความหลากหลายของแพลตฟอร์มที่เหมาะสมกับโปรโตคอล RTMP จึงมีตัวเลือกมากมายสำหรับการนำไปใช้ พวกเขาสามารถเปลี่ยนแปลงจากการใช้งานบรรทัดคำสั่งไปจนถึงการใช้งานโอเพ่นซอร์สที่มีคุณสมบัติครบถ้วน

การใช้งานบรรทัดคำสั่ง

เครื่องมือ RTMPDump ใช้สำหรับการใช้งานบรรทัดคำสั่ง เนื่องจากสามารถบันทึกสตรีม RTMP การถ่ายทอดสด และวิดีโอตามต้องการได้อย่างสมบูรณ์แบบ นอกจากนี้ RTMPDump เป็นเครื่องมือโอเพ่นซอร์สที่สามารถใช้กับ Linux, Android, Mac OS X และ Microsoft ยูทิลิตีนี้ได้รับความนิยมอย่างมากเนื่องจากมีขนาดเล็กและสามารถถอดรหัส RTMPE ซึ่งเข้ารหัส RTMP และ RTMPS ซึ่งเป็น RTMP ที่ปลอดภัย

แพ็คเกจ RTMPDump มีสามโปรแกรม: rtmpdump, rtmpsrv และ rtmpsuck แต่ละโปรแกรมเหล่านี้ทำหน้าที่เฉพาะ ตัวอย่างเช่น rtmpdump ใช้สำหรับสร้างการเชื่อมต่อกับเซิร์ฟเวอร์ RTMP และจับกระแสข้อมูลเอง rtmpsuck สามารถจับภาพสตรีมได้เช่นกัน หรือช่วยในการรวบรวมพารามิเตอร์หลักสำหรับ rtmpdump หน้าที่หลักของ rtmpsrv คือการติดตามการเชื่อมต่อและสตรีม

การใช้งานเต็มรูปแบบ

หากคุณสนใจในการใช้งานเต็มรูปแบบมากขึ้น คุณจะต้องใช้ซอฟต์แวร์สามชิ้นนี้: ตัวเข้ารหัสวิดีโอสด เซิร์ฟเวอร์สตรีมมีเดีย และแอปพลิเคชันไคลเอนต์วิดีโอ คุณไม่ทราบว่าจะติดตั้งตัวเข้ารหัสวิดีโอสดตัวใด? จากนั้น คุณสามารถเลือกระหว่าง Flash Media Live Encoder, FFmpeg, WireCast, Wowza Transcoder, Nimble Streamer Transcoder อย่างไรก็ตาม โปรดคำนึงว่าสิ่งที่ได้รับความนิยมมากที่สุดคือ Flash Media Live Encoder ซึ่งสามารถดาวน์โหลดได้ฟรีบนเว็บไซต์ Adobe

สำหรับแอปพลิเคชันไคลเอนต์วิดีโอ Adobe Flash Player เป็นตัวเลือกที่เหมาะสมที่สุด เป็นเครื่องเล่น RTMP ฟรีและทำงานเป็นปลั๊กอินจากเบราว์เซอร์หรือแม้แต่อุปกรณ์มือถือ Flash Player เหมาะสำหรับ Windows, OS X, Chrome OS และ Linux ตัวเลือกอื่นคือ Gnash และ VLC เครื่องเล่นสื่อ. ทั้งคู่เป็นเครื่องเล่นสื่อโอเพ่นซอร์ส Gnash มีโอกาสที่จะแทนที่ Flash Player ในการสตรีม RTMP บน Linux ในทางกลับกัน โปรแกรมเล่นสื่อ VLC ไม่เป็นสากล เนื่องจากสามารถรักษาสตรีม RTMP ได้เพียงบางส่วนเท่านั้น

เซิร์ฟเวอร์ RTMP เช่น Adobe Flash Media Server, Wowza Streaming Engine, Flussonic Media Server ได้รับการกล่าวอ้างว่าเป็นเซิร์ฟเวอร์ที่ดีมาก อย่างไรก็ตาม คุณสามารถติดตั้งเซิร์ฟเวอร์ RTMP ฟรี เช่น Nginx ด้วยโมดูล RTMP หรือ Red5 ซึ่งเป็นเซิร์ฟเวอร์โอเพ่นซอร์ส RTMP บน Java

วิธีจัดการกับปัญหาที่พบบ่อยที่สุดกับโปรโตคอล RTMP

โปรโตคอล RTMP แม้จะมีข้อดีที่ชัดเจน แต่ก็มีข้อเสียอยู่บ้าง เนื่องจากมีความแตกต่างจากโปรโตคอล HTTP มาก จึงไม่รองรับ HTML5 นอกจากนี้ โปรโตคอล RTMP ยังทำงานได้ไม่ดีบน iDevices และส่งผลต่อคุณภาพของการสตรีมวิดีโอ ในกรณีเช่นนี้ ควรใช้โปรโตคอล HLS กับอุปกรณ์ของ Apple หลักการทำงานของ HLS และ RTMP ค่อนข้างคล้ายกัน แต่ในกรณีของ HLS สตรีมจะถูกแบ่งออกเป็นชุดของไฟล์ที่ใช้ HTTP ขนาดเล็ก ในขั้นต้น โปรโตคอลนี้ได้รับการพัฒนาสำหรับเบราว์เซอร์ Quicktime, iOS และ Safari อย่างไรก็ตาม ขณะนี้โปรโตคอล HLS สามารถใช้ได้กับแพลตฟอร์มอื่นๆ ด้วยเช่นกัน โปรโตคอลรองรับการจำกัดแบนด์วิดท์ได้เป็นอย่างดี และปรับคุณภาพวิดีโอให้เหมาะสม เมื่อพิจารณาถึงความเร็วในการส่งวิดีโอ HLS จะไม่ใช่รูปแบบที่ดีที่สุด เนื่องจากเวลาในการตอบสนองคือ 20 วินาที

ข้อเสียอีกประการหนึ่งของโปรโตคอล RTMP คือมีความเสี่ยงต่อปัญหาแบนด์วิธ บางครั้ง แบนด์วิดท์ต่ำอาจทำให้การสตรีมสื่อหยุดชะงัก หรือแม้แต่สตรีมอาจไม่เริ่มทำงานหากความเร็วการเชื่อมต่ออินเทอร์เน็ตไม่เพียงพอ อีกวิธีหนึ่งสำหรับการออกอากาศด้วยแบนด์วิดท์ที่จำกัดคือการใช้ Dash Dash เป็นเทคโนโลยีการสตรีมบิตเรตแบบปรับได้ซึ่งให้การแพร่ภาพสื่อคุณภาพสูง เทคนิคนี้สามารถวิเคราะห์แบนด์วิดท์ของผู้ใช้รายใดรายหนึ่งและปรับคุณภาพวิดีโอตามความเร็วในการเชื่อมต่อ นอกจากนี้ยังไม่สามารถทำได้หากไม่มีตัวเข้ารหัสที่เข้ารหัสวิดีโอด้วยอัตราบิตจำนวนมาก จากนั้นเครื่องเล่นจะสลับการเข้ารหัสที่แตกต่างกันเนื่องจากทรัพยากรที่เหมาะสม ส่งผลให้มีการบัฟเฟอร์เพียงเล็กน้อยและได้รับประสบการณ์วิดีโอที่ยอดเยี่ยม เป็นการยากที่จะประเมินประโยชน์ทั้งหมดของเทคนิคนี้สำหรับการสตรีมเหตุการณ์สำคัญในระดับประเทศเป็นต้น

ข้อเสียอีกประการหนึ่งของโปรโตคอล RTMP คือความจำเป็นในการติดตั้งปลั๊กอิน Flash Player โดยที่การส่งสัญญาณสื่อ RTMP จะไม่สามารถทำได้ นอกจากนี้ยังมีปัญหาบางอย่างในขณะที่ใช้ RTMP สำหรับบริการสตรีม CDN

คุณยังมีคำถามเกี่ยวกับโปรโตคอล RTMP หรือการนำไปใช้งานหรือไม่? และเราจะช่วยคุณในเรื่องนี้และแสดงให้เห็นประโยชน์ทั้งหมดในทางปฏิบัติ

เมื่อเร็ว ๆ นี้ฉันเจอกระทู้ "เซิร์ฟเวอร์สตรีมสดที่ใช้ NGinx" เกี่ยวกับโมดูลที่ยอดเยี่ยมของ Roman Harutyunyan (@rarutyunyan) สำหรับ nginx: nginx-rtmp-module โมดูลนี้ติดตั้งง่ายมากและช่วยให้คุณสร้างเซิร์ฟเวอร์สำหรับเผยแพร่การบันทึกวิดีโอและการถ่ายทอดสดตาม nginx

คุณสามารถอ่านเกี่ยวกับโมดูลได้ในหน้า GitHub แต่ฉันอยากจะให้ข้อมูลเล็กน้อย ตัวอย่างง่ายๆใช้. ฉันหวังว่าหัวข้อนี้จะช่วยให้ผู้มาใหม่ในธุรกิจวิดีโอ (เช่นฉัน)

สั้น ๆ เกี่ยวกับ RTMP

RTMP (Real Time Messaging Protocol) เป็นโปรโตคอลออกอากาศที่เป็นกรรมสิทธิ์ของ Adobe การขนส่งเริ่มต้นคือ TCP (พอร์ต 1935) นอกจากนี้ยังสามารถห่อหุ้ม RTMP เป็น HTTP (RTMPT) ได้ ไคลเอนต์ RTMP คือ Adobe Flash Player เป็นหลัก
ตัวแปลงสัญญาณวิดีโอ - คอนเทนเนอร์เสียง H.264, AAC, nellymoser หรือ MP3, MP4 หรือ FLV

กำลังโพสต์วิดีโอ

กล่าวคือ วิดีโอออนดีมานด์ (VOD) เพียงเพิ่มใน nginx.conf ในส่วน rtmp ( เซิร์ฟเวอร์ (…))
แอปพลิเคชั่น vod ( play /var/videos; )

(หมายเหตุ : แน่นอน ส่วนนี้ไม่ต้องเรียกว่า vod)
ตอนนี้คุณสามารถวางไฟล์วิดีโอในรูปแบบที่ถูกต้องลงในโฟลเดอร์ /var/videos และ "ป้อน" แหล่งที่มาไปยังโปรแกรมเล่น เช่น rtmp://server/vod/file.flv เท่าที่ฉันเข้าใจ MP4 รองรับการกรอกลับวิดีโอโดยกำเนิด ในขณะที่ FLV จะต้องจัดทำดัชนีแยกกัน

แปลออนไลน์

เราสามารถส่งวิดีโอและสตรีมเสียงไปยังเซิร์ฟเวอร์โดยใช้โปรโตคอล RTMP เดียวกันสำหรับการเผยแพร่ และลูกค้าของเราจะสามารถรับชมการออกอากาศได้ ในการดำเนินการนี้ คุณต้องเพิ่มส่วนบนเซิร์ฟเวอร์:

แอปพลิเคชันสด ( อนุญาตให้เผยแพร่ 1.2.3.4 อนุญาตให้เผยแพร่ 192.168.0.0/24 ปฏิเสธการเผยแพร่ทั้งหมด อนุญาตให้เล่นทั้งหมด ถ่ายทอดสดบน; )

บนเครื่องที่เราจะออกอากาศ อันดับแรก เราต้องรับรายการอุปกรณ์ DirectShow เริ่ม - เรียกใช้ - cmd ไปที่โฟลเดอร์ ffmpeg/bin แล้วเรียกใช้:
ffmpeg -list_devices จริง -f dshow -i dummy

หากมีตัวอักษรรัสเซียในชื่อแหล่งที่มาของคุณก็สามารถแสดงเป็น krakozyabry ได้ ผู้ดูแลระบบที่แท้จริงใช้ iconv และคนธรรมดาอย่างฉันจะถอดรหัสจุดบกพร่องบนไซต์ของ Lebedev FFmpeg" คุณต้องป้อนคำจารึกที่อ่านได้

ตอนนี้ เมื่อทราบชื่อแหล่งที่มาของวิดีโอและเสียงแล้ว เราก็สามารถจับภาพด้วย ffmpeg และส่งไปยังเซิร์ฟเวอร์ได้

เว็บแคม

อย่างน้อย คุณต้องระบุแหล่งที่มาของวิดีโอ ตัวแปลงสัญญาณ และเซิร์ฟเวอร์:
ffmpeg -f dshow -i video="เว็บแคม C170" -c:v libx264 -an -f flv "rtmp://1.2.3.4/live/test.flv live=1"

แทนที่จะใช้ "Webcam C170" คุณต้องแทนที่ชื่อกล้องของคุณจากรายการ
สวิตช์ -an บอกว่าเราไม่ได้ส่งกระแสข้อมูลเสียง หากต้องการสตรีมเสียง บรรทัดเริ่มต้นจะมีลักษณะดังนี้:
ffmpeg -f dshow -i video="เว็บแคม C170" -f dshow -i audio="ไมโครโฟน..." -c:v libx264 -c:a libfaac -ar 44100 -ac 2 -f flv "rtmp://1.2 .3.4/live/test.flv live=1"
ที่นี่เราใช้ตัวแปลงสัญญาณ libfaac อัตราสุ่ม 44100 2 ช่อง (สเตอริโอ) คุณสามารถใช้ MP3 แทน AAC (libmp3lame codec)

กล้องอะนาล็อก

หากกล้องของคุณมีเอาต์พุตแบบแอนะล็อก คุณสามารถเชื่อมต่อกับคอมพิวเตอร์โดยใช้อุปกรณ์จับภาพ ฉันใช้กล้อง PAL ราคาถูกและบอร์ดจับภาพ USB Dealextreme

Ffmpeg -r pal -s pal -f dshow -i video="USB2.0 ATV" -c:v libx264 -an -f flv "rtmp://1.2.3.4/live/test.flv live=1"

จับภาพหน้าจอ

มีสองตัวเลือกที่นี่: ติดตั้ง FFSplit หรือใช้ screen-capture-recorder กับ FFmpeg
FFSplit ใช้งานง่ายกว่าเพราะ มันมี GUI ที่ดี แต่มันใช้งานไม่ได้ใน XP/2003

หากคุณตัดสินใจเลือกวิธีที่สอง บรรทัดเปิดใช้ FFmpeg จะมีลักษณะดังนี้:
ffmpeg -f dshow -i video="screen-capture-recorder" -c:v libx264 -an -r 2 -f flv "rtmp://1.2.3.4/live/test.flv live=1"
สามารถบันทึกสตรีมเสียงด้วยตัวจับภาพเสียงเสมือน


ตัวอย่างการจับภาพหน้าจอในแอพ

รีเลย์

โดยปกติ คุณสามารถส่งต่อไฟล์วิดีโอหรือไฟล์เสียง FFmpeg (หรือสตรีม) ไปยังเซิร์ฟเวอร์ได้ ในตัวอย่างด้านล่าง เรากำลังถ่ายโอนวิดีโอ MJPEG จากกล้องระยะไกล:
ffmpeg -f mjpeg -i video="http://iiyudana.miemasu.net/nphMotionJpeg?Resolution=320x240&Quality=Standard" -c:v libx264 -f flv "rtmp://1.2.3.4/live/test.flv live =1"
แต่สำหรับวัตถุประสงค์ดังกล่าว การใช้ตัวเลือกพุชบนเซิร์ฟเวอร์ RTMP นั้นเหมาะสมกว่าเพื่อกำจัดลิงก์กลางและดึงสตรีมบนเซิร์ฟเวอร์เอง


เว็บแคมบางประเภทในญี่ปุ่น

ปรับแต่ง แก้ปัญหา

-ชื่อที่ตั้งไว้ล่วงหน้า H.264 มีการตั้งค่าอัตราส่วนการบีบอัด/ความเร็วหลายชุด: เร็วมาก เร็วมาก เร็วมาก เร็วขึ้น เร็ว ปานกลาง ช้า ช้ากว่า ช้ามาก ดังนั้นหากคุณต้องการปรับปรุงประสิทธิภาพ คุณควรใช้:
-preset เร็วมาก
-crf ตัวเลข ส่งผลโดยตรงต่อบิตเรตและคุณภาพ ใช้ค่าตั้งแต่ 0 ถึง 51 ยิ่งมากคุณภาพของภาพก็จะยิ่งต่ำลง ค่าเริ่มต้น 23, 18 - คุณภาพแบบไม่สูญเสีย อัตราบิตจะเพิ่มขึ้นเป็นสองเท่าโดยประมาณเมื่อ CRF ลดลง 6

-r ตัวเลข ตั้งค่า FPS อินพุตและเอาต์พุต สำหรับแหล่งที่มาที่คุณกำลังจับภาพ คุณสามารถตั้งค่า -r แทน -อีกครั้งเพื่อใช้ FPS ดั้งเดิม

-rtbufsize ตัวเลข ขนาดบัฟเฟอร์ตามเวลาจริง หากคุณยังคงได้รับบัฟเฟอร์ล้นและเฟรมหลุด คุณสามารถตั้งค่าบัฟเฟอร์ขนาดใหญ่ได้ (เช่น 100000k) แต่สิ่งนี้สามารถเพิ่มเวลาในการรับส่งข้อมูลได้

-pix_fmtกำหนดรูปแบบสี หากคุณมีสี่เหลี่ยมสีดำแทนที่จะเป็นรูปภาพ และเสียงก็ใช้ได้ ลองวาง yuv420pหรือ yuv422p.

-s กว้างxสูง ขนาดภาพอินพุตและเอาต์พุต

-g ตัวเลข เท่าที่ฉันเข้าใจ นี่คือจำนวนเฟรมสูงสุดระหว่างคีย์เฟรม หาก FPS ของคุณต่ำมาก คุณสามารถตั้งค่านี้ให้ต่ำลงเพื่อลดความล่าช้าในการเริ่มออกอากาศ

-keyint_min ตัวเลข จำนวนเฟรมขั้นต่ำระหว่างคีย์เฟรม

-vf "crop=w:h:x:y"ตัดวิดีโอ

-ปรับเวลาแฝงเป็นศูนย์ตัวเลือก "มายากล" เพื่อลดความล่าช้าในการออกอากาศ ฉันยังไม่รู้ว่ามันทำอะไร...

- ระยะเวลาการวิเคราะห์ 0ปิดใช้งานการวิเคราะห์ระยะเวลา ซึ่งช่วยลดเวลาในการออกอากาศ

นอกเหนือจากตัวเลือกเสียงที่กล่าวถึงข้างต้น คุณอาจต้อง -acodec สำเนาในกรณีที่สตรีมเสียงของคุณไม่ต้องการการแปลงเพิ่มเติมเป็น MP3/AAC

ตัวอย่าง: ออกอากาศจากเว็บแคมที่มีเวลาแฝงต่ำโดยไม่มีเสียง วาดเวลาปัจจุบันที่ด้านบนของภาพ

Ffmpeg -r 25 -rtbufsize 1000000k -analyzeduration 0 -s vga -copyts -f dshow -i video="Webcam C170" -vf "drawtext=fontfile=verdana.ttf: [ป้องกันอีเมล]:fontsize=48:box=1: [ป้องกันอีเมล]:text=%(localtime)" -s 320x240 -c:v libx264 -g 10 -keyint_min 1 -preset UltraFast -tune zerolatency -crf 25 -an -r 3 -f flv "rtmp://1.2.3.4:1935/ สด/b.flv สด=1"

ผู้เล่นบนเว็บไซต์

ทุกอย่างง่ายที่นี่ ติดตั้งหนึ่งในผู้เล่นยอดนิยมบนเว็บไซต์ของคุณ เช่น