ffmpeg - मौजूदा मीडिया फ़ाइल से एन्कोडिंग सेटिंग्स को कॉपी करने के लिए कैसे?


19

मैं चाहता था कि अब मैं कई बार ऐसा कर सकूं।

अगर मैं एक मौजूदा वीडियो या ऑडियो फ़ाइल, है ffmpeg, mplayerऔर मीडिया प्लेयर के कोडेक कंटेनर की तरह यह है "propreties" के कुछ कम से कम पता लगा सकते हैं, और उपयोग बिटरेट, शायद विभिन्न गुणवत्ता और एन्कोडिंग विशिष्ट सेटिंग, आदि

Ffmpeg के साथ एन्कोडिंग के लिए (सीधे) उनका उपयोग करने के लिए मैं किसी मौजूदा फ़ाइल से इन सेटिंग्स को कैसे निकाल सकता हूं?

उदाहरण के लिए, मुझे कुछ सेटिंग्स और दूसरी असम्पीडित फ़ाइल के mkvसाथ एक वीडियो मिला है । मैं एक ही सेटिंग्स के साथ AVI ट्रांसकोड करने के लिए x264 mkv फ़ाइल के लिए इस्तेमाल किया एन्कोडिंग सेटिंग्स "कॉपी" करना चाहते हैं।x264avi

नोट: मैं एक ऐसे रास्ते की तलाश कर रहा हूं जिसमें डिकोडर से एनकोडर में सेटिंग्स को "अनुवाद" करने के साथ कोई मानव कार्य शामिल नहीं होना चाहिए। यह ठीक है अगर मुझे पहले सेटिंग्स को निकालने और इसे कहीं बचाने की आवश्यकता है, लेकिन मैं बस एक कमांड लाइन या प्रीसेट के लिए पढ़े विकल्पों को फीड करने में सक्षम होना चाहूंगा। ffmpeg के लिए कॉन्फ़िगरेशन फ़ाइल।


ठीक है, आप शायद ffprobe(विशेषकर -show_streamsऔर -show_formatविकल्पों के साथ) के आउटपुट के माध्यम से
छाँट सकते हैं

1
अक्सर एक ही सेटिंग का उपयोग करना, जैसे कि बिटरेट (सटीक बिटरेट की नकल करने का प्रयास करना उपयोगकर्ताओं के बीच लोकप्रिय लगता है), इसके परिणामस्वरूप इष्टतम गुणवत्ता नहीं होगी। बेशक, मुझे कोई सुराग नहीं है कि आपका विशिष्ट इनपुट कैसा है, लेकिन -crfविकल्प के x264 उपयोग के साथ आमतौर पर सिफारिश की जाती है। देखें FFmpeg और x264 एन्कोडिंग गाइड
ललगन

मैं ffprobe के आउटपुट में एन्कोडिंग सेटिंग्स के बारे में कुछ भी नहीं पा सकता :(
lolcat

यह केवल ReFrames की संख्या दिखाता है, लेकिन अन्य सेटिंग्स जैसे mediainfo नहीं करता है
Thelolcat

Ffmpeg के साथ इनपुट सिंटैक्स मेटाडेटा फ़ील्ड से भिन्न होता है। उदाहरण के लिए आप channels:6एक वीडियो फ़ाइल से पढ़ सकते हैं , लेकिन इसे एनकोड करने के लिए आपको स्विच का उपयोग करना होगा -ch:6। कुछ स्विच 1 अक्षर का उपयोग करते हैं, कुछ दो का उपयोग करते हैं, आदि
जिगगंजर

जवाबों:


10

ऐसा करने का कोई स्वचालित तरीका नहीं है। आपको मूल फ़ाइल के मापदंडों को देखना होगा और उन्हें आउटपुट फ़ाइल पर लागू करना होगा।

ज्यादातर मामलों में, ये निम्नलिखित होंगे:

  • कंटेनर प्रारूप (MP4, MKV,…)
  • वीडियो और ऑडियो कोडेक (H.264, H.265,…)
  • ऑडियो-विशिष्ट:
    • ऑडियो चैनलों की संख्या
    • ऑडियो नमूनाकरण दर
    • गानों का बिट - रैट
  • वीडियो-विशिष्ट:
    • प्रोफ़ाइल और स्तर (संगतता सुनिश्चित करने के लिए, यहां देखें )
    • अधिकतम बिटरेट सीमाएँ (उदाहरण के लिए H.264 )
    • अधिकतम वीडियो रिज़ॉल्यूशन, द्वारा -filter:v scaleया के माध्यम से बदलें-s:v
    • फ्रैमरेट, के माध्यम से बदलें -filter:v fps -r
    • क्रोमा सबसम्पलिंग, परिवर्तन के माध्यम से -pix_fmt(जैसे, -pix_fmt yuv420pआपको सबसे अच्छी संगतता देनी चाहिए)
    • GOP आकार (IDR- फ्रेम के बीच की दूरी), के माध्यम से सेट करें -g
    • अन्य विशिष्ट एन्कोडिंग सेटिंग्स

लेकिन यहां तक ​​कि अगर आपको लगता है कि सब ठीक है, तो कुछ उपकरणों को बिटस्ट्रीम में एम्बेडेड विशिष्ट, मालिकाना जानकारी की आवश्यकता हो सकती है।


उपयोग के विशिष्ट कार्य के लिए x264, यह तुच्छ नहीं होने जा रहा है। मुझे एक भी स्क्रिप्ट की जानकारी नहीं है जो इन कार्यों की देखभाल करेगी, जो आमतौर पर मैन्युअल रूप से किए जाते हैं। एन्कोडिंग सेटिंग्स के बारे में सबसे अधिक जानकारी के लिए, यूनिक्स / लिनक्स या ओएस एक्स पर, आप mediainfoकुछ बैश ट्रिक के साथ उपयोग कर सकते हैं ।

उदाहरण के लिए, एक MP4 फ़ाइल में x264- एन्कोडेड वीडियो के लिए:

mediainfo input.mp4 | grep "Encoding settings" | cut -d':' -f2- | tr '/' '\n' | sed 's/ //'

यह x264 विकल्पों की सूची का उत्पादन करेगा:

cabac=1
ref=3
deblock=1:-1:-1
analyse=0x3:0x113
me=hex
subme=7
psy=1
…

आप तब इन विकल्पों को x264 बाइनरी में मैन्युअल रूप से पास कर सकते हैं।

यदि आप FFmpeg से गुजरते हैं, तो यह थोड़ा अधिक जटिल है, क्योंकि x264 के सभी विकल्प इस तरह नहीं हो सकते हैं या होना चाहिए। ध्यान दें कि अक्सर एक साधारण पूर्व निर्धारित, धुन और प्रोफ़ाइल विनिर्देश के रूप में अच्छी तरह से (के रूप में के रूप में देखा क्या करेंगे x264 --fullhelpऔर x264 एन्कोडिंग गाइड ), और सीआरएफ स्तर निर्दिष्ट करना पर्याप्त है।

और यह ऑडियो पर विचार भी नहीं कर रहा है, जहां सौभाग्य से, वहाँ कई विकल्प नहीं हैं।


तो यह ffprobe या ffmpeg के साथ संभव नहीं है?
18

नहीं, यह सीधे ffprobe / ffmpeg के साथ करना संभव नहीं है । X264- एन्कोडेड वीडियो के मामले में, मैं mediainfoआउटपुट का उपयोग करूंगा और इन विकल्पों को मैप करूँगा -x264-params। ( X264 एन्कोडिंग गाइड भी देखें )। लेकिन अगर आप सभी प्रकार के कोडेक्स / एन्कोडर्स या कंटेनर फॉर्मेट्स के लिए एक सामान्य समाधान चाहते हैं, तो आपको एक मामूली परिष्कृत स्क्रिप्ट लिखना होगा जो रूपांतरण करता है।
slhck
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.