แคชสตรีมมิ่งวิดีโอพร้อมพร็อกซี HTTP แบบฝังหรือไม่

มีหลายคนพยายามแคชข้อมูลวิดีโอที่โหลดไว้ล่วงหน้าโดยใช้ AVPlayer หรือ MPMoviePlayerController เป็นต้น

แนวทางที่ตรงไปตรงมาที่สุดดูเหมือนจะใช้ AVExportSession กับ currentItem ของผู้เล่น แต่ดูเหมือนว่าจะไม่มีใครสามารถทำให้มันใช้งานได้

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

ฉันสามารถเรียกใช้เว็บเซิร์ฟเวอร์แบบฝังได้ (GCDWebServer) ดังนั้นคำถามของฉันคือ

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

  2. ประสิทธิภาพของดิสก์เพียงพอที่จะให้การปรับปรุงผ่านเครือข่ายหรือไม่ ดูเหมือนว่าจะเป็นเช่นนั้นอย่างชัดเจน แต่ฉันได้เห็นบทความมากมายในเว็บที่พูดถึงความเร็วของดิสก์ I/O บน iOS

ขอบคุณ!


person bcattle    schedule 03.12.2013    source แหล่งที่มา
comment
มันไม่ชัดเจนจากคำถามของคุณและคำถามที่คุณอ้างถึงว่าวัตถุประสงค์ของคุณคืออะไร คุณกำลังพยายามบันทึกสำเนาของวิดีโอที่เล่นในเครื่อง (อ้างอิงถึง AVExportSession ของคุณ) หรือคุณกำลังพยายามใช้แคชของคุณเองเพื่อปรับปรุงการเล่น   -  person MDB983    schedule 16.05.2014
comment
ฉันไม่เห็นความแตกต่างที่คุณพยายามจะวาด อะไรคือความแตกต่างระหว่างการบันทึกสำเนาของวิดีโอที่เล่นในเครื่องและการใช้แคชเพื่อปรับปรุงการเล่น สิ่งเหล่านี้ไม่เหมือนกันเหรอ? ฉันไม่ทราบวิธีการแคชที่จะไม่บันทึกวิดีโอในเครื่อง   -  person bcattle    schedule 16.05.2014
comment
ความแตกต่างอยู่ที่การดำเนินการ ตามที่คุณชี้ให้เห็น คุณสามารถใช้กลไกพร็อกซีเพื่อบันทึกสิ่งที่อยู่ในกระบวนการดาวน์โหลด (จากมุมมองของผู้เล่น) หรือ AVExportSession ซึ่งจับข้อมูลหลักที่ดาวน์โหลดแล้ว/กำลังเล่น   -  person MDB983    schedule 16.05.2014
comment
ขวา. ดังนั้นจุดประสงค์ของคำถามนี้คือเพื่อถามชุมชนว่าการใช้งานอย่างใดอย่างหนึ่งเหล่านั้นเป็นไปได้หรือไม่ คำถามแรก ที่ลิงก์ไว้ด้านบน แสดงให้เห็นถึงข้อสงสัยเกี่ยวกับแนวทาง AVExportSession ดังที่ฉันพูดถึงในเนื้อหาคำถาม มีสาเหตุที่ทำให้การมอบฉันทะ AVPlayer อย่างโปร่งใสอาจไม่ทำงานเช่นกัน   -  person bcattle    schedule 17.05.2014
comment
สวัสดี @bcattle - ฉันกำลังแก้ไขปัญหาเดียวกันทุกประการ - ฉันต้องการแคชวิดีโอของฉันบน iOS แต่จนถึงตอนนี้ความพยายามทั้งหมดของฉันล้มเหลวด้วย NSURLProtocol และ resourceLoader ที่กำหนดเอง ตอนนี้ฉันกำลังจะใช้พร็อกซีแบบโปร่งใส เลยอยากถามว่าคุณมีความคืบหน้าในเรื่องนี้ไหม   -  person ndbroadbent    schedule 01.06.2015


คำตอบ (1)


สำหรับการสตรีมสด HTTP:

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

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

person augustzf    schedule 19.05.2014
comment
ขอบคุณสำหรับความเข้าใจ ฉันจินตนาการถึงพร็อกซีที่โปร่งใส คุณกำลังบอกว่าเปิดและอ่านไฟล์ .m3u8 จากนั้นพร็อกซีแต่ละสตรีมในนั้นอย่างโปร่งใสใช่ไหม - person bcattle; 19.05.2014