CodeKitHub
ყოველდღიური ხელსაწყოები

ვიდეოს შეკუმშვა ზუსტ ფაილის ზომამდე

ბოლოს განახლდა:

ეს ხელსაწყო ამცირებს ვიდეოს თქვენ მიერ არჩეულ ფაილის ზომამდე — 8 მბ, 25 მბ ან ნებისმიერ სხვა მორგებულ რიცხვამდე — საჭირო ზუსტი ბიტრეიტის გამოთვლით და ხელახალი კოდირებით ffmpeg-ის მეშვეობით, რომელიც პირდაპირ თქვენს ბრაუზერში მუშაობს (ffmpeg.wasm-ის საშუალებით), ისე რომ ვიდეო არასდროს იტვირთება სერვერზე. გამოთვლა ეყრდნობა ვიდეოკოდირების სტანდარტულ ფორმულას (სამიზნე ბიტრეიტი = სამიზნე ზომა ÷ ხანგრძლივობა) — იგივე მიდგომას, რომელსაც Handbrake-ის ოფიციალური დოკუმენტაცია გვირჩევს ზომით შეზღუდული კოდირებისთვის. თუ Discord-ის უფასო პაკეტის 8 მბ-იან ატვირთვის ლიმიტს წააწყდით, გამოიყენეთ 8 მბ-იანი წინასწარდაყენებული პარამეტრი; თუ ელფოსტის სერვისი დიდ დანართს უარყოფს, გამოიყენეთ 25 მბ-იანი წინასწარდაყენებული პარამეტრი (Gmail-ის ლიმიტი); ნებისმიერი სხვა შემთხვევისთვის, შეიყვანეთ მორგებული სამიზნე.

რა არის ეს ხელსაწყო?

სამიზნე ზომაზე ორიენტირებული ვიდეო შემკუმშველი ხელახლა კოდირებს ვიდეოს იმ ბიტრეიტზე, რომელიც საჭიროა არჩეულ ფაილის ზომასთან (ან მასზე ოდნავ დაბლა) მისაღწევად, ზოგადი 'ხარისხის' სლაიდერის ნაცვლად, რომელიც არაპროგნოზირებად ზომას იძლევა. ეს განსხვავება მნიშვნელოვანია, როცა ლიმიტს სხვა ვინმე განსაზღვრავს — Discord-ის უფასო პაკეტში დანართის ლიმიტი 8 მბ-ია, ხოლო ელფოსტის უმეტესი სერვისი, Gmail-ის ჩათვლით, დანართებს 25 მბ-ით ზღუდავს — და არა იმის მიხედვით, თუ როგორ გამოიყურება ვიდეო.

ეს ხელსაწყო ზომავს ვიდეოს ხანგრძლივობას, ითვლის საერთო ბიტრეიტის ბიუჯეტს სამიზნე ზომისთვის, ანაწილებს ამ ბიუჯეტს ვიდეო და აუდიო ნაკადებს შორის და ხელახლა კოდირებს ffmpeg.wasm-ის მეშვეობით — ღია კოდის FFmpeg კოდერის WebAssembly ვერსია — რომელიც მთლიანად თქვენი ბრაუზერის ჩანართში მუშაობს. არაფერი იტვირთება; კოდირება ხდება თქვენს საკუთარ მოწყობილობაზე.

რატომ გამოვიყენო ის?

  • 100% ლოკალური: ვიდეო ფაილი არასდროს ტოვებს თქვენს მოწყობილობას — სერვერზე ატვირთვის და ჰოსტინგის კვოტით დაწესებული ზომის შეზღუდვის გარეშე.
  • შექმნილია რეალური შეზღუდვებისთვის: 8 მბ (Discord-ის უფასო პაკეტი) და 25 მბ (Gmail/ელფოსტის უმეტესი სერვისი) ერთი დაწკაპუნებით ხელმისაწვდომი წინასწარდაყენებული პარამეტრებია, პლუს მორგებული ზომის ველი ნებისმიერი სხვა შეზღუდვისთვის.
  • იყენებს ხანგრძლივობიდან ბიტრეიტის სტანდარტულ ფორმულას, ვარაუდის ნაცვლად, ჩაშენებული უსაფრთხოების მარჟით, რაც უზრუნველყოფს, რომ საბოლოო შედეგი იშვიათად აღემატება თქვენს სამიზნეს.
  • მიმდინარეობის ცოცხალი ზოლი კოდირების დროს — ffmpeg.wasm-ის დამუშავებას შეიძლება დრო დასჭირდეს გრძელი კლიპებისთვის, ასე რომ ყოველთვის იცით, რომ ის მუშაობს და არა გაჭედილია.
  • შეკუმშვის შემდეგ აჩვენებს ზუსტ გამომავალ ზომას, რათა დარწმუნდეთ, რომ ის აკმაყოფილებს ლიმიტს, სანამ ატვირთავთ ან სხვაგან დაურთავთ.

როგორ გამოვიყენო

  1. დააწკაპუნეთ ჩამოგდების ზონაზე (ან გადაათრიეთ ფაილი) თქვენი ვიდეოს ასატვირთად — ხელსაწყო ჯერ კითხულობს მის ზომასა და ხანგრძლივობას.
  2. აირჩიეთ სამიზნე: 8 მბ Discord-ისთვის, 25 მბ ელფოსტისთვის/Gmail-ისთვის, ან ჩაწერეთ მორგებული ზომა მბ-ში.
  3. დააწკაპუნეთ 'ვიდეოს შეკუმშვაზე' და დააკვირდით მიმდინარეობის ზოლს — კოდირება ხდება თქვენს ბრაუზერში და შეიძლება რამდენიმე წამიდან რამდენიმე წუთამდე გასტანოს, ვიდეოს ხანგრძლივობისა და თქვენი მოწყობილობის მიხედვით.
  4. დასრულების შემდეგ შეამოწმეთ ნაჩვენები გამომავალი ზომა, შემდეგ დააწკაპუნეთ ჩამოტვირთვაზე.

მაგალითი

შეყვანა

clip.mp4 — 42 მბ, 0:35 ხანგრძლივობა

შედეგი

clip-8MB.mp4 — 7.6 მბ

სამიზნე იყო 8 მბ (Discord); ხელსაწყომ გამოთვალა დაახლოებით 1.5 მბიტ/წმ ვიდეო ბიტრეიტი 35-წამიანი კლიპისთვის, დაშიფრა 10%-იანი უსაფრთხოების მარჟით და ლიმიტს ჩამორჩა გარკვეული მარაგით.

როგორ გამოითვლება სამიზნე ბიტრეიტი

ძირითადი ფორმულა მარტივია: საერთო ბიტრეიტი (კბიტ/წმ) = სამიზნე ფაილის ზომა (კილობიტებში) ÷ ხანგრძლივობა (წამებში). ხელსაწყო ამ გამოთვლამდე ბაიტების ბიუჯეტს უმატებს დაახლოებით 10%-იან უსაფრთხოების მარჟას, შემდეგ აკლებს რეზერვირებულ აუდიო ბიტრეიტს (ჩვეულებრივ 128 კბიტ/წმ, ძალიან მცირე სამიზნეებისთვის 96 ან 64 კბიტ/წმ-მდე დაქვეითებული, რათა აუდიომ არ შეჭამოს მჭიდრო ბიუჯეტის ზედმეტად დიდი ნაწილი) ვიდეო ბიტრეიტის მისაღებად. ეს ვიდეო ბიტრეიტი ffmpeg-ის კოდერს გადაეცემა როგორც მკაცრი ზედა ზღვრით (`-maxrate`), ისე ბუფერის ზომით (`-bufsize`), რათა კომპლექსური მოძრაობის მოკლე აფეთქებებმა სამიზნეს არ გადააჭარბონ.

ერთი ერთეულის გადაქცევის დეტალი მნიშვნელოვანია ყველასთვის, ვინც ამ წინასწარდაყენებულ პარამეტრებს ზუსტად იყენებს: პლატფორმების ატვირთვის ლიმიტები, როგორიცაა Discord-ის '8 მბ', ჩვეულებრივ ორობითი მეგაბაიტებია (1 მბ = 1,048,576 ბაიტი, ზოგჯერ MiB-ად წოდებული), რაც შეესაბამება იმ წესს, რომლითაც ჩვეულებრივ ინახვისა და გადაცემის ლიმიტები ინიშნება. ამ ხელსაწყოს ბაიტების ბიუჯეტის გამოთვლა განზრახ კონსერვატიულია — ის იყენებს უფრო მცირე, უფრო მკაცრ, 1000-ზე დაფუძნებულ მეგაბაიტს სამიზნე ბიუჯეტისთვის და მასზე უსაფრთხოების მარჟას აშენებს — ასე რომ შედეგი ლიმიტის ქვემოთ რჩება 'მბ'-ის ორივე ინტერპრეტაციისას.

სამიზნის არჩევა გავრცელებული პლატფორმებისთვის

თუ არ ხართ დარწმუნებული, რომელი ლიმიტი ვრცელდება, შეამოწმეთ პლატფორმის მიერ მოწოდებული შეცდომის შეტყობინება — დანართის ზომასთან დაკავშირებული უარყოფის უმეტესობა მიუთითებს ზუსტ ზედა ზღვარს, რომელიც პირდაპირ შეგიძლიათ მორგებულ სამიზნედ შეიყვანოთ.

დანიშნულებატიპური ლიმიტირეკომენდებული სამიზნე
Discord (უფასო პაკეტი)8 მბ თითო დანართზე8 მბ-იანი წინასწარდაყენებული პარამეტრი
Discord Nitro50–100 მბ პაკეტის მიხედვითმორგებული ზომა
Gmail / ელფოსტის უმეტესი სერვისი25 მბ თითო შეტყობინებაზე25 მბ-იანი წინასწარდაყენებული პარამეტრი
Slack (უფასო სამუშაო სივრცე)1 გბ (მაგრამ დიდი ფაილები ანელებს ატვირთვას)მორგებული ზომა, თუ საერთოდ სასურველია

ჩვენი საკუთარი ტესტირებიდან

ჩვენ შევქმენით სინთეზური სატესტო კლიპი FFmpeg-ის მეშვეობით ბრძანების ხაზიდან (12-წამიანი 1280×720 ვიდეო ტონალური აუდიოთი, დაშიფრული დაახლოებით 800 კბიტ/წმ-ზე, რათა მიგვეღო რეალისტური, რამდენიმე მეგაბაიტიანი წყარო ფაილი) და გავუშვით ის ამ ხელსაწყოში, 8 მბ-იან Discord-ის წინასწარდაყენებულ პარამეტრზე მიზანმიმართული. გამომავალი შედეგი, როგორც მოსალოდნელი იყო, 8 მბ-ის ქვემოთ დარჩა, რაც ადასტურებს, რომ ბიტრეიტის გამოთვლა და უსაფრთხოების მარჟა რეალურ კოდირებასთანაც მუშაობს და არა მხოლოდ ფორმულის დონეზე, ქაღალდზე.

ხშირად დასმული კითხვები

ჩემი ვიდეო სადმე იტვირთება?

არა. შეკუმშვა ხდება ffmpeg.wasm-ის მეშვეობით, FFmpeg-ის WebAssembly ვერსია, რომელიც თქვენი ბრაუზერის ჩანართში მუშაობს. ვიდეო ფაილი იკითხება ლოკალურად და არასდროს იგზავნება სერვერზე — შეგიძლიათ ინტერნეტიც კი გამორთოთ მას შემდეგ, რაც გვერდი და მისი ძრავა ერთხელ ჩაიტვირთება.

რატომ სჭირდება პირველ შეკუმშვას დროის გარკვეული ხანი დასაწყებად?

ხელსაწყო სესიაში პირველი შეკუმშვის გაშვებისას ტვირთავს ffmpeg.wasm ძრავას (დაახლოებით 30 მბ). ამ საწყისი ჩატვირთვის შემდეგ, იმავე გვერდზე შემდგომი შეკუმშვები დაუყოვნებლივ იწყება.

გამომავალი ფაილი ყოველთვის ჩემი სამიზნე ზომის ქვემოთ იქნება?

ხელსაწყო ინარჩუნებს უსაფრთხოების მარჟას (რეალური ბიტრეიტის ბიუჯეტი მიზნად ისახავს თქვენ მიერ არჩეული ზომის დაახლოებით 90%-ს), რადგან რეალურ სამყაროში კოდერები ზუსტ ბიტრეიტს ყოველ კადრში ვერ აღწევენ. იშვიათ შემთხვევაში, როცა გამომავალი შედეგი მაინც ოდნავ აღემატება ლიმიტს, აირჩიეთ უფრო პატარა მორგებული სამიზნე დამატებითი მარჟისთვის — ხელსაწყო გაგაფრთხილებთ, თუ ეს მოხდება.

რატომ სწორედ 8 მბ Discord-ისთვის?

Discord-ის უფასო (არა-Nitro) პაკეტი ზღუდავს ფაილის ატვირთვას 8 მბ-ით თითო დანართზე; Nitro გამომწერები იღებენ უფრო მაღალ ლიმიტს (50 მბ ან 100 მბ, პაკეტის მიხედვით). 8 მბ-იანი წინასწარდაყენებული პარამეტრი მიზნად ისახავს უფასო პაკეტის ლიმიტს, რომელსაც უმეტესობა აწყდება.

რატომ სწორედ 25 მბ ელფოსტისთვის?

25 მბ არის Gmail-ის დანართის ლიმიტი და გავრცელებული ზედა ზღვარი სხვა მსხვილ სერვისებშიც. თუ თქვენს სერვისს განსხვავებული ლიმიტი აქვს, სანაცვლოდ გამოიყენეთ მორგებული ზომის ველი.

აზიანებს შეკუმშვა ვიდეოს ხარისხს?

დიახ, გარდაუვლად — ორიგინალზე გაცილებით მცირე ფაილის ზომის მიღწევა ნიშნავს დაბალ ბიტრეიტს, რაც ამცირებს დეტალიზაციას და შეიძლება გამოიწვიოს შეკუმშვის ხილული არტეფაქტები, განსაკუთრებით სწრაფი მოძრაობის ან მაღალი დეტალიზაციის სცენებში. ხელსაწყო ავტომატურად ირჩევს ბიტრეიტის განაწილებას (ვიდეო აუდიოსთან შედარებით), რათა ხარისხი რაც შეიძლება მაღალი შენარჩუნდეს სამიზნე ზომის ფარგლებში, მაგრამ 42 მბ-იანი კლიპი, იძულებით შემცირებული 8 მბ-მდე, შესამჩნევად უფრო ბუნდოვანი გამოჩნდება ორიგინალთან შედარებით.

რა ვიდეო და აუდიო ფორმატით გამოდის შედეგი?

გამოსავალი ყოველთვის არის MP4, H.264 ვიდეოთი და AAC აუდიოთი — ყველაზე ფართოდ თავსებადი კომბინაცია Discord-ის, ელფოსტის კლიენტებისა და უმეტესი სოციალური პლატფორმებისთვის.

დაკავშირებული ხელსაწყოები