बैच कन्वर्ट * .एवी फ़ाइलें ffmpeg का उपयोग कर


13

मैं ffmpeg का उपयोग करके बैच में 20 + .AVI फ़ाइलों को परिवर्तित करने की कोशिश कर रहा हूं।

मुझे निम्नलिखित मिला है

@echo off.

for file in *.avi
do
   ffmpeg -i "$file" -s 640x480 -vcodec msmpeg4v2 "'basename "$file" .avi'.mpg';
done

मेरे .bat फ़ाइल में लेकिन यह काम नहीं करता है। मैं इसे विंडोज ओएस के तहत कैसे काम कर सकता हूं। ओह, और हाँ सभी फाइलें एक ही फ़ोल्डर में हैं।

त्रुटि संदेश मुझे मिलता है:

इस समय फ़ाइल अप्रत्याशित थी


और वास्तव में इसके बारे में क्या काम नहीं करता है?
15

यदि आप मुझे इंगित कर सकते हैं कि त्रुटि संदेश कैसे प्राप्त करें क्योंकि cmd बहुत तेजी से गायब हो जाता है, तो मैं आपको बता सकता हूं कि मुझे क्या समस्या है।
डेरियस

आपको पहले एक कमांड विंडो खोलने में सक्षम होना चाहिए ( प्रारंभ »भागो…»cmd ) और फिर वहाँ से अपने पूर्ण पथ का उपयोग करके बैच फ़ाइल चलाएँ। आप वास्तव में वीडियो के साथ क्या करना चाहते हैं? ये किस तरह के वीडियो हैं? क्या आपको उन्हें एक एमपीजी कंटेनर में स्थानांतरित करने की आवश्यकता है? या क्या आपको उनका आकार बदलने की आवश्यकता है? या क्या आपको विशेष रूप से msmpeg4v2कोडेक की आवश्यकता है ?
15

फाइलें एक डीवीआर से निकाल ली जाती हैं और 1 जीबी 5 मिनट की क्लिप से अधिक होती हैं। हाँ DVR सॉफ्टवेयर संपीड़न में दयनीय है। कोडेक काम करता है क्योंकि यह 1MB फ़ाइलों को लगभग 7MB फ़ाइलों को लेता है जो अधिक प्रबंधनीय हैं। और जब उस बैच को चलाने की कोशिश की जा रही है तो मुझे "इस समय फ़ाइल अप्रत्याशित थी" संदेश।
डेरियस

समझा। यदि आप परिणामी वीडियो कोडेक और कंटेनर की परवाह नहीं करते हैं, तो मैं आपको इसके बजाय एक एनकोडर के रूप में x264 का उपयोग करने का सुझाव दूंगा, जिसके परिणामस्वरूप एमपीईजी -4 की तुलना में बहुत बेहतर गुणवत्ता है। कमांड कुछ ऐसा होगा ffmpeg -i input.avi -c:v libx264 -crf 23 -s 640x480 output.mp4जहां सीआरएफ मूल्य गुणवत्ता निर्धारित करता है (कम बेहतर है, अधिक खराब है, 19 से 24 तक वैल्यू मान है)। यह भी देखें: पुराने वीडियो को छोटे आकार में परिवर्तित करें और .MOV फ़ाइल के आकार को कम करने के लिए मुझे क्या पैरामीटर देखना चाहिए?
slhck

जवाबों:


26

आपकी बैच फ़ाइल विंडोज बैट स्क्रिप्ट के लिए सही प्रारूप में नहीं है। इसके बजाय आपकी स्क्रिप्ट ऐसी दिखती है जैसे यह लिनक्स के लिए थी। आपको Windows शेल द्वारा समर्थित लूप के लिए स्क्रिप्ट को बदलने की आवश्यकता होगी ।

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

for %%A IN (*.avi) DO ffmpeg -i "%%A" "%%A.mpg"

इस के साथ मैं[NULL @ 000000000037e360] Unable to find a suitable output format for 'outputfile.avi.mpg;' outputfile.avi.mpg:: Invalid argument
Darius

1
लाइन के अंत से उस अर्ध-उपनिवेश को हटाने की आवश्यकता है
ब्रेट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.