สตรีมอย่างต่อเนื่องจากไพพ์เปล่าแล้วเพิ่มข้อมูลลงในไพพ์ตามต้องการ


0

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

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

เป็นไปได้ไหม ถ้าไม่มีวิธีอื่นรอบนี้หรือไม่

คำสั่งปัจจุบันของฉันคือ:

ffmpeg -i pipe:0 -re -c copy -f flv rtmp://mystream.com/key

pipe:0เป็นตัวอย่างของytdl


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

@harrymc Ubuntu 14.10 แหล่งที่มาปิดไปป์เมื่อเสร็จแล้ว
Ben Fortune

เป็นไปได้ไหมที่จะใช้ffserverสิ่งนี้
แบล็กไลท์ส่องแสง

@BlacklightShining อาจเป็นเพราะมันสามารถทำหน้าที่เป็นเซิร์ฟเวอร์ RTMP ได้ มันสมเหตุสมผลมากกว่าที่จะใช้ nginx ตั้งแต่ฉันใช้ไปแล้ว
Ben Fortune

คำตอบ:


2

วิธีที่ฉันได้รับสิ่งนี้คือการใช้เซิร์ฟเวอร์ RTMPของฉันเองเพื่อสตรีมวิดีโอไปยังโฮสต์

ฉันไพพ์วิดีโอของฉันไปยังเซิร์ฟเวอร์ RTMP ในพื้นที่โดยใช้

mkfifo x
ytdl http://youtube.com/watch?v=12345 > x
ffmpeg -re -i x -c copy -f flv rtmp://mylocalRTMPserver/stream

จากนั้นสร้างกระแสจากที่โฮสต์ใช้

ffmpeg -re -i rtmp://mylocalRTMPserver/stream -c copy -f flv rtmp://mystream.com/key

หากสตรีมข้างต้นไม่ได้รับอินพุตอินพุตจะยังคงเปิดอยู่ประมาณ 30 วินาทีอนุญาตให้ฉันปิดไพพ์ YouTube และเปิดอีกครั้ง

ในขณะที่ใช้งานได้มีค่าใช้จ่ายเพิ่มเติมที่ต้องเรียกใช้สองอินสแตนซ์ของ ffmpeg


-reไม่ควรใช้กับสตรีมอินพุตสด
llogan

@ LordNeckbeard ทำไมไม่ ดูเหมือนว่าจะทำงานได้ดีกับลำธารของฉัน
Ben Fortune

เอกสารระบุว่าอาจก่อให้เกิดการสูญเสียต
llogan

เอกสารบอกว่า: "ไม่ควรใช้กับอุปกรณ์จับที่เกิดขึ้นจริงหรือกระแสข้อมูลสด (ซึ่งอาจทำให้แพ็คเก็ตสูญหาย)" แต่อย่างน้อยถ้าอินพุตเป็นสตรีม HLS ที่มีอยู่และคุณไม่ใช้-reYoutube จะพูดว่า "แย่ - วิดีโอ เอาท์พุทต่ำ "(บนหน้าห้องควบคุมสดของ Youtube) และสตรีมจะไม่เริ่มต้นหรือจะไม่สามารถดูได้
pileofrocks
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.