'অতীতের সময়কাল X.XXX খুব বড়' এর অর্থ কী?


142

Ffmpeg ব্যবহার করে এইচ .২64 enc এনকোডিং করার সময় আমি নিম্নলিখিত ধরণের সতর্কতাগুলি পেয়েছি se

Past duration 0.603386 too large
Past duration 0.614372 too large
Past duration 0.606377 too large

তাঁরা কি বোঝাতে চাইছেন? আমি অনলাইনে বা ffmpeg ডকুমেন্টেশনে পরিষ্কার কিছু খুঁজে পাইনি।


2
দয়া করে ffmpeg প্রশ্নগুলি video.stackexchange.com বিটাতে নির্দেশ করুন । Ffmpeg ট্যাগ বিবরণ দেখুন।
ওন্দ্র Žižka

34
@ অন্য একটি স্ট্যাকেক্সচেঞ্জও কি অন্যরকম? আমি এই 100+ সাবসাইটগুলির সাথে বিভ্রান্ত হচ্ছি, আমি নিশ্চিত নই যে এটি কোনও ইতিবাচক দিক যা স্ট্যাকেক্সচেঞ্জের দিকে যাচ্ছে is
mxMLnkn

1
@ এমএক্সএমএনএএনএন আমি সম্মত, এটি আপনাকে সহজ সময়ের জন্য দীর্ঘায়িত করে ... :)
এরিক

4
আমি ভাবছি এটাই সেটা. স্ট্যাকওভারফ্লো প্রোগ্রামিংয়ের জন্য, এটি প্রোগ্রামিং নয়। ভিডিও প্রসেসিংয়ের জন্য একটি প্রশ্নোত্তর সাইট রয়েছে, এটি ভিডিও প্রসেসিং সম্পর্কে একটি প্রশ্ন। কি বোঝার দরকার নেই?
ওন্দ্রা Žižka

ট্যাগ বিবরণ পড়ুন।
ওন্দ্র Žižka

উত্তর:


23

আমি একটি বিশেষ এনকোড দিয়ে এই হাজার হাজার সতর্কতা পাচ্ছিলাম। আমি 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 যুক্ত করেছি। তাতে কোনও উন্নতি হয়নি। আমি-ফ্রেমরেট ধরে রেখেছি এবং আউটপুট -r 60000/1001 যুক্ত করেছি। এখনও কিছু উন্নতি হয়নি। উভয়কেই ধরে রেখে শেষ পর্যন্ত আমি 1 -vncnc 1 যুক্ত করেছিলাম This এটি আমার একক সতর্কতা পেয়েছিল এবং এটিই যথেষ্ট। এই প্রার্থনাটি ছিল:

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

মিডিয়াআইএনফো থেকে বিস্তারিত ডাম্পে আমি যে পার্থক্যটি পেয়েছি তা হ'ল মূল অনুরোধে পাওয়া এই লাইনটি অপসারণ করা তবে দ্বিতীয়টিতে নয়:

Delay relative to video                  : -33ms

যাইহোক, আমি ফাইলগুলির শুরুতে এবং শেষের নিকটে A / V সিঙ্কটি পরীক্ষা করে দেখেছি এবং দুটি ফাইলের মধ্যে সিঙ্কের ক্ষেত্রে কোনও বিভেদযুক্ত পার্থক্য নেই। তাদের চলমান সময়গুলিও একই ছিল, তবে এটি কেবলমাত্র ভিএলসির নিকটবর্তী দ্বিতীয়টিতে পরিমাপ করা হয়েছিল। সুতরাং আমি ffmpeg এর মত ফ্রেম গণনাগুলি পরীক্ষা করেছিলাম:

ffmpeg -i output.mkv -map 0:v:0 -c copy -f null -

এবং আউটপুট শেষে "ফ্রেম = #" খুঁজছেন।

উত্সটির ভিডিওটি দেখা গেছে 375226 ফ্রেম লম্বা, আসল প্রার্থনাটি 375195 ফ্রেম পেয়েছে এবং দ্বিতীয় আহ্বানটি 375200 পেয়েছিল So সুতরাং দ্বিতীয় অনুরোধে খুব কম সতর্কতা বার্তা সহ 5 টি কম ফ্রেমও নামিয়েছে।

পরবর্তী পরীক্ষায় দেখা গেছে যে-ফ্রেমারেট এবং -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।


2
এই জন্য আপনাকে ধন্যবাদ! সমস্যাগুলির দিন পরে, -async 1 -vsync 1এটি আমার জন্য স্থির করুন।
অফক

1
এই বিশ্লেষণের জন্য ধন্যবাদ @ অ্যালারি খুব সহায়ক
গভীরতর করুন

90

সোর্সফোর্জ উপর DVDStyler প্রকল্পের জন্য রক্ষণাবেক্ষণকারীকে মধ্য থেকে একজন বলল এই এটি সম্পর্কে:

15 জানুয়ারী 2015 এর পরে এফএফএমপিগ সংস্করণগুলি প্রায়শই এই সতর্কতা প্রদর্শন করে। সম্ভাব্য হার নিয়ন্ত্রণের বিকৃতি সম্পর্কে সতর্ক করতে এটি যুক্ত করা হয়েছে, অন্যথায় এটি কোনও ক্ষতি করে না।


'হার নিয়ন্ত্রণ বিকৃতি' (মূলত ভিডিও) এনকোডিংয়ের সাথে সম্পর্কিত এবং এই সতর্কতার সাথে কোনও সম্পর্ক নেই, যা ইনপুট টাইমস্ট্যাম্পের তুলনায় আউটপুট টাইমস্ট্যাম্পের তুলনায় অনেক বেশি (তুলনামূলকভাবে) কিনা
জ্ঞান

প্রথমবার কয়েকবার আমি সতর্কবার্তাটি পেয়েছিলাম আমি রূপান্তরটি বন্ধ করে দিয়েছিলাম, তবে এই পরামর্শটি আমাকে এটিকে চালিত হতে দেয় এবং সতর্কবার্তা কিছুক্ষণ পরে থামিয়ে দেয় এবং রূপান্তরটি সফলভাবে শেষ হয়েছিল। ধন্যবাদ।
আইআরটিএফএম

58

কম ফ্রেম রেট আউটপুটে উচ্চ ফ্রেম রেট উত্সকে এনকোড করার চেষ্টা করার সময় এই সতর্কতা বার্তাটি উপস্থিত হয় যার অর্থ ফ্রেমগুলি বাদ দেওয়া দরকার।


আমার এই ত্রুটি ছিল কারণ আমি একটি সিরিজের চিত্রগুলিকে একটি ভিডিওতে রূপান্তর করতে চেয়েছিলাম:

ffmpeg -i %05d.png -r 24 -c:v libx264 -crf 5 out.mkv

সমস্যাটি মনে হচ্ছে, যদি ইনপুটটির জন্য কোনও ফ্রেম রেট না দেওয়া হয় তবে 25 fps এর ফ্রেম রেট ধরে নেওয়া হয়:

Input #0, image2, from 'frames/%04d.bmp':
  Duration: 00:00:15.96, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: bmp, bgra, 920x650, 25 fps, 25 tbr, 25 tbn, 25 tbc

এটি এনকোড করা ফ্রেমের মোট সংখ্যাতেও দেখা যায়। আমার 400 টি চিত্র ছিল তবে উপরের কমান্ডটি কেবল 384 টি এনকোড করেছে:

frame=  384 fps= 68 q=-1.0 Lsize=   10931kB time=00:00:15.91 bitrate=5626.1kbits/s dup=0 drop=15    
video:10928kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.033807%

আউটপুট ফ্রেম হারের পরিবর্তে ইনপুট ফ্রেম হার সেট করে ত্রুটি বার্তাগুলি অদৃশ্য হয়ে যায়। তারপরে আউটপুট ফ্রেম রেটটি স্বয়ংক্রিয়ভাবে ইনপুট হওয়ার জন্য বেছে নেওয়া হবে। উপরন্তু নতুন ffmpeg সংস্করণে আপনি, সতর্ক কারণ যখন সঙ্গে পিএনজি চিত্র ব্যবহার আছে -iবিকল্প অথবা বরং image2বা v4l2ইনপুট বিন্যাস, আপনি ব্যবহার করতে হবে -framerateপরিবর্তে -rদেখুন ডকুমেন্টেশন -rবিকল্প

ffmpeg -framerate 24 -i %05d.png -c:v libx264 -crf 5 out.mkv

উভয়ই ইনপুট এবং আউটপুটের ফ্রেম রেট পৃথকভাবে নির্দিষ্ট করা সম্ভব:

ffmpeg -framerate 25 -i %05d.png -r 10 -c:v libx264 -crf 5 out.mkv

এই ক্ষেত্রে কেবল 161/400 ফ্রেম এনকোড করা হবে। অন্যান্য ফ্রেম অন্তর্বর্তী বাদ দেওয়া হবে। ত্রুটি বার্তাটিও অদৃশ্য হয়ে যায়, আমি অনুমান করি যে স্টাফাউটে স্প্যামিং করে ffmpeg ধীর না করার জন্য দেখুন:


3
"কারণ কেবলমাত্র -i বিকল্পের সাথে পিএনজি চিত্রগুলি ব্যবহার করার সময় আপনাকে -r এর পরিবর্তে ফ্রেমারেট ব্যবহার করতে হবে" - এটি আমার সমস্যাটিকে পুরোপুরি সমাধান করেছে, ধন্যবাদ!
বেনামে

1
কোনও ডাব্লুএমভি কে এমপুতে রূপান্তর করার চেষ্টা করতে গিয়ে -rযেখানে কাজ -framerateহয়নি তা ব্যবহার করে ।
1934286

+1 এবং আমি আপনাকে "সংক্ষিপ্তকরণ" শীর্ষে স্থানান্তরিত করার পরামর্শ দিই। আরও, এটি চিত্রগুলিকে ভিডিওতে রূপান্তর করার এবং আউটপুট ফ্রেমরেটকে আরও বাড়ানোর চেষ্টা করে এবং আউটপুটকে ত্বরান্বিত করার চেষ্টা করে। আমি এটি থেকে ffmpeg -pattern_type glob -i '*.jpg' -filter:v "setpts=0.25*PTS" -r 50 "$( date "+%Y-%m-%d_%H%M%S")-timelapse-x4-50fps.mp4"আর কোনও সতর্কবার্তা ছাড়াই এটি শুরু করেছি ffmpeg -framerate 50 -pattern_type glob -i '*.jpg' -filter:v "setpts=0.25*PTS" -r 50 "$( date "+%Y-%m-%d_%H%M%S")-timelapse-x4-50fps.mp4"( -framerate 50
ইনপুটটির

49

এ খুঁজছি সোর্স কোড এটা মনে করা হয় যে 0.6 থেকে একটি নির্দিষ্ট সীমা সেট বেশি আউটপুট প্রবাহে এক থেকে ইনপুট স্ট্রিম পৃথক মধ্যে (পয়েন্ট) উপস্থাপনা সময় মধ্যে পার্থক্য।

উত্স থেকে স্নিপেটস:

    delta0 = sync_ipts - ost->sync_opts;
    delta  = delta0 + duration;

...

        if (delta0 < 0 &&
        delta > 0 &&
        format_video_sync != VSYNC_PASSTHROUGH &&
        format_video_sync != VSYNC_DROP) {
        double cor = FFMIN(-delta0, duration);
        if (delta0 < -0.6) {
            av_log(NULL, AV_LOG_WARNING, "Past duration %f too large\n", -delta0);
        } else
            av_log(NULL, AV_LOG_DEBUG, "Cliping frame in rate conversion by %f\n", -delta0);
        sync_ipts += cor;
        duration -= cor;
        delta0 += cor;
    }

এটি কেবলমাত্র এক দ্রুত দৃষ্টি, তাই দয়া করে আরও গভীর খনন করুন feel


এই সমস্যাটিকে "ফিক্স" করতে, বা আউটপুট pts সুস্পষ্টভাবে সেট করতে আমরা কিছু করতে পারি?
বাওদাদ

1
আমি এই সমস্যাটির চারপাশের বিশদগুলি মনে রাখিনা, তবে "ঠিক" করে আপনি যদি সতর্কতা থেকে মুক্তি পেয়ে থাকেন তবে উপরের কোডের উপর ভিত্তি করে আপনি বিকল্পটি সন্ধান করতে পারেন format_video_sync = VSYNC_DROPবা format_video_sync = VSYNC_PASSTHROUGHদেখতে পারেন যে সেগুলির মধ্যে কোনওটি আপনার ব্যবহারের ক্ষেত্রে কার্যকর কিনা।
এরিক

ধন্যবাদ। আমি ফ্রেম হারটি সেটিংটি সুস্পষ্টভাবে -rএই সতর্কতাগুলিতে সুইচ "ফিক্সড" ব্যবহার করে খুঁজে পেয়েছি ।
বাওদাদ

1
ব্যক্তিগত অভিজ্ঞতা থেকে কিছু: আমার "অতীতের সময়কাল" বার্তা স্প্যামের সমস্যা ছিল এবং এটি স্থির করেছিলাম যে ইনপুট ফ্রেম রেটটি -r 25 দিয়ে জোর করে দিয়েছি, তবে তারপরে আমি অডিওটিকে ভারিভাবে সিঙ্কের বাইরে নিয়ে যেতে শুরু করেছি। -আর বিকল্পটি সরানো এবং অডিও ডিজাইঙ্ক প্রতিরোধ করতে "-Cnc 1 -vsync 1" ব্যবহার অডিও সমস্যাটিকে আটকা দিয়েছে, তবে "অতীতের সময়কাল" স্প্যামটি খুব বেশি চলে গেছে বলে মনে হচ্ছে।
জেসন ল্যাং

V 4.1 এবং তারপরে, লগ স্তরটি আপগ্রেড করা হয়েছে, সুতরাং এটি ডিফল্ট লগ স্তরে উপস্থিত হবে না।
জ্ঞান


1

কমান্ডটি আসলে হওয়া উচিত:

ffmpeg -loglevel quiet -i input_file.xyz ...

"শান্ত" প্যারামিটারের কোনও "-" উপসর্গ নেই, কারণ এটি কোনও বিকল্প নয়, "-লগেলভেল" বিকল্পের জন্য একটি মান।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.