2012-05-23 15 views
8

में मैं अक्षर लोप/एकल उद्धरण आकर्षित करने के लिए जब वे drawtext में हैं पैरामीटर ffmpeg के drawtext वीडियो फिल्टर पाने के लिए "पाठ =" समर्थ हुए, तब भी जब मैं उन्हें भाग जाते हैं। डबल उद्धरण ठीक काम करते हैं, और एक फ़ाइल से लोड पाठ में apostrophes (उदा। Textfile = "example.txt") ठीक काम करते हैं। क्या यह एक बग है?ffmpeg एकल उद्धरण drawtext

उदा।

ffmpeg -i test.mpg -vf drawtext="apostrophes don't print" ... 
ffmpeg -i test.mpg -vf drawtext="even when they\'re escaped" ... 

उत्तर

17

विशेष वर्ण पलायन हिंसा की तरह हैं: अगर वे अपनी समस्या का समाधान नहीं कर रहे हैं, यदि आपके पास पर्याप्त उपयोग नहीं कर रहे।

ffmpeg -i test.mpg -vf drawtext=text="It\\\\\'s so easy" 

एक टेक्स्ट ओवरले का उत्पादन करता है जिसमें एक एस्ट्रोफ़े शामिल होता है। पाठ को दो बार पार्स किया जा रहा है, इसलिए आपको केवल उद्धरण से बचने की ज़रूरत नहीं है, आपको उद्धरण से बचने के लिए भी स्लैश से बचना होगा। दो बार।

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

+2

जावा से इस कमांड लाइन की रचना के वक्त मैं वास्तव में कोड के लिए था (": "," ") .replaceAll (" \ ' "," \\\\\\\\\\\ \ '");' जो, अगर तुम मुझसे पूछो, यह पूरी तरह से सनकी है। –

0

यह शायद जादू उद्धरण के साथ कुछ करने के लिए है। परीक्षण के एक गुच्छा के माध्यम से मैंने विंडोज़ पर विंडोज कमांड लाइन और मिनजीडब्लू का उपयोग करके किया, मैं हर बार एक ही समस्या में भाग गया। चूंकि ffmpeg drawtext Freetype का उपयोग करता है (मुझे लगता है कि यह वह जगह है जहां जादू उद्धरण सक्षम हैं) मुझे संदेह है कि जादू उद्धरण को अक्षम करने के लिए बहुत कुछ किया जाना है। मुझे यकीन नहीं है कि कमांड लाइन में जोड़े गए स्लेश को हटाने का कोई तरीका है, जैसा कि मैंने देखा है सब कुछ PHP स्क्रिप्ट शामिल है। मैं गलत हो सकता था, क्योंकि मैं कोई PHP गुरु नहीं हूं, लेकिन मुझे पता नहीं है कि उन्हें ffmpeg कमांड में कैसे एकीकृत किया जाए।

+0

दिलचस्प है, वहाँ एक समाधान तो है की तरह नहीं दिखता! अजीब है कि यह दोहरे उद्धरण चिह्नों से बचने के लिए संभव है, अर्धविराम आदि नहीं बल्कि एकल उद्धरण हालांकि ... – dotsam

+0

हाँ अक्षर लोप हमेशा बड़ी समस्या है। जो कोई भी जादू उद्धरण के साथ आया था, उसने स्पष्ट रूप से फैसला किया कि जब भी आप इसका इस्तेमाल करते थे, तो यह हमेशा एक संकुचन में या स्वामित्व दिखाने के लिए एक एस्ट्रोफ़े होने वाला था, जहां यह पिछले पत्र की तरफ घुमाया गया था। मैंने जादू उद्धरण की तरह कभी नहीं किया। 'This.watermarkText = watermarkText.replaceAll: – Ben

1

मैं तर्क स्ट्रिंग में यूनिकोड \ u2019 डालने में सक्षम था और यह एकल दाएं उद्धरण के लिए काम करता था।

+0

आपने इसे कैसे सम्मिलित किया? यदि मेरे पास उद्धरण के साथ टेक्स्ट युक्त एक चर $ स्ट्रिंग है, तो उद्धरण मुद्रित करने के लिए मुझे क्या करना चाहिए? – Sulli

0

मामले में किसी को अजगर के लिए इस की जरूरत है, इस से बच समारोह मेरे लिए काम कर रहा है (https://ffmpeg.org/ffmpeg-utils.html#Quoting-and-escaping + बहु बचने ऊपर सलाह के आधार पर):

वापसी " '" + text.replace (":", "\ \: "।) की जगह (" ' ""' \\\\\\ '' ") +" ' "

+0

यह सुनिश्चित नहीं है कि यह आपके लिए कैसे काम करेगा यह 'यह' - '' '' '' '' '' '' '' – deweydb

+0

'वापसी टेक्स्ट.रेप्लेस (":", "\\:") को प्रतिस्थापित करता है। " ' "," \\\\\\\\\\\\' ")' – deweydb

+0

यह अगर मैं में उद्धरण के साथ मेरी स्ट्रिंग है खोल पर निर्भर करते हैं, मैं zsh :) –