2009-04-05 20 views
6

मैं वर्तमान में एक ऐसा एप्लिकेशन लिख रहा हूं जो उपयोगकर्ता को किसी एप्लिकेशन (शायद एक विंडोज सेवा) स्थापित करने की अनुमति देगा जो उसके पीसी पर एक पोर्ट खोल देगा और दिया गया है हार्ड डिस्क पर विशेष गंतव्य, फिर एमपी 3 फ़ाइलों को स्ट्रीम करने में सक्षम हो जाएगा।सी #: सर्वर से किसी क्लाइंट को ऑडियो फ़ाइल स्ट्रीम करना

मेरे पास एक और एप्लीकेशन होगा जो सर्वर से कनेक्ट होगा (उपयोगकर्ता का पीसी होना) और बंदरगाह को दिए गए पीसी (दूरस्थ रूप से) से कनेक्ट करके होस्ट किए गए डेटा को ब्राउज़ करने में सक्षम हो, और स्ट्रीम एमपी 3 फ़ाइलें आवेदन करने के लिए सर्वर


मैं कुछ ट्यूटोरियल ऑनलाइन मिल गया है लेकिन उनमें से ज्यादातर सी # में फ़ाइल सर्वर के बारे में हैं और वे आप एक पूरे फ़ाइल डाउनलोड करने की अनुमति डाउनलोड करें। क्या मैं चाहता हूँ एक एमपी 3 फ़ाइल स्ट्रीम करने के लिए इतना है कि यह चलना शुरू होता है बाइट्स की एक निश्चित संख्या डाउनलोड (यानी, जबकि यह बफ़र की जा रही है)


हैं जब मैं कैसे इस तरह के एक कार्य को पूरा करने में के बारे में जाते हैं? मुझे विशेष रूप से जानने की आवश्यकता है कि इस एप्लिकेशन को कैसे लिखना है (कि मैं बाद में विंडोज सेवा में बदल जाऊंगा) जो एक निर्दिष्ट पोर्ट पर एक स्ट्रीम फाइलों को सुनेंगे, ताकि मैं फ़ाइलों को किसी प्रकार से एक्सेस कर सकूं: http://<serverip>:65000/acdc/wholelottarosie.mp3 और उम्मीद है कि उस फ़ाइल को एक WPF MediaPlayer में स्ट्रीम करने में सक्षम हो।


[अपडेट]

मैं this tutorial एक फ़ाइल सर्वर के निर्माण और ग्राहक के लिए सर्वर से फ़ाइल भेजने के बारे में पीछा कर रहा था। क्या मुझे इस तरह का कुछ करना है?

[अपडेट]

वर्तमान में इस पोस्ट को पढ़ने: Play Audio from a Stream using C# और मैं इसे कैसे मैं स्ट्रीम फ़ाइलें खेल सकते हैं के रूप में बहुत आशाजनक दिखता है लगता है; लेकिन मुझे अभी भी पता नहीं है कि मैं वास्तव में सर्वर से फ़ाइलों को कैसे स्ट्रीम कर सकता हूं।

उत्तर

7

स्ट्रीमिंग और डाउनलोड करने के बीच कोई प्रभावी अंतर नहीं है। वे एक ही बात हैं। कोई अंतर पूरी तरह से अर्थपूर्ण है।

आप के लिए, आप किसी भी वेब सर्वर से एक एमपी 3 "डाउनलोड" और यह खेलते समय आप इसे डाउनलोड करने थे शुरू कर सकता है चाहता है तो। यह सिर्फ इतना है कि आप कुछ डेटा बफर करें और इसे तुरंत अपने डिकोडिंग और प्लेबैक दिनचर्या में भेजना शुरू करें।

इसी तरह, यहां तक ​​कि तथाकथित "स्ट्रीमिंग" सर्वर से डाउनलोड किया जा सकता है। आपको बस बाइट्स को सहेजना होगा क्योंकि उन्हें तार में एक फाइल में भेजा जा रहा है।

"स्ट्रीमिंग" अनुप्रयोगों सिर्फ क्षुधा है कि डिस्क के लिए फ़ाइलों को बचाने के लिए डिज़ाइन नहीं किया गया है।

संपादित करें:

एक अपवाद नहीं है। दो वास्तव में:

पहला, अगर आप इस तरह के रेडियो या अन्य प्रकार जहां 100% विश्वसनीयता की जरूरत नहीं है के रूप में "लाइव" ऑडियो स्ट्रीमिंग कर रहे हैं, तो वे यूडीपी का उपयोग कर धारा। यदि आप चाहें तो यह अभी भी सहेजा जा सकता है, लेकिन यह धारा उन्मुख से अधिक पैकेट उन्मुख है।

दूसरा तब होता है जब एन्क्रिप्शन का उपयोग किया जाता है, इस स्थिति में आप अभी भी फ़ाइल को सहेज सकते हैं, लेकिन यह एन्क्रिप्शन एल्गोरिदम और चाबियों के बिना बेकार होगा।

+0

आप आईआईएस से स्ट्रीम कर सकते हैं या अपना खुद का लिखने के लिए "कैसिनी" सर्वर का उपयोग कर सकते हैं। करना मुश्किल नहीं है। उन्हें वेबसाइट पर एक फ़ोल्डर में प्लॉप करें। बस याद रखें कि वेब सामान में रिक्त स्थान% 20 या + हैं। जैसे http: //server/john%20Cougar%20Mellencamp.mp3 या http: //server/john+Cougar+Mellencamp.mp3 –

2

यह वास्तव में सच नहीं है।

फ़ाइल डाउनलोड और HTTP मल्टीमीडिया स्ट्रीम के बीच का अंतर एन्कोडिंग हेडर है, जो स्ट्रीम के लिए खंडित एन्कोडिंग पर सेट होता है। इसके अतिरिक्त, एक फ़ाइल डाउनलोड में सामग्री-लंबाई शीर्षलेख होता है, इसलिए प्राप्तकर्ता प्रणाली फ़ाइल आकार को पहले से ही जान सकती है।

मल्टीमीडिया स्ट्रीम के साथ कोई सामग्री-लंबाई शीर्षलेख नहीं है, इसलिए कोई अपेक्षित अंत बिंदु नहीं है। इसके बजाय, डेटा के हिस्सों की एक निरंतर श्रृंखला प्राप्त होती है और संसाधित होती है, जब तक वे दिखाई देते हैं।

+0

मुझे लगता है कि आप मान रहे हैं कि "स्ट्रीमिंग" का अर्थ लाइव, कभी खत्म नहीं हुआ सामग्री है। यह जरूरी नहीं है। उदाहरण के लिए, पेंडोरा, अन्य संगीत सेवाओं के रूप में व्यक्तिगत फ़ाइलों को स्ट्रीम करता है। वीडियो अक्सर "स्ट्रीम" होते हैं लेकिन निश्चित अंत होते हैं और अंक शुरू करते हैं। स्ट्रीम को फ़ाइल चलाने के कार्य को संदर्भित किया जाता है क्योंकि यह प्रसारित किया जा रहा है, न कि यह डेटा की एक गंभीर स्ट्रीम है। –

+0

@MystereMan - फ्रेड के उत्तर और आपकी व्याख्या के बीच एक डिस्कनेक्ट हो सकता है। वह यह सुझाव नहीं दे रहा है कि धारा में परिभाषित अंतराल नहीं हो सकता है, बल्कि क्लाइंट को यह पता नहीं चला है कि वह अंतराल कब तक पहुंच जाएगा। जहां तक ​​इसका संबंध है, यह _could_ अंतहीन पर जाता है। – Brian

संबंधित मुद्दे