2012-09-15 15 views
7

मैं एक स्ट्रिंग को एक स्ट्रिंग के साथ पास करने की कोशिश कर रहा हूं जिसमें एक एम्पर्सेंड शामिल है जो अभिव्यक्ति-अभिव्यक्ति में है और यह मुझे बता रहा है कि मुझे इसे कोटेशन में रखना होगा और इसे स्ट्रिंग के रूप में पास करना होगा। मैंने बचने और कच्चे स्ट्रिंग और एक चर में एक स्ट्रिंग का उपयोग करके "" और "के संयोजन के साथ कई लाभों का प्रयास किया है। क्या कोई यहाँ मेरी मदद कर सकता है? कोड यह रहा:कमांड स्ट्रिंग में एम्परसैंड के साथ पावरशेल इनवोक-एक्सप्रेशन

$streamout_calmedia01 = ` 
"rtmp://75.126.42.216/livepkgr/calmedialive01?adbe-live-event=liveevent&adbe-record-mode=record" 


$streamcmd_calmedia01 = "C:\avconv\usr\bin\avconv.exe 'rtmp://75.126.42.211/transcoder/mobileingest live=1' -f flv -c:v libx264 -r 30 -g 120 -b:v 410000 -c:a aac -ar 22050 -b:a 64000 -strict experimental -y $streamout_calmedia01" 

Invoke-Expression "$streamcmd_calmedia01" 

मैं एम्पसेंड से पहले एक ` का उपयोग कर और चर में डालने से पहले अभिव्यक्ति आह्वान के सामने एक दोहरे उद्धरण का उपयोग कर की कोशिश की है, मैं कोशिश की है (के रूप में दिखाया गया है) के आसपास कोटेशन डाल इनवॉक-एक्सप्रेशन के लिए कॉमांड के साथ परिवर्तनीय और '&' और "&" डालने और स्ट्रिंग में एम्परसेंड को संयोजित करने के साथ। किसी भी विचार की बहुत प्रशंसा की जाएगी! फ्लैश मीडिया सर्वर के लिए स्ट्रीम नाम से कमांड को पार्स करने और HTTP लाइव स्ट्रीमिंग चंकिंग शुरू करने से पहले मुझे पहले दर्ज डेटा को फ्लश करने के लिए वहां एम्परसैंड की आवश्यकता है।

उत्तर

13

एम्परसेंड, डबल-कोटेड स्ट्रिंग "&" अंदर होना चाहिए, ताकि आप आंतरिक दोहरे उद्धरण चिह्नों

$streamout_calmedia01 = "rtmp://...vent`"&`"adbe-record-mode=record" 

बचने या

$streamout_calmedia01 = 'rtmp://...vent"&"adbe-record-mode=record' 
1

बदलें $ streamout_calmedia01 रहे हैं:

$streamout_calmedia01 = "rtmp://75.126.42.216/livepkgr/calmedialive01?adbe-live-event=liveevent```&adbe-record-mode=record" 

तो फिर तुम करने के लिए फिर से सौंप $ streamout_calmedia1 ($ streamout_calmedia1 के नए मूल्य के साथ) है और यह काम करना चाहिए।

+0

इसका कोई प्रभाव नहीं होना चाहिए। '&' को डबल कोट स्ट्रिंग में भागने की आवश्यकता नहीं है, और बैकटिक को अनदेखा/त्याग दिया जाता है: '" और "लंबाई -> 1' और' "' '' "। लंबाई -> 1' (दूसरा उदाहरण केवल एक होना चाहिए बैकटिक, ऐसा लगता है कि मैं यह नहीं समझ सकता कि मार्कडाउन बैकटिक कोड में एक बैकटिक कैसे रखा जाए!) – latkin

+0

हो सकता है कि आप सिंगल कोट्स या दोहरी कोट्स का उपयोग ** डबल ** बैकटिक के साथ करें? – latkin

+0

नहीं, यह 3 बैकटिक्स होना चाहिए था। यकीन नहीं है कि वहां क्या हुआ। –

1

आपके पास एकल उद्धरण में स्ट्रिंग लगाने की जरूरत है Invoke-Expression का उपयोग करने की आवश्यकता नहीं है। इसके उपयोग से बचने से इस मुद्दे को रोक दिया जाएगा। बस exe उपकरण को सीधे कॉल करें।

$streamout_calmedia01 = "rtmp://75.126.42.216/livepkgr/calmedialive01?adbe-live-event=liveevent&adbe-record-mode=record" 

C:\avconv\usr\bin\avconv.exe 'rtmp://75.126.42.211/transcoder/mobileingest live=1' -f flv -c:v libx264 -r 30 -g 120 -b:v 410000 -c:a aac -ar 22050 -b:a 64000 -strict experimental -y $streamout_calmedia01 

इससे डबल-एस्केपिंग की सभी जटिलताओं से बचें, और जो भी आप चाहते हैं वह शोर करें।

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