สตรีมมิ่ง mp4 ด้วย ffmpeg


16

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

Sat Mar  9 23:21:54 2013 muxer does not support non seekable output

นี่คือส่วนของไฟล์ ffserver.conf ที่เกี่ยวข้องกับสตรีม mp4:

<Stream channel1.mp4>       # Output stream URL definition
   Feed feed1.ffm              # Feed from which to receive video
   Format mp4

   # Audio settings
   AudioCodec libmp3lame
   AudioBitRate 64             # Audio bitrate

   # Video settings
   VideoCodec libx264
   VideoSize 560x320           # Video resolution
   VideoFrameRate 25           # Video FPS
   AVOptionVideo flags +global_header  # Parameters passed to encoder
                                       # (same as ffmpeg command-line parameters)
   AVOptionVideo cpu-used 0
   AVOptionVideo qmin 10
   AVOptionVideo qmax 42
   AVOptionVideo quality good
   AVOptionAudio flags +global_header
   PreRoll 15
   StartSendOnKey
   VideoBitRate 400            # Video bitrate
</Stream>

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


3
คุณไม่จำเป็นต้องสตรีม MP4 สำหรับวิดีโอ HTML5 H.264 / MP4 ควรจะเพียงพอที่จะเข้ารหัสไฟล์วิดีโอด้วย-movflags faststartหรือจัดการกับวิดีโอqt-faststartจากนั้นชี้ไปที่ไฟล์ MP4 ใน<video>แท็ก เซิร์ฟเวอร์ของคุณต้องใช้โมดูลการสตรีม H.264เพื่ออนุญาตให้ลูกค้าค้นหา หรือว่าคุณมีอินพุตสด
slhck

ลูกค้าของฉันต้องการให้สตรีมมิ่งนี้ - เขาต้องการปิดการใช้งานไคลเอ็นต์ที่กำลังค้นหาอย่างสมบูรณ์ เป็นการสตรีมจากไฟล์ (ไฟล์บนเซิร์ฟเวอร์อยู่ในรูปแบบ webm หากสร้างความแตกต่าง) ฉันไม่สามารถซ่อนการควบคุมได้เพราะ iPhones บังคับให้แสดงการควบคุม
Fibericon

@slhck: ฉันกำลังสตรีมมิ่งเว็บแคมสดด้วย mp4 แต่ไม่สามารถทำได้ มันทำงานได้เมื่อฉันใช้ flv เป็นไปได้ไหมที่จะใช้ mp4 สำหรับการสตรีมสด
John Qualis

@JohnQualis ไม่แน่ใจว่าสามารถใช้ ffserver ได้หรือไม่ แต่คอนเทนเนอร์ไม่ควรสำคัญจริงๆ - ตัวแปลงสัญญาณเหมือนกันกับ FLV และ MP4 (H.264 และ AAC)
slhck

@sklhck: ฉันได้ทำงานกับ flv โดยใช้ ffserver แต่ไม่ใช่กับ mp4 เว็บเบราว์เซอร์ส่วนใหญ่รองรับ mp4 ฉันต้องการบางสิ่งบางอย่างที่ทำงานบน iphone, android และเว็บเบราว์เซอร์ที่มีชื่อเสียงทั้งหมดและนั่นคือ h264 :) และฉันกำลังสตรีมสดเว็บแคม
John Qualis

คำตอบ:


6

บทความ HTML 5 และวิดีโอที่เป็นมิตรกับ iPad จากเว็บไซต์ของคุณซึ่งอัปเดตล่าสุด 12 พฤศจิกายน 2014 มีข้อมูลนี้:

ภาพ

บทความแนะนำให้ใช้ MP4 เป็นโซลูชันที่ดีด้วย ffmpeg รุ่นล่าสุดที่เพียงพอโดยใช้การเข้ารหัส H.264 ด้วย AAC

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


นี่เกี่ยวกับการสตรีมแบบ "สด" หรือไม่
Markus Siebeneicher

@MarkusSiebeneicher: ใช่ส่วนใหญ่
harrymc

ฉันยังคงมีปัญหาในการสตรีมมิ่ง mp4 แบบสดด้วย ffmpeg ดูเหมือนว่าจะหาไม่ได้ ฉันส่งออก ffmpeg ไปยังเบราว์เซอร์โดยตรงด้วย webm มันทำงานนอกกรอบ การใช้รูปแบบ mp4 เป็นสิ่งที่บอกว่ามันหาไม่ได้ ... ดังนั้นฉันจึงสงสัยว่าจะทำอย่างไรกับการทำให้ mp4 "สด" มีความคล่องตัวซึ่งไม่มีการบันทึกวิดีโอเป็นไฟล์โดยตรง (ซึ่งจะทำให้หาได้)
Markus Siebeneicher

@MarkusSiebeneicher: ฉันขอแนะนำให้ถามคำถามนี้ในโพสต์ใหม่พร้อมรายละเอียด
harrymc

0

ฉันคิดว่ามันจะมีประโยชน์ถ้าคิดถึง HTTP Live Streaming

https://developer.apple.com/streaming/

เพราะฉันเข้าใจว่ามันใช้งานได้ดีในอุปกรณ์ iOs

นี่คือหนึ่งในตัวอย่าง:

/programming/28723993/ffmpeg-hls-stream-for-android-and-ios


คุณต้องการของฉันที่จะเพิ่มนี้เป็นความคิดเห็นแทน ...
rogerdpack
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.