כיצד פועל קובץ דחיסה?
מהנדסי תוכנה פיתחו תמיד דרכים חדשות של התאמת נתונים רבים למרחב קטן. זה היה נכון כאשר הכוננים הקשיחים שלנו היו זעירים, ואת ההתגלות של האינטרנט יש רק עשה את זה יותר קריטי. דחיסת קבצים משחקת תפקיד גדול בחיבור, ומאפשרת לנו לשלוח פחות נתונים לאורך הקו, כדי שנוכל לקבל הורדות מהירות יותר ולהתאים יותר חיבורים לרשתות עמוסות.
אז איך זה עובד?
כדי לענות על שאלה זו יהיה כרוך להסביר כמה מתמטיקה מסובך מאוד, בהחלט יותר ממה שאנחנו יכולים לכסות במאמר זה, אבל אתה לא צריך להבין בדיוק איך זה עובד מתמטית כדי להבין את היסודות.
הספריות הפופולריות ביותר עבור דחיסת טקסט להסתמך על שני אלגוריתמים דחיסה, תוך שימוש בו זמנית כדי להשיג יחסי דחיסה גבוהים מאוד. שני האלגוריתמים האלה הם "LZ77" ו- "Huffman coding". קידוד האפמן מסובך למדי, ואנחנו לא נכנסים לפרטים על זה כאן. בעיקר, הוא משתמש במתמטיקה מהודרת להקצות קצר יותר קודי בינארי - - כדי אותיות בודדות, מתכווץ גודל הקובץ בתהליך. אם אתה רוצה ללמוד עוד על זה, לבדוק את המאמר על איך עובד קוד, או להסביר את זה על ידי Computerphile.
LZ77, לעומת זאת, היא פשוטה יחסית וזה מה שאנחנו מדברים כאן. היא מבקשת להסיר מילים כפולות ולהחליף אותם עם "מפתח" קטן יותר המייצג את המילה.
קח קטע קצר זה של טקסט לדוגמה:
האלגוריתם LZ77 היה מסתכל על הטקסט הזה, מבין שהוא חוזר על "howtogeek" שלוש פעמים, ולשנות את זה:
לאחר מכן, כאשר הוא רוצה לקרוא את הטקסט בחזרה, זה יחליף כל מופע של (h) עם "howtogeek", מחזיר אותנו אל הביטוי המקורי.
אנחנו קוראים דחיסה כמו זה "lossless", הנתונים שאתה שם הוא זהה לנתונים שאתה יוצא. שום דבר לא אבוד.
במציאות, LZ77 אינו משתמש ברשימה של מפתחות, אבל במקום מחליף את המופע השני והשלישי עם קישור חזרה בזיכרון:
אז עכשיו, כאשר זה מגיע (h), זה יחזור אחורה "howtogeek" ולקרוא את זה במקום.
אם אתה מעוניין בהסבר מפורט יותר, וידאו זה מהמחשב הוא די מועיל.
עכשיו, זה דוגמה אידיאלי. במציאות, רוב הטקסט הוא דחוס עם מפתחות קטנים כמו רק כמה תווים. לדוגמה, המילה "" תידחס גם כאשר היא מופיעה במילים כמו "שם", "שלהם", "ואז". עם טקסט חוזר, אתה יכול לקבל כמה יחסי דחיסה מטורפים. קח את קובץ הטקסט הזה עם המילה "howtogeek" חזר 100 פעמים. קובץ הטקסט המקורי הוא שלושה קילו-בתים. כאשר דחוס, אם כי, זה רק לוקח 158 בתים. זה כמעט 95% דחיסה.
עכשיו ברור, זה דוגמה קיצונית למדי, כי אנחנו רק אותה מילה חזר שוב ושוב. באופן כללי בפועל, סביר להניח שאתה מקבל סביב 30-40% דחיסה באמצעות פורמט דחיסה כמו ZIP על קובץ זה בעיקר טקסט.
זה אלגוריתם LZ77 חל על כל הנתונים הבינאריים, אגב, ולא רק טקסט, אם כי בדרך כלל טקסט קל יותר לדחוס בשל כמה מילים חוזרות ביותר השפות להשתמש. שפה כמו סינית עשויה להיות קצת יותר קשה לדחוס מאשר אנגלית, למשל.
כיצד עובד תמונה דחיסת וידאו?
דחיסת וידאו ושמע פועלת בצורה שונה לחלוטין. שלא כמו עם טקסט שבו אתה יכול לקבל דחיסה lossless, ואין נתונים אבוד, עם תמונות יש לנו מה שנקרא "דחיסה Lossy" שבו אתה מאבד כמה נתונים. וככל שאתה דוחס יותר, הנתונים יותר אתה מאבד.
זה מה שמוביל אותם JPEGs נורא להסתכל שאנשים נטלו, משותף, ו screenshoted פעמים רבות. בכל פעם התמונה נדחס, הוא מאבד כמה נתונים.
הנה דוגמה. זה צילום מסך שלקחתי כי לא נדחס בכלל.
אז צילמתי את המסך וניהלתי אותו באמצעות Photoshop מספר פעמים, בכל פעם לייצא אותו כ- JPEG באיכות נמוכה. הנה התוצאה.
נראה די רע, נכון?
ובכן, זה רק במקרה הגרוע ביותר, ייצוא ב 0% איכות JPEG בכל פעם. לשם השוואה, הנה איכות JPEG 50%, אשר כמעט שאין להבחין בין התמונה PNG המקור, אלא אם כן לפוצץ אותו ולראות מקרוב.
PNG עבור תמונה זו היה 200 KB בגודל, אבל זה 50% איכות JPEG הוא רק 28 KB.
אז איך זה לשמור כל כך הרבה מקום? ובכן, האלגוריתם JPEG הוא הישג של הנדסה. רוב התמונות לאחסן רשימה של מספרים, עם כל מספר המייצג פיקסל אחד.
JPEG אינו עושה זאת. במקום זאת, הוא מאחסן תמונות באמצעות משהו הנקרא "קוסינוס בדידים טרנספורמציה", שהוא אוסף של גלי סינוס הוסיף יחד בעוצמות שונות. הוא משתמש 64 משוואות שונות, אבל רוב אלה אינם מתרגלים. זה מה מחוון איכות JPEG ב Photoshop ו Apps אחרים התמונה עושה לבחור כמה משוואות להשתמש. היישומים מכן להשתמש קידוד Huffman כדי להקטין את גודל הקובץ עוד יותר.
זה נותן JPEGs יחס דחיסה גבוה בטירוף, אשר יכול להפחית קובץ זה יהיה מגה בייטים מרובים עד כמה קילובייט, בהתאם לאיכות. כמובן, אם אתה משתמש בו יותר מדי, אתה בסופו של דבר עם זה:
הדימוי הזה נורא. אבל כמויות קטנות של דחיסת JPEG יכולה להיות השפעה משמעותית על גודל הקובץ, וזה עושה JPEG מאוד שימושי עבור דחיסת תמונות באתרי אינטרנט. רוב התמונות שאתה רואה באינטרנט דחוסים כדי לשמור על זמני ההורדה, במיוחד עבור משתמשים ניידים עם חיבורי נתונים גרועים. למעשה, כל התמונות על How-To Geek כבר דחוס כדי להפוך את הדף טעינה מהירה יותר, ואתה כנראה לא שם לב.
דחיסת וידאו
וידאו עובד קצת שונה מהתמונות. היית חושב שהם פשוט לדחוס כל מסגרת של וידאו באמצעות JPEG, והם בהחלט לעשות את זה, אבל יש שיטה טובה יותר עבור וידאו.
אנו משתמשים במשהו הנקרא "דחיסת interframe", המחשבת את השינויים בין כל מסגרת ורק מאחסנת אותם. אז, למשל, אם יש לך יורה עדיין יחסית זה לוקח כמה שניות בסרטון, הרבה מקום נשמר כי האלגוריתם דחיסה לא צריך לאחסן את כל הדברים בסצנה זה לא משתנה. דחיסה Interframe היא הסיבה העיקרית שיש לנו טלוויזיה דיגיטלית וידאו באינטרנט בכלל. ללא הסרטון, הסרטונים יהיו מאות ג 'יגה בייט, יותר מגודל הכונן הקשיח הממוצע בשנת 2005 כאשר YouTube הושק.
כמו כן, מאז דחיסת interframe עובד הכי טוב עם וידאו נייח בעיקר, זו הסיבה confetti חורבות איכות הווידאו.
הערה: GIF אינו עושה זאת, ולכן קבצי GIF מונפשים הם לרוב קצרים וקטנים מאוד, אך עדיין יש להם גודל קובץ גדול למדי.
דבר נוסף שיש לזכור על וידאו הוא bitrate שלה - כמות הנתונים מותר בכל שנייה. אם bitrate שלך הוא 200 kb / s, למשל, הווידאו שלך ייראה די רע. איכות עולה כמו bitrate עולה, אבל אחרי כמה מגה בייט לשנייה, אתה מקבל תשואות פוחת.
זוהי מסגרת zoomed נלקח מתוך וידאו של מדוזה. אחד בצד שמאל הוא ב 3Mb / s, ואחד בצד ימין הוא 100Mb / s.
גידול של 30x בגודל הקובץ, אבל לא הרבה עלייה באיכות. בדרך כלל, סרטוני YouTube יושבים סביב 2-10Mb / s בהתאם לחיבור שלך, כמו כל דבר יותר כנראה לא יהיה שם לב.
הדגמה זו פועלת טוב יותר עם וידאו בפועל, כך שאם אתה רוצה לבדוק את זה בעצמך, אתה יכול להוריד את אותם קטעי וידאו הבדיקה bitrate בשימוש כאן.
דחיסת אודיו
דחיסת אודיו פועלת באופן דומה מאוד לדחיסת טקסט ותמונה. כאשר JPEG מסיר פרטים מתמונה שאינך רואה, דחיסת שמע זהה עבור צלילים. אולי אתה לא צריך לשמוע את חריקת של גיטרה לבחור על חוט אם הגיטרה בפועל הוא הרבה, הרבה יותר חזק.
MP3 גם משתמש bitrate, החל סוף נמוך של 48 ו 96 kbps (סוף נמוך) עד 128 ו 240kbps (די טוב) כדי 320kbps (high-end Audio), ואתה סביר להניח רק לשמוע את ההבדל עם אוזניות טובות במיוחד ( ואת האוזניים).
יש גם רכיבי codec דחיסה lossless עבור אודיו, הראשי להיות FLAC - אשר משתמש קידוד LZ77 לספק אודיו ללא אובדן לחלוטין. כמה אנשים נשבע על ידי איכות שמע מושלמת של FLAC, אבל עם השכיחות של MP3, נראה שרוב האנשים או לא יכול להגיד או לא אכפת את ההבדל.