前陣子,有一款視頻壓縮工具在網(wǎng)絡(luò)上火了。這個(gè)工具叫做 tools.rotato.app,只需要在網(wǎng)頁上傳視頻,就能給你幾乎無損地壓縮到原視頻的10%左右大小。 然后你可以下載壓縮好的視頻,也可以在網(wǎng)頁上快速對(duì)比壓縮前后的視頻質(zhì)量。 這個(gè)工具背后其實(shí)是利用ffmpeg這個(gè)強(qiáng)大的開源多媒體工具,對(duì)視頻進(jìn)行了轉(zhuǎn)碼和壓縮的操作。 你在電腦上安裝一下ffmpeg,也可以用一行命令實(shí)現(xiàn)類似效果: ffmpeg -i "input.mp4" -c:v libx264 -tag:v avc1 -movflags faststart -crf 30 -preset superfast "output.mp4" 而如果你希望通過Python代碼進(jìn)行視頻壓縮,則可以使用ffmpeg-python庫來實(shí)現(xiàn): import ffmpegdef compress_video(input_file, output_file, target_size_mb=50): # 獲取輸入視頻的信息 probe = ffmpeg.probe(input_file) # 獲取視頻流信息 video_stream = next((stream for stream in probe['streams'] if stream['codec_type'] == 'video'), None) # 獲取原始視頻的比特率 original_bitrate = int(video_stream['bit_rate']) # 計(jì)算目標(biāo)比特率(假設(shè)音頻比特率為128k) target_total_bitrate = (target_size_mb * 8192) / (int(video_stream['duration'])) target_video_bitrate = target_total_bitrate - 128 # 確保目標(biāo)視頻比特率不低于原始比特率的10% min_bitrate = original_bitrate * 0.1 if target_video_bitrate < min_bitrate: target_video_bitrate = min_bitrate # 設(shè)置輸出參數(shù) output_params = { 'vcodec': 'libx264', 'acodec': 'aac', 'video_bitrate': str(int(target_video_bitrate)), 'audio_bitrate': '128k' } # 進(jìn)行視頻壓縮 ( ffmpeg .input(input_file) .output(output_file, **output_params) .overwrite_output() .run() ) print(f"視頻已壓縮并保存為 {output_file}")# 使用示例input_file = 'input_video.mp4'output_file = 'compressed_video.mp4'compress_video(input_file, output_file, target_size_mb=50) 通過代碼調(diào)用的好處是可以更靈活地與其他任務(wù)整合,比如批量壓縮。 從算法原理上來說,對(duì)于視頻的壓縮,一方面是對(duì)單幀畫面內(nèi)容的壓縮,比如大片的藍(lán)天,信息量較少,就可以用更少的空間來存儲(chǔ)。另一方面是對(duì)不同幀之間內(nèi)容的壓縮,比如一段連續(xù)的場(chǎng)景,背景都是相同的,只有少部分區(qū)域在變化,就可以只記錄變化的部分。 那既然視頻可以很容易地壓到這么小,為什么我們不直接用壓縮好的視頻呢? 答案是:已經(jīng)用上了 現(xiàn)在你在視頻平臺(tái)上看到的,基本上全是壓縮過的視頻。 但問題也來了:前面我們說到,這種壓縮是「幾乎」無損。換句話說,那就是有質(zhì)量上的損失。只不過這種損失不仔細(xì)看不太看得出來。 前陣子,頭部視頻UP主『影視颶風(fēng)』就做了一期視頻,分析了現(xiàn)在各大平臺(tái)上的視頻畫質(zhì),結(jié)果甚至不如四年前清晰。而這里面主要原因,就是因?yàn)檫x擇了更高壓縮率的編碼方式和更低的碼率。 雖說壓縮是幾乎無損,但不同人對(duì)于這個(gè)「幾乎」的感知是不一樣的。有的人用手機(jī)看短視頻,對(duì)于畫質(zhì)的要求就不那么重要;而有的人用高清顯示器看大片,則更容易感覺到壓縮帶來的模糊。 因此視頻壓縮在這個(gè)問題上已經(jīng)不單單是一個(gè)技術(shù)問題。 它也是一個(gè)商業(yè)問題:既然大多數(shù)觀眾不太能感覺出來,而壓縮后更小的體積可以為公司節(jié)省大量的流量成本,那么在觀眾可接受的范圍內(nèi)盡可能壓到極致就是一個(gè)商業(yè)公司的最佳選擇。 那到底什么程度才算是用戶可接受的?這沒有一個(gè)定量上的標(biāo)準(zhǔn)。 就好比,假如你寫一行代碼就會(huì)掉一根頭發(fā)。但滿頭秀發(fā)的你,多掉一根也不并會(huì)變禿。那么再多掉一根呢?再多掉一根呢?再多掉一根呢…… 直到最后,你禿了,也變強(qiáng)了。但到底什么時(shí)候收手可以讓自己算不上禿,又足夠強(qiáng)呢?沒人說得清。 于是這甚至上升到了一個(gè)哲學(xué)問題。 或許他們的想法就是,不斷在用戶容忍度的邊緣瘋狂試探,直到有很多人表示不可接受為止。 而幾年前的「高清」時(shí)代,也只是平臺(tái)高速增長期,賠本賺吆喝的「燒錢」行為,恐怕無法再重現(xiàn)。 除非像美劇《硅谷》中一樣,從技術(shù)上實(shí)現(xiàn)一種無損的、超高壓縮率,同時(shí)編解碼效率又極高的壓縮算法。目前來看,這是一個(gè)不可能三角。 如果真的有這樣的算法,那么絕對(duì)可以像劇中主角團(tuán)隊(duì)一樣,獲得巨大的商業(yè)價(jià)值,甚至再次改變世界。 |
|