2013-02-20 67 views
7

हम एएसपी.नेट एमवीसी 4 का उपयोग कर रहे हैं ताकि उपयोगकर्ता हमारी वेबसाइट के माध्यम से वीडियो और ऑडियो अपलोड कर सकें। मैं इसके लिए बैक एंड के रूप में एज़ूर मीडिया सेवा का उपयोग करना चाहता हूं।स्ट्रीम टू अज़ूर मीडिया सर्विसेज

Azure's tutorial का पालन करते समय, जिस मुद्दे में मैंने भाग लिया है वह यह है कि Azure Media Services SDK डेटा की कच्ची धारा अपलोड करने की अनुमति नहीं देता है। इसके बजाय, एकमात्र अपलोड विधि जिसे मैं पा सकता हूं पथ पथ तर्क का उपयोग करता है।

मैं फ़ाइल को डिस्क (it's already streamed to disk by default) में सहेजने से बचाना चाहता हूं, और अनुरोध फ़ाइल को सीधे Azure के माध्यम से स्ट्रीम करने में सक्षम होना चाहता हूं।

यहाँ मेरी कोड इस प्रकार दूर है:

public void SaveMedia(string fileName, System.IO.Stream stream) 
{ 
    CloudMediaContext mediaCloud = new CloudMediaContext("account", "key"); 
    AssetCreationOptions assetOptions = new AssetCreationOptions(); 
    var asset = mediaCloud.Assets.Create(fileName, assetOptions); 

    var assetFile = asset.AssetFiles.Create(fileName); 

    var accessPolicy = mediaCloud.AccessPolicies.Create(fileName, TimeSpan.FromDays(3), AccessPermissions.Write | AccessPermissions.List); 

    var locator = mediaCloud.Locators.CreateLocator(LocatorType.Sas, asset, accessPolicy); 

    assetFile.Upload("????????????"); 

    locator.Delete(); 
    accessPolicy.Delete(); 
} 

एक यह कैसे पूरा करता है? क्या यह एएसपी.नेट एमवीसी 4 और एज़ूर मीडिया सर्विसेज का उपयोग करके अपलोड को संभालने के लिए किसी भी "सर्वोत्तम प्रथाओं" के साथ संघर्ष करेगा?

उत्तर

10

अपलोड करने के लिए आपको Azure Media Services का उपयोग नहीं करना चाहिए, यह इनबाउंड-स्ट्रीम-टू-एज़ूर-स्टोरेज-ब्लॉब के लिए डिज़ाइन नहीं किया गया है, जो आप वर्णन कर रहे हैं।

सीधे Azure संग्रहण SDK का उपयोग करें (समस्या निवारण से बचने के लिए v1.7 का उपयोग करें)। स्टोरेज एसडीके स्ट्रीम को ब्लॉब लिखने की अनुमति देता है। ऐसा करने के लिए, आपको पहले एक एसएएस लिखने वाला लोकेटर (ऐसा लगता है कि आप वहां हैं) प्राप्त करने की आवश्यकता है, फिर परिसंपत्ति कंटेनर खोजने के लिए locator.Path.Segments का उपयोग करें। फिर स्टोरेज एसडीके में CloubBlobClient का उपयोग करके सीधे अपलोड करने के लिए इसका उपयोग करें - यह कहीं स्ट्रीम स्ट्रीम फ़ंक्शन प्रदान करता है।

उपरोक्त कोड में नोट: आप AssetCreationOptions निर्दिष्ट नहीं कर रहे हैं। कोई भी नहीं, यह मान लेगा कि भंडारण में फ़ाइलें भंडारण-एन्क्रिप्टेड (डिफ़ॉल्ट स्थानांतरण तंत्र सुरक्षित है, असुरक्षित नहीं है)। मुझे नहीं लगता कि आप अपलोड करने से पहले अपनी फ़ाइल-स्ट्रीम पर स्टोरेज एन्क्रिप्शन करने जा रहे हैं, इसलिए आप इसे एसेट क्रिएशनऑप्शन पर सेट करेंगे। नहीं।

व्यक्तिगत रूप से, मैं इस मार्ग पर नहीं जाऊंगा। 'अपनी खुद की यूट्यूब बनाने' पर अपने ब्लॉग पोस्ट पढ़ें: http://blog-ndrouin.azurewebsites.net/?p=1471

यह में, वहाँ, सर्वर साइड द्वारा प्रदान की एक एसएएस यूआरएल (जो अपने खाता क्रेडेंशियल है का उपयोग कर ग्राहक अपलोड की गई सामग्री की एक पूरी उदाहरण है कि आप शायद अपने क्लाइंट-साइड पर चारों ओर तैरना नहीं चाहते!)।

क्लाइंट, हालांकि, उस एसएएस यूआरएल का उपयोग करके स्टोरेज में पुट करने में सक्षम होना चाहिए। मेरे मामले में, मैंने सी # कमांड लाइन ऐप का इस्तेमाल किया था। आप HTML5 में ऐसा करने में सक्षम नहीं होंगे जब तक कि आपका वेब-पेज लक्ष्य संग्रहण खाते के समान डोमेन पर होस्ट न हो। यदि आपका वेब पेज (या अपलोड करने वाला एक आई-फ्रेम) आपके स्टोरेज खाते के समान डोमेन में नहीं है, तो यह एज़ूर स्टोरेज आरईएसटी परत पर एचटीएमएल 5 में एक कोर "विकल्प" कॉल ट्रिगर करेगा, जो अभी तक कॉरस का समर्थन नहीं करता है ।

आपके स्टोरेज खाते में होस्ट किए गए एक HTML5 I-Frame के विकल्प हैं: स्लीवरलाइट या फ्लैश आपके स्टोरेज खाते की $ रूट में क्रॉस-डोमेन फ़ाइल के साथ शिम अपलोड करें (या शायद आपके स्टोरेज खाते में होस्ट की गई प्लगइन ऑब्जेक्ट्स से बचें क्रॉस-डोमेन-फ़ाइल अनुरोध)।

मैं एक पोस्ट में सर्वर पर फाइलस्ट्रीम अपलोड करने को हतोत्साहित करता हूं। यह आपकी वेब-सेवा को सभी इनबाउंड फ़ाइलों के लिए एक बाधा बनाता है; और एक लंबा पोस्ट विशेष रूप से स्थिर नहीं है: आपके ऐप-पूल को अपलोड के बीच में पुनर्नवीनीकरण किया जा सकता है और आप टोस्ट हैं।

पीएस।

http://social.msdn.microsoft.com/Forums/en-US/MediaServices/threads

+0

जबाब और दिशा के लिए धन्यवाद: हमारी टीम (विंडोज Azure मीडिया सर्विसेज) मुख्य रूप से इस मंच पर नजर रखता है! मैं आपके लेख में दिए गए कदमों को सर्वोत्तम रूप से कार्यान्वित करने का प्रयास करूंगा। हम वास्तव में दोनों सिरों (अपलोडर और स्ट्रीमर) पर एक HTML5 समाधान लागू करना चाहते हैं। –