मुझे इनमें से हजारों की चेतावनी एक विशेष एनकोड के साथ मिल रही थी। मैं 1080p वीडियो को 480p तक डाउन कर रहा था। एक संपादन बिंदु पर, जहां स्रोत लेजरडिस्क में एक दोष के कारण कुछ नीरस वीडियो था, ये संदेश आने लगे और फिर दिखाई दिए, मुझे लगता है, इसके बाद हर फ्रेम। वे इस छोटे अंश की तरह आगे बढ़ते रहे:
Past duration 0.901115 too large= 535031kB time=00:54:15.06 bitrate=1346.5kbits/s dup=0 drop=19 speed=1.15x
Last message repeated 31 times
Past duration 0.901115 too large= 535031kB time=00:54:15.62 bitrate=1346.3kbits/s dup=0 drop=19 speed=1.15x
Last message repeated 34 times
Past duration 0.901115 too large= 535031kB time=00:54:16.21 bitrate=1346.0kbits/s dup=0 drop=19 speed=1.15x
Last message repeated 36 times
Past duration 0.901115 too large= 535338kB time=00:54:16.83 bitrate=1346.5kbits/s dup=0 drop=19 speed=1.15x
Last message repeated 39 times
मूल ffmpeg मंगलाचरण यह था:
ffmpeg -i input.mp4 -s 720x480 -c:v libx264 -preset slower -crf 17 -c:a copy -y output.mkv
यहाँ दिए गए सुझावों के बाद मैंने पहली बार इनपुट में 60000/1001 को जोड़ा। इससे कुछ सुधार नहीं हुआ। मैं -framerate बनाए रखा और आउटपुट में -r 60000/1001 जोड़ा। फिर भी कुछ सुधार नहीं हुआ। दोनों को अंत में मैंने जोड़ा -async 1 -vsync 1. इसके परिणामस्वरूप मेरी एकल चेतावनी प्राप्त हुई, और यह सब है। वह मंगलाचरण था:
ffmpeg -i input.mp4 -framerate 60000/1001 -s 720x480 -c:v libx264 -preset slower -crf 17 -c:a copy -y output.mkv -r 60000/1001 -async 1 -vsync 1
एकमात्र अंतर जो मुझे MediaInfo से एक विस्तृत डंप में मिला था, वह मूल आह्वान में मिली इस लाइन को हटाने का था, लेकिन दूसरे स्थान पर नहीं:
Delay relative to video : -33ms
हालाँकि, मैंने फ़ाइलों की शुरुआत में और अंत के पास ए / वी सिंक की जाँच की, और दो फाइलों के बीच सिंक में कोई अंतर नहीं था। उनका चलने का समय भी समान था, लेकिन वह केवल निकटतम सेकंड के लिए मापा गया था, VLC में। इसलिए मैंने ffmpeg का उपयोग करके फ्रेम की गणना की जाँच की:
ffmpeg -i output.mkv -map 0:v:0 -c copy -f null -
और आउटपुट के अंत के पास "फ्रेम = #" की तलाश में।
स्रोत वीडियो 375226 फ्रेम लंबा था, मूल आह्वान 375195 फ्रेम निकला, और दूसरा आह्वान 375200 निकला। इसलिए दूसरा आह्वान, बहुत कम चेतावनी संदेशों के साथ 5 कम फ्रेम भी गिरा।
बाद के परीक्षण से पता चला है कि -framerate और -r अनावश्यक थे, और सिर्फ दो सिंक फ्लैग का उपयोग करना पर्याप्त था। यह ऊपर दिए गए दूसरे आह्वान के समान परिणाम देता है, इसलिए समस्या को हल करने के लिए मुझे मिला तीसरा और सबसे सरल आह्वान है:
ffmpeg -i input.mp4 -s 720x480 -c:v libx264 -preset slower -crf 17 -c:a copy -y output.mkv -async 1 -vsync 1
और फिर भी एक और फाइल ने बाद में सिंक फ्लैग के साथ भी इन चेतावनियों का एक समूह तैयार किया, लेकिन दर झंडे को "निश्चित" करके वापस जोड़ दिया (केवल हजारों चेतावनियों के बजाय दो का उत्पादन किया)। तो कभी-कभी दूसरा आह्वान काम करता है जब तीसरा नहीं होता है। अपने तात्कालिक उद्देश्यों के लिए मैं दूसरे आह्वान पर बसने जा रहा हूं और आशा करता हूं कि यह इन समस्याओं को ठीक कर देगा।
यह सब ffmpeg संस्करण 4.0 के साथ था।