วิธียิงสตรีม 2 แห่งพร้อมกันด้วยโปรแกรม OBS Studio

Streaming Media & Technics

EDIT : OBS Studio ล่าสุด ไม่สามารถทำได้แล้วนะครับ ถ้าจะทำตอนนี้แนะนำให้ไปใช้ Xsplit แทน จะดีกว่าครับ

เดี๋ยวนี้อินเตอร์เน็ตอัพโหลดสูงขึ้นเรื่อยๆ หลายๆคนคงมีความคิดที่อยากจะยิงสตรีมพร้อมกัน 2 แห่ง หรือมากกว่านั้น ครั้งนี้ผมจึงเอาเรื่องนี้มาเขียนให้ทราบวิธีกันครับ

ผมเคยทดสอบกับ Xsplit แล้วพบว่ากิน CPU หนักหน่วงมาก ทำให้ผู้ชมสตรีมเกิดอาการเสียงกระตุก ภาพข้ามเฟรม เป็นต้น แต่พอมาใช้กับ Open Broadcaster Software Studio แล้วอาการนั้นหายไป

ก่อนอื่นเลย การทำแบบนี้ จะต้องเป็น OBS Studio เท่านั้นนะครับ OBS Classic ตัวเก่า ไม่สามารถทำได้ครับ

0

ผมจะบอกแค่วิธีทำให้ยิงไปเว็บที่ 2 เลยนะครับ เพราะว่ายิงเว็บที่ 1 ก็เซ็ตติ้งตามปกติเท่านั้นครับ

วิธีทำคือ เข้าไปแก้ใน Setting ของโปรแกรม OBS ไปในส่วนของ Output แล้วเปลี่ยน Output Mode จาก Simple เป็น Advanced

setting1

จากนั้นไปที่ส่วนของ Recording ตรงนี้จะเป็นการตั้งค่าของปุ่ม Start Recording ในตัวโปรแกรม OBS แต่เราจะเปลี่ยนให้มันกลายเป็นปุ่ม Start Streaming แห่งที่ 2 ที่เราจะยิงไปแทน เริ่มจากเปลี่ยน Type จาก Standard เป็น Custom Output (FFmpeg) แทน แล้วเปลี่ยนที่ FFmpeg Output Type จาก Output to File เป็น Output to URL แทน

setting2

คำถามต่อไป มันมีช่องแค่ช่องเดียว แล้วเราจะใส่ rtmp url และ stream key ยังไง

ง่ายนิดเดียวครับ เพียงใส่ rtmpurl และ streamkey ต่อกันเลย โดยมี / ระหว่าง rtmpurl และ streamkey เป็น rtmpurl/streamkey  ต่อกัน

ผมจะยกตัวอย่าง 3 เว็บไซต์ครับ

1. Mylive | { rtmp://stream.mylive.in.th/live/[streamkey] }  ( ไม่ต้องมี [] ตรง streamkey )

2. Youtube Live | { rtmp://a.rtmp.youtube.com/live2/[streamkey] }  ( ไม่ต้องมี [] ตรง streamkey )

3. twitch.tv  | { rtmp://live-tyo.twitch.tv/app/[streamkey] }  ( ไม่ต้องมี [] ตรง streamkey )

[divider]

จากนั้น ก็กลายเป็นว่า ปุ่มยิงสตรีมไปเว็บที่ 2 จะมาแทนที่ Start Recording แทนแล้วครับ กดเมื่อไร ก็ยิงสตรีมเมื่อนั้น

setting3

[divider]

จากการทดสอบยิงบน MyLive 2 ห้อง พร้อมกัน พบว่าภาพ ของทั้งสองห้อง เท่ากันหมดเลย ไม่มีห้องไหนหน่วงหรือดีเลกว่ากันแต่อย่างใดเลยครับ

Untitled

ปัญหาต่อมาคือ การตั้งค่า Resolution หากคุณตั้ง Resolution ที่สูงและ FPS สูง และเอาไปเล่นเกมคอม รับรองครับว่า แย่แน่ๆ ผมจะลองเอา ตาราง CPU Usage ที่ผมทดสอบมาให้ดูครับ

จะเป็นภาพเปรียบเทียบการยิงพร้อมกันสองเว็บ(ด้านซ้าย) และยิงแค่เว็บเดียว(ด้านขวา) bitrate 3192 *2 = 6384kbps ใช้ CPU AMD FX8350 ทดสอบนะครับ

1280×720 : 30fps ทดสอบยิงกับการเปิดวิดีโอ 

2stream 30fps with video1stream 30fps with video

1280×720 : 60fps ทดสอบยิงกับการเปิดวิดีโอ

2stream 60fps with video1stream 60fps with video

1280×720 : 60fps ทดสอบยิง โดยเล่น Overwatch

2stream 60fps with game1stream 60fps with game

1280×720 : 30fps ทดสอบยิง โดยเล่น Overwatch

2stream 30fps with game1stream 30fps with game

1096×616 : 30fps ทดสอบยิง โดยเล่น Overwatch

2stream downscale 30fps with game1stream downscale 30fps with game

[divider]

จากตาราง จะเห็นว่า การยิงสตรีมเล่นเกม Overwatch โดยยิง 60fps สองเว็บพร้อมกัน ที่ปกติยิงแค่ทางเดียวก็กิน CPU อยู่ 80%+ อยู่แล้ว ทำให้ CPU ทะลุเพดานตลอดเวลาเลย และตอนเล่นเกมอยู่ เฟรมเรทในเกมค่อนข้างจะตกและกระตุกไปในทางที่เล่นไม่ค่อยได้เลย ฉะนั้นควรจะใช้เพียง 720p หรือต่ำกว่า และ 30fps หากจะยิง 2 ที่

แต่หากคิดจะสตรีมเกมคอม แบบภาพชัดๆลื่นๆ 1080p 60fps และเป็นเกมที่กินสเปคเครื่องอยู่แล้ว ควรจะใช้ CPU ที่สูงมากๆ อย่างเช่น i7 ตัวท๊อป ซึ่งราคาค่อนข้างสูง

หรือจะเป็นแบบ Advance ใช้คอมเครื่องที่ 2 โดยเครื่องที่ 1 เอาไว้เล่นแบบภาพชัดสุดๆไปเลย แล้วส่งภาพให้เครื่องที่ 2  ทำหน้าที่ Encode และ ยิงสตรีมให้  ดังนี้ครับ
(คลิกที่ภาพเพื่อดูขนาดใหญ่)Untitled-2

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

เอาเป็นว่า หลักการก็จะประมาณนี้ครับ จะเลือกใช้วิธีไหน อยู่ที่ทางเลือกของคุณแล้วล่ะครับ (‘◇’)ゞ

Copied title and URL