วันนี้มาทดลองทำการสตรีมไฟล์วิดีโอเพื่อถ่ายถอดสดไปยัง Facebook Live และ Youtube Live กันครับ โดยเราจะใช้ FFmpeg ในการสตรีม ไม่สอนการติดตั้งนะครับน่าจะพอทำเป็น โดยบน Facebook เราจะสตรีมทั้งจากหน้า profile และหน้า page ก่อนนี้เฟสบุคจะมี Publishing Tools ให้เฉพาะกับหน้า page เท่านั้น ถ้าจะสตรีมผ่านหน้า profile เราต้องเขียนโปรแกรมขึ้นมาเพื่อหาค่า Stream Key ซึ่งก็ไม่ได้ยากอะไร แต่ตอนนี้ไม่ต้องเขียนหละเฟสบุคเขาทำให้หมดแล้ว คลิกๆ ไม่กี่ทีก็ได้ Stream Key มาใช้แล้วครับ ส่วนของ Youtube ก็เช่นกัน คลิกๆ ไม่กี่ทีก็ได้ Stream key มาใช้สำหรับสตรีมเช่นกัน
1. การสตรีมวิดีโอไปยัง Facebook Live (Profile Account)
อันนี้เป็นการใช้แอคเค้าเฟสบุคธรรมดาของเรานี้หละครับ ซึ่งปกติเราก็กดถ่ายถอดสดจากมือถือหรือจากคอมพิวเตอร์ได้อยู่แล้ว แต่เดียวเราจะลองถ่ายถอดสดจากไฟล์หนังกันดูครับ เริ่มแรกให้เข้าไปที่ https://www.facebook.com/live/create/ และทำการคลิก Create Live Stream
เลือก Share on your own Timeline และคลิก Next
จากนั้นเราจะได้หน้าที่แสดง Server URL และ Stream Key ให้ copy ค่านี้เอาไว้ เดียวเราต้องใช้ในการสตรีม
เมื่อได้ Stream Key มาแล้ว เราก็มาสั่งสตรีมจาก ffmpeg ได้เลยครับ โดยให้สั่ง
1 | ffmpeg -re -i test.mp4 -acodec libfdk_aac -ac 1 -vcodec libx264 -f flv "rtmp://rtmp-api.facebook.com:80/rtmp/XXXXXXXXXXXXX?ds=1&s_l=1&a=ZZZZZZZZZZZZZZ" |
เรียบร้อยครับ กด Go Live ได้เลย
2. การสตรีมวิดีโอไปยัง Facebook Live (Page Account)
อันนี้เป็นการใช้แฟนเพจแอคเค้าในการสตรีมนะครับ เพสบุคเขาเตรียมเครื่องมือเอาไว้ให้พร้อมแล้วเช่นกัน โดยเริ่มจากการเข้าไปในหน้าเพจของเราแล้วคลิกที่ Publishing Tools และเลือก Video Library ทางเมนูซ้ายมือ จากนั้นคลิกที่ปุ่ม + Live
ได้ Stream Key มาแล้ว กด Next
สั่งสตรีมด้วยคำสั่งต่อไปนี้ อย่าลืมแก้ Stream Key เป็นของตัวเองให้เรียบร้อยนะครับ
1 | ffmpeg -re -i test.mp4 -acodec libfdk_aac -ac 1 -vcodec libx264 -f flv "rtmp://rtmp-api.facebook.com:80/rtmp/XXXXXXXXXX?ds=1&s_l=1&a=ZZZZZZZZZZ" |
กด Go Live เป็นอันเรียบร้อย
3. การสตรีมวิดีโอไปยัง Youtube Live
อันสุดท้ายเป็นการสตรีมไปยัง Youtube Live ให้เข้าไปที่ https://www.youtube.com/live_dashboard ให้เลื่อนลงมาล้างสุดจะเห็นหัวข้อ ENCODER SETUP ให้ทำการกด Reveal ระบบจะแสดง Stream name/key โดยในส่วนของ Share คือ Link ที่ใช้สำหรับดูไลฟ์จริง ส่งตัวนี้ให้เพื่อนได้เลยครับ ส่วนพารามิเตอร์ตัวอื่นๆ อย่างเช่นการใส่ภาพ thumbnail ก็ลองไปซนดูกันต่อเองครับ
จากนั้นนำ Stream name/key ที่ได้มาสั่งให้ FFmpeg สตรีมไปยัง Youtube Live โดยใช้คำสั่งต่อไปนี้
1 | ffmpeg -re -i test.mp4 -acodec libfdk_aac -ac 1 -vcodec libx264 -f flv "rtmp://a.rtmp.youtube.com/live2/XXXX-XXXXX-XXXXX-XXXXX" |
เรียบร้อยไลฟ์ได้แล้วครับ สำหรับข้อมูลเพิ่มเติมดูได้จากอ้างอิงด้านล่างนะครับ
เพิ่มเติม
หากต้องการสตรีมจากกล้อง webcam ที่ต่ออยู่กับ Raspberry Pi สามารถใช้คำสั่งได้ดังนี้
1 | ffmpeg -f video4linux2 -s 426x240 -r 30 -b 2500k -i /dev/video0 -acodec libfdk_aac -ac 1 -vcodec libx264 -f flv "rtmp://rtmp-api.facebook.com:80/rtmp/XXXXXXXXXXXXX?ds=1&s_l=1&a=ZZZZZZZZZZZZZZ" |
หรือสามามารถใช้คำสั่ง avconv ดังต่อไปนี้
1 | avconv -f video4linux2 -s 426x240 -r 30 -b 2500k -i /dev/video0 -f flv "rtmp://rtmp-api.facebook.com:80/rtmp/XXXXXXXXXXXXX?ds=1&s_l=1&a=ZZZZZZZZZZZZZZ" |
หรือหากต้องการสตรีมจาก RTSP อื่นๆ ไปยัง Facebook Live หรือ Youtube Live สามารถใช้คำสั่งได้ดังนี้
ตัวอย่างนี้จะสตรีมจาก RTSP อื่นไปยัง Facebook Live
1 | ffmpeg -re -i "rtsp://192.168.1.108/rtsp/live" -acodec libfdk_aac -ac 1 -vcodec libx264 -f flv "rtmp://rtmp-api.facebook.com:80/rtmp/XXXXXXXXXXXXX?ds=1&s_l=1&a=ZZZZZZZZZZZZZZ" |
อันนี้ใช้สำหรับสตรีมจากกล้อง CCTV ที่ติดในบ้านไปยัง Facebook สังเกตว่าต้องเราต้องเพิ่ม -i input-sound.mp3 เข้าไปด้วยเพื่อเพิ่มเสียงเข้าไป เพราะถ้าไม่มีเสียงส่งไปด้วย Facebook จะไม่ยอมไลฟ์ให้
1 | ffmpeg -re -i "rtsp://user:[email protected]:554/cam/realmonitor?channel=1&subtype=1" -i input-sound.mp3 -acodec libfdk_aac -ac 1 -vcodec libx264 -f flv "rtmp://rtmp-api.facebook.com:80/rtmp/XXXXXXXXXXXXX?ds=1&s_l=1&a=ZZZZZZZZZZZZZZ" |
อ้างอิง:
https://www.facebook.com/live/create/?step=landing
https://www.youtube.com/live_dashboard
https://ffmpeg.org/ffmpeg.html
https://www.facebook.com/facebookmedia/get-started/live