FFmpeg - মুখের উপর ঝাপসা লাগান


23

আমি এফএফএমপিগ ব্যবহার করে একটি ভিডিওর একটি অংশ অস্পষ্ট করার চেষ্টা করছি (বিশেষত একটি মুখ ঝাপসা করার জন্য)।

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

আমি এমন কিছু আশা করছি:

-vf boxblur=enable='between(t,10,100)':width=20:height=20:x=400:y=200

যেখানে width/ heightঅস্পষ্ট বক্সের আকার এবং x/ yএটি অস্পষ্ট বক্সের অবস্থান।

এই সম্ভব ভালো কিছু হয়?

উত্তর:


31

কোনও বিভাগ / বিভাগে টেম্পোরাল এবং স্থানিক অস্পষ্টতা প্রয়োগ করা সম্ভব - আপনি যে অঞ্চলটি অস্পষ্ট করতে চান তা স্থির অবস্থান হিসাবে ধরে নেওয়া যায়।

কালো ল্যাব পুতুল
আসল কালো ল্যাব পিপ ইমেজ।

একটি মুখোশ ইমেজ ব্যবহার

এখানে চিত্র বর্ণনা লিখুনএখানে চিত্র বর্ণনা লিখুন
গ্রেস্কেল পিএনজি মাস্ক চিত্র এবং ফলস্বরূপ অস্পষ্ট চিত্র।

অস্পষ্ট অঞ্চলটি চিহ্নিত করতে আপনি গ্রেস্কেল মাস্ক চিত্র তৈরি করতে পারেন। ব্যবহারের সহজতার জন্য এটি যে চিত্র বা ভিডিওটি অস্পষ্ট করতে চান তার সমান আকারের হওয়া উচিত।

আলফরমার , বক্সব্লুর এবং ওভারলে ব্যবহারের উদাহরণ :

ffmpeg -i video.mp4 -i mask.png -filter_complex "[0:v][1:v]alphamerge,boxblur=10[alf];[0:v][alf]overlay[v]" -map "[v]" -map 0:a -c:v libx264 -c:a copy -movflags +faststart maskedblur.mp4
  • সাদা অঞ্চলটি যেখানে অস্পষ্টতা দেখা দেবে, তবে এটি সহজেই নেগেটিভ ফিল্টারের সাথে উদাহরণস্বরূপ বিপরীত করা যেতে পারে :[1:v]negate[mask];[0:v][mask]alphamerge,boxblur=10[alf]...

  • আপনি একটি গ্রেডিয়েন্টের মতো একটি মুখোশ তৈরি করতে জিক ফিল্টার ব্যবহার করতে পারেন ।

অস্পষ্ট নির্দিষ্ট অঞ্চল (একটি মুখোশ ছাড়াই)

ব্লার ল্যাব পিপ ব্লার এফেক্টের সাথে

ffmpeg -i derpdog.mp4 -filter_complex \
 "[0:v]crop=200:200:60:30,boxblur=10[fg]; \
  [0:v][fg]overlay=60:30[v]" \
-map "[v]" -map 0:a -c:v libx264 -c:a copy -movflags +faststart derpdogblur.mp4

দ্রষ্টব্য: ওভারলেতে x এবং y অফসেট নম্বরগুলি ( 60এবং 30এই উদাহরণে) অবশ্যই ক্রপ অফসেটের সাথে মেলে।

এই উদাহরণটি কী করে:

  1. ঝাপসা হওয়ার জায়গার আকার হতে কপিটি ক্রপ করুন। এই উদাহরণে: একটি 200x200 পিক্সেল বাক্স যা ডান ( xঅক্ষ) থেকে 60 পিক্সেল এবং yউপরের বাম কোণ থেকে 30 পিক্সেল ডাউন ( অক্ষ)।
  2. ফসলের জায়গাটি অস্পষ্ট করুন।
  3. ক্রপ ফিল্টার থেকে একই xএবং yপরামিতি ব্যবহার করে অস্পষ্ট অঞ্চলটি ওভারলে করুন ।

নির্দিষ্ট অঞ্চলগুলিতে একাধিক অস্পষ্টতা (কোনও মুখোশ ছাড়াই)

এখানে চিত্র বর্ণনা লিখুন
উপরে বাম দিকে, কাছাকাছি এবং নীচে অস্পষ্ট অঞ্চল।

"[0:v]crop=50:50:20:10,boxblur=10[b0]; \
 [0:v]crop=iw:30:(iw-ow)/2:ih-oh,boxblur=10[b1]; \
 [0:v]crop=100:100:120:80,boxblur=10[b2]; \
 [0:v][b0]overlay=20:10[ovr0]; \
 [ovr0][b1]overlay=(W-w)/2:H-h[ovr1]; \
 [ovr1][b2]overlay=120:80"

নির্দিষ্ট অঞ্চলটি অস্পষ্ট করা হয়নি (মুখোশ ছাড়াই)

এখানে চিত্র বর্ণনা লিখুন

"[0:v]boxblur=10[bg];[0:v]crop=200:200:60:30[fg];[bg][fg]overlay=60:30"

অতিরিক্ত জিনিস


আপনার প্রতিক্রিয়ার জন্য অনেক ধন্যবাদ। যে সব মহান জ্ঞান করে। পার্শ্ব নোট হিসাবে, এটি বিভক্ত ফিল্টারটি অবশেষে অর্থে তৈরি করেছে! এছাড়াও, গাণিতিক এক্সপ্রেশনগুলির মাধ্যমে চিত্রের অস্পষ্ট বাক্সটি গতিশীলভাবে স্থানান্তরিত করা সম্ভব হয়েছিল কি? আই-কে কোনও অ-রৈখিক ফ্যাশনে যাওয়ার সাথে সাথে কারও মুখ ঝাপসা করার উদ্দেশ্যে?
occvtech

আবার ধন্যবাদ! আমি এটি একটি ফাটল নিতে হবে। আমি জানি যে একটি অ-রৈখিক সম্পাদক এখানে 1000 গুণ সহজ হবে, তবে আমি একাধিক ফাইল ব্যাচ প্রক্রিয়া করার আশা করছি এবং আমদানি / কী ফ্রেম / রফতানি প্রক্রিয়াটি অপেক্ষা করতে চাই না। আবার ধন্যবাদ!
occvtech

1
এফএফএমপিইজি বাক্সগুলি যেমন চেনাশোনা ছাড়াও অন্যান্য আকার সরবরাহ করে?
সূর্যের

@ লর্ডনেকবার্ড আমি সিএমডি ব্যবহার করছি এবং আমি উদাহরণ 1 ব্যবহার করতে চাই তবে আমি কোডটি কার্যকর করি যখন আমি এই ত্রুটিটি পাইUnrecognized option 'filter_complex[0:v]crop=200:200:60:30,boxblur=10[fg];[0:v][fg]overlay=60:30[v]-map [v] -map 0:a -c:v libx264 -c:a copy -movflags +faststart output.mp4'. Error splitting the argument list: Option not found
জিম

1
@ জিম আমি লক্ষ্য করেছি যে আমার উদাহরণ কমান্ডের একটি উদ্ধৃতি নেই। আপনার কমান্ডটি দেখতে এরকম কিছু হওয়া উচিত:ffmpeg -i input.mp4 -filter_complex "[0:v]crop=200:200:60:30,boxblur=10[fg]; [0:v][fg]overlay=60:30[v]" -map "[v]" -map 0:a -c:v libx264 -c:a copy -movflags +faststart output.mp4
লগন

0

ক্ষেত্রে যখন কেউ অস্পষ্টতার ধারালো প্রান্তকে অপছন্দ করে, আমি এমন একটি স্ক্রিপ্ট তৈরি করেছি যা ধাপের বিভিন্ন ধরণের স্তরকে রাখে যাতে প্রান্তটি তীক্ষ্ণ না হয় এবং এটি দেখতে এরকম দেখায়:Softly_blurred_image

এর পরিবর্তে:আসল চিত্র

এটি একটি অজগর লিপি:

#!/usr/bin/env python3
import os,stat
def blur_softly(matrix,video_in="video_to_be_blurred.mp4",video_out=""):
    if video_out == "":
        video_out = video_in[:-4] + "_blurred" + video_in[-4:]
    s0 = "ffmpeg -i " + video_in + " -filter_complex \\\n\"[0:v]null[v_int0]; \\\n"
    s1 = ''
    a = 0
    for m in matrix:
        blur = m[6]
        multiple = m[7]
        width = m[0]+blur*multiple*2
        height = m[1]+blur*multiple*2
        x_cord = m[2]-blur*multiple
        y_cord = m[3]-blur*multiple
        timein = m[4]
        timeout = m[5]
        step = m[8]
        margin = m[9]
        for i in range(blur):
            ii = multiple*i
            s0 = s0 + "[v_int0]crop="+str(width-2*ii+(margin//2)*2)+":"+str(height-2*ii+(margin//2)*2)+":"+str(x_cord+ii-margin//2)+":"+str(y_cord+ii-margin//2) + \
            ",boxblur="+str((i+1)*step)+":enable='between(t,"+str(timein)+","+str(timeout)+ \
            ")',crop="+str(width-2*ii)+ ":"+str(height-2*ii)+":"+str(margin//2)+":"+str(margin//2)+ "[blur_int" + str(i+1+a)+"]; \\\n"
            s1 = s1 + "[v_int"+ str(i+a) +"][blur_int"+str(i+a+1)+"]overlay="+str(x_cord+ii)+":"+str(y_cord+ii)+":enable='between(t,"+str(timein)+","+str(timeout)+ ")'[v_int"+str(i+a+1)+"]; \\\n"
        a += i+1
    s = s0 + s1 + "[v_int"+str(a)+"]null[with_subtitles]\" \\\n-map \"[with_subtitles]\" -map 0:a -c:v libx264 -c:a copy -crf 17 -preset slow -y "+video_out+"\n"
    print(s)
    file_object = open('blur.sh', 'w')
    file_object.write(s)
    file_object.close()
    st = os.stat('blur.sh')
    os.chmod('blur.sh', st.st_mode | stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH)
#w,h,x,y,timein,timeout,blur,multiple,step,margin
matrix = [[729,70,599,499,14.96,16.40,25,1,1,90],]
blur_softly(matrix,video_in="your_video.mp4",video_out="output_video.mp4")

আপনি শেষ এবং পেনাল্টিমেট লাইনে প্যারামিটারগুলি পরিবর্তন করতে পারেন, কোটেশন চিহ্নগুলির মধ্যে শেষ দুটি প্যারামিটারগুলি আপনার ভিডিও এবং আউটপুট ভিডিওর পথ (এগুলি ধরে নিই যে তারা কার্যনির্বাহী ডিরেক্টরিতে স্থাপন করেছেন)। পেনাল্টিমেট লাইনে:

  • প্রথম দুটি সংখ্যা প্রাথমিক ক্ষেত্রের আকার নির্দেশ করে যেখানে সর্বাধিক অস্পষ্টতা প্রয়োগ করা হবে,
  • দ্বিতীয় দুটি এটি x এবং y এর সমন্বয়কে নির্দেশ করে,
  • তৃতীয় দুটি সেকেন্ডের মধ্যে সময়গুলি নির্দেশ করে যখন অস্পষ্টতা প্রয়োগ করা উচিত,
  • এই উদাহরণে "25" ইঙ্গিত দেয় যে একে অপরের উপরে 25 টি বাক্স প্রয়োগ করা হবে)
  • পরবর্তী "1" ইঙ্গিত দেয় যে কম ঝাপসা রঙের বড় বক্সগুলি তাদের পূর্বসূরীদের চেয়ে মাত্র এক পিক্সেল প্রশস্ত হওয়া উচিত
  • দ্বিতীয় "1" ইঙ্গিত দেয় যে অস্পষ্টতা একের বেশি হওয়া উচিত যতক্ষণ না সর্বোচ্চ 25 (উপরে থেকে) না হওয়া পর্যন্ত
  • "30" অস্পষ্ট প্রয়োগের জন্য বিবেচনায় নেওয়া মার্জিনকে নির্দেশ করে, সুতরাং এটি বৃদ্ধি করা অস্পষ্টতাটিকে এর আশেপাশের আরও সম্মান করে। এই মানটি বৃদ্ধি করা যেমন পাঠ্য ত্রুটিও সমাধান করেInvalid chroma radius value 21, must be >= 0 and <= 20

এটি চালিয়ে গেলে, নিম্নলিখিত ব্যক্তির মতো একটি আউটপুট পাওয়া উচিত (এটি কোনও ফাইল লেখা হয় যা আউটপুটটিতে চালানো এবং মুদ্রণ করা যায় যা কপিপাস্ট করা যায় এবং চালানো যেতে পারে):

ffmpeg -i video_to_be_blurred.mp4 -filter_complex \
"[0:v]null[v_int0]; \
[v_int0]crop=869:210:529:429,boxblur=1:enable='between(t,14.96,16.4)',crop=779:120:45:45[blur_int1]; \
[v_int0]crop=867:208:530:430,boxblur=2:enable='between(t,14.96,16.4)',crop=777:118:45:45[blur_int2]; \
[v_int0]crop=865:206:531:431,boxblur=3:enable='between(t,14.96,16.4)',crop=775:116:45:45[blur_int3]; \
[v_int0]crop=863:204:532:432,boxblur=4:enable='between(t,14.96,16.4)',crop=773:114:45:45[blur_int4]; \
[v_int0]crop=861:202:533:433,boxblur=5:enable='between(t,14.96,16.4)',crop=771:112:45:45[blur_int5]; \
[v_int0]crop=859:200:534:434,boxblur=6:enable='between(t,14.96,16.4)',crop=769:110:45:45[blur_int6]; \
[v_int0]crop=857:198:535:435,boxblur=7:enable='between(t,14.96,16.4)',crop=767:108:45:45[blur_int7]; \
[v_int0]crop=855:196:536:436,boxblur=8:enable='between(t,14.96,16.4)',crop=765:106:45:45[blur_int8]; \
[v_int0]crop=853:194:537:437,boxblur=9:enable='between(t,14.96,16.4)',crop=763:104:45:45[blur_int9]; \
[v_int0]crop=851:192:538:438,boxblur=10:enable='between(t,14.96,16.4)',crop=761:102:45:45[blur_int10]; \
[v_int0]crop=849:190:539:439,boxblur=11:enable='between(t,14.96,16.4)',crop=759:100:45:45[blur_int11]; \
[v_int0]crop=847:188:540:440,boxblur=12:enable='between(t,14.96,16.4)',crop=757:98:45:45[blur_int12]; \
[v_int0]crop=845:186:541:441,boxblur=13:enable='between(t,14.96,16.4)',crop=755:96:45:45[blur_int13]; \
[v_int0]crop=843:184:542:442,boxblur=14:enable='between(t,14.96,16.4)',crop=753:94:45:45[blur_int14]; \
[v_int0]crop=841:182:543:443,boxblur=15:enable='between(t,14.96,16.4)',crop=751:92:45:45[blur_int15]; \
[v_int0]crop=839:180:544:444,boxblur=16:enable='between(t,14.96,16.4)',crop=749:90:45:45[blur_int16]; \
[v_int0]crop=837:178:545:445,boxblur=17:enable='between(t,14.96,16.4)',crop=747:88:45:45[blur_int17]; \
[v_int0]crop=835:176:546:446,boxblur=18:enable='between(t,14.96,16.4)',crop=745:86:45:45[blur_int18]; \
[v_int0]crop=833:174:547:447,boxblur=19:enable='between(t,14.96,16.4)',crop=743:84:45:45[blur_int19]; \
[v_int0]crop=831:172:548:448,boxblur=20:enable='between(t,14.96,16.4)',crop=741:82:45:45[blur_int20]; \
[v_int0]crop=829:170:549:449,boxblur=21:enable='between(t,14.96,16.4)',crop=739:80:45:45[blur_int21]; \
[v_int0]crop=827:168:550:450,boxblur=22:enable='between(t,14.96,16.4)',crop=737:78:45:45[blur_int22]; \
[v_int0]crop=825:166:551:451,boxblur=23:enable='between(t,14.96,16.4)',crop=735:76:45:45[blur_int23]; \
[v_int0]crop=823:164:552:452,boxblur=24:enable='between(t,14.96,16.4)',crop=733:74:45:45[blur_int24]; \
[v_int0]crop=821:162:553:453,boxblur=25:enable='between(t,14.96,16.4)',crop=731:72:45:45[blur_int25]; \
[v_int0][blur_int1]overlay=574:474:enable='between(t,14.96,16.4)'[v_int1]; \
[v_int1][blur_int2]overlay=575:475:enable='between(t,14.96,16.4)'[v_int2]; \
[v_int2][blur_int3]overlay=576:476:enable='between(t,14.96,16.4)'[v_int3]; \
[v_int3][blur_int4]overlay=577:477:enable='between(t,14.96,16.4)'[v_int4]; \
[v_int4][blur_int5]overlay=578:478:enable='between(t,14.96,16.4)'[v_int5]; \
[v_int5][blur_int6]overlay=579:479:enable='between(t,14.96,16.4)'[v_int6]; \
[v_int6][blur_int7]overlay=580:480:enable='between(t,14.96,16.4)'[v_int7]; \
[v_int7][blur_int8]overlay=581:481:enable='between(t,14.96,16.4)'[v_int8]; \
[v_int8][blur_int9]overlay=582:482:enable='between(t,14.96,16.4)'[v_int9]; \
[v_int9][blur_int10]overlay=583:483:enable='between(t,14.96,16.4)'[v_int10]; \
[v_int10][blur_int11]overlay=584:484:enable='between(t,14.96,16.4)'[v_int11]; \
[v_int11][blur_int12]overlay=585:485:enable='between(t,14.96,16.4)'[v_int12]; \
[v_int12][blur_int13]overlay=586:486:enable='between(t,14.96,16.4)'[v_int13]; \
[v_int13][blur_int14]overlay=587:487:enable='between(t,14.96,16.4)'[v_int14]; \
[v_int14][blur_int15]overlay=588:488:enable='between(t,14.96,16.4)'[v_int15]; \
[v_int15][blur_int16]overlay=589:489:enable='between(t,14.96,16.4)'[v_int16]; \
[v_int16][blur_int17]overlay=590:490:enable='between(t,14.96,16.4)'[v_int17]; \
[v_int17][blur_int18]overlay=591:491:enable='between(t,14.96,16.4)'[v_int18]; \
[v_int18][blur_int19]overlay=592:492:enable='between(t,14.96,16.4)'[v_int19]; \
[v_int19][blur_int20]overlay=593:493:enable='between(t,14.96,16.4)'[v_int20]; \
[v_int20][blur_int21]overlay=594:494:enable='between(t,14.96,16.4)'[v_int21]; \
[v_int21][blur_int22]overlay=595:495:enable='between(t,14.96,16.4)'[v_int22]; \
[v_int22][blur_int23]overlay=596:496:enable='between(t,14.96,16.4)'[v_int23]; \
[v_int23][blur_int24]overlay=597:497:enable='between(t,14.96,16.4)'[v_int24]; \
[v_int24][blur_int25]overlay=598:498:enable='between(t,14.96,16.4)'[v_int25]; \
[v_int25]null[with_subtitles]" \
-map "[with_subtitles]" -map 0:a -c:v libx264 -c:a copy -crf 17 -slow preset -y video_to_be_blurred_blurred.mp4

ব্লারি প্রান্তগুলি অর্জনের সহজ উপায় সম্পর্কে যদি কেউ জানে তবে আমি আগ্রহী হব। এছাড়াও, এটি বরং ধীর।
sup

মাস্কে মার্জ হওয়ার আগে একটি বাক্সের ঝাপসা লাগান।
জ্ঞান

@ জ্ঞান মানে কি? আমি মনে করি আমি ইতিমধ্যে এটি করছি।
sup

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