2012-05-26 27 views
5

का उपयोग कर ffmpeg के साथ mp4 फ़ाइलों को ogg में कनवर्ट करने के लिए बैच कैसे करें मैं एक ओएसएक्स चला रहा हूं, वीडियो रूपांतरणों के बारे में बहुत कुछ नहीं जानता। लेकिन मुझे 200 वीडियो पसंद हैं जो सभी एमपी 4 प्रारूप में हैं और फ़ायरफ़ॉक्स में नहीं खेलेंगे। मुझे एचटीएमएल 5 वीडियो टैग का उपयोग करने के लिए उन्हें अंडे में बदलने की जरूरत है।बैश कमांड या रूबी

ये फ़ाइलें एक फ़ोल्डर संरचना में रहती हैं जो एक समय में फ़ाइलों को करना मुश्किल बनाती है। मुझे बैश कमांड या रूबी कमांड को सभी बच्चे फ़ोल्डरों के माध्यम से जाना होगा और सभी .mp4 को ढूंढना होगा और उन्हें रूपांतरित करना होगा।

मैं Google के साथ ऐसा करने से एक संदर्भ पाया: http://athmasagar.wordpress.com/2011/05/12/a-bash-script-to-convert-mp4-files-to-oggogv/

#!/bin/bash 
for f in $(ls *mp4 | sed ‘s/\(.*\)\..*/\1/’) 
do 
ffmpeg -i $f.mp4 -acodec vorbis -vcodec libtheora $f.ogg 
done 

लेकिन यह कैसे linux से OSX में बदलने के लिए पता नहीं है।

+0

विकल्प '-समैक' का अर्थ 'समान गुणवत्ता' नहीं है [https://ffmpeg.org/trac/ffmpeg/wiki/Option%20'-sameq'%20does%20NOT%20mean%20'same%20quality '] (https://ffmpeg.org/trac/ffmpeg/wiki/Option%20%27-sameq%27%20does%20NOT%20mean%20%27same%20quality%27) –

+0

यह उत्तर प्रासंगिक नहीं है सवाल यह है कि यह उस विकल्प का उपयोग करने का कोई संदर्भ नहीं देता है। – depa

उत्तर

8

अपने सवाल का सीधा जवाब इस तरह होगा जबकि:

#!/bin/bash 
MOVIES=~/Movies/ 
find "$MOVIES" -name '*.mp4' -exec sh -c 'ffmpeg -i "$0" -sameq "${0%%.mp4}.ogg"' {} \; 
exit; 

मुझे लगता है कि आप VP8 or webm codec का उपयोग कर के रूप में यह आप ज्यादा बेहतर परिणाम देने और Firefox के आधुनिक संस्करणों में वास्तव में preferred है जाएगा बेहतर परिणाम मिल सकते हैं । यह देखते हुए कि आप इस प्रयास करना चाहिए:

#!/bin/bash 
MOVIES=~/Movies/ 
find "$MOVIES" -name '*.mp4' -exec sh -c 'ffmpeg -i "$0" -sameq "${0%%.mp4}.webm"' {} \; 
exit; 

इन तरीकों में से दोनों अपने जिसके परिणामस्वरूप वीडियो में गुणवत्ता का एक नुकसान होगा के रूप में वे फिर से एन्कोडिंग पहले से ही इनकोडिंग सामग्री और मेरी राय में, कर रहे हैं यहां तक ​​कि webm कोडेक h.264 कोडेक का उपयोग कर ठीक से एन्कोडेड एमपी 4 के रूप में लगभग उतना अच्छा नहीं है।

+0

किसी भी तरह से कमांड में गुणवत्ता सुधारने के लिए फ्रेम दर या अन्य सेटिंग्स सेट करने के लिए ffmpg का उपयोग करने के लिए? –

+0

निश्चित रूप से -आर टैग फ्रेम दर सेट करेगा और आप बिट दर को -b: v टैग के साथ सेट कर सकते हैं ताकि आप इस तरह कुछ उपयोग कर सकें: '#!/Bin/bash MOVIES = ~/Movies/ " $ MOVIES "-name '* .mp4' -exec sh -c 'ffmpeg -i" $ 0 "-r 23.976 -b: v 800k -bt 800k -sameq -sameq" $ {0 %%। Mp4} .webm "' {} \; बाहर निकलें; ' –

+0

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

5

यह रूबी उपयोग कर रहा है, यह मानते हुए ffmpeg आप इस्तेमाल सही है:

Dir.glob("**/*.mp4").each do |filename| 
    new_filename = File.join(
    File.dirname(filename), 
    "#{File.basename(filename, ".mp4")}.ogg") 
    `ffmpeg -i "#{filename}" -acodec vorbis -vcodec libtheora "#{new_filename}"` 
end 

Dir.glob "**/*.mp4" साथ रिकर्सिवली उपनिर्देशिका witha .mp4 विस्तार के भीतर सभी फाइलों को मेल खाता है।

+0

जवाब के लिए धन्यवाद, लेकिन यह रिटर्न: माणिक convert.rb convert.rb: 3: '

में ब्लॉक में ': अपरिभाषित स्थानीय चर या विधि' फ़ाइल' मुख्य के लिए: ऑब्जेक्ट (NameError) किसी भी विचार –