python操作ffmpeg,做視頻轉(zhuǎn)碼【上篇】

      網(wǎng)友投稿 2553 2025-04-01

      本篇博客要落地的場景是使用 python + ffmpeg 實現(xiàn)將 mp4 文件轉(zhuǎn)換為 m3u8 格式視頻。

      為了更好的結(jié)合二者,我們先學(xué)習(xí)一下 ffmpeg 如何使用。

      ffmpeg

      打開其下載頁面進行下載,下載按鈕選擇 windows builds from gyan.dev ,在新打開的頁面中,在參考下述鏈接。

      解壓下載文件,將 bin 目錄配置到環(huán)境變量中,例如橡皮擦本地的地址為:

      F:\ffmpeg_full\bin

      然后在控制臺中運行如下命令,查看是否配置成功。

      C:\Users\Administrator>ffmpeg -version ffmpeg version 2022-01-03-git-68d0a7e446-full_build-www.gyan.dev Copyright (c) 2000-2022 the FFmpeg developers

      運用 ffmpeg

      先看一下 ffmpeg 相關(guān)參數(shù)信息:

      ffmpeg 1 2 -i 3 4 5

      全局參數(shù);

      輸入文件參數(shù);

      輸入文件;

      輸出文件參數(shù);

      輸出文件。

      常用命令行參數(shù),這些內(nèi)容還是參考雷神的文檔最佳。

      最簡單的轉(zhuǎn)換

      ffmpeg -i input.avi output.mp4

      如果解析過程中出現(xiàn)如下BUG,一般情況下是視頻本身的問題。

      [h264 @ 0x58c8900] Error splitting the input into NAL units.

      截取視頻的前5s(通過代碼邏輯,也可以截取視頻前10%)

      ffmpeg -ss 00:00:15 -t 00:00:05 -i 輸入視頻.mp4 -vcodec copy -acodec copy 輸出視頻.mp4

      -ss:開始切割時間;

      -t:結(jié)束切割時間;

      -vcodec copy:強制使用 codec 編解碼方式,如果用copy表示原始編解碼數(shù)據(jù)必須被拷貝(轉(zhuǎn)雷神描述),可以簡寫為 -c:v copy;

      -acodec copy:同上,可以簡寫為 -c:a copy

      如果單純的想要查看視頻信息,使用如下命令即可

      ffmpeg -i 輸入視頻.mp4

      視頻文件直接屬性可查看相關(guān)參數(shù)。

      數(shù)據(jù)速率就是視頻碼率;

      總比特率是視頻碼率加上音頻碼率;

      降低碼率

      使用如下命令可以降低碼率,間接的降低文件大小。

      ffmpeg -i 輸入文件.mp4 -b:v 500k -bufsize 500k 輸出文件.mp4

      碼率的計算參考下述公式

      bitrate(碼率) = file_size(文件大小) / duration(時長),單位是 `kb/s`

      例如一個 100M的文件,時長為10分鐘,那么碼率是

      biterate = 100Mbit/600s = 100*1024*1024*8bit/600s ≈ 1390kbps

      音頻的碼率一般是 128kbps ,上述值包含音頻的碼率,減去 128 之后就是視頻的總碼率了

      上述命令中參數(shù)相關(guān)含義是:

      -b:v:控制平均碼率;

      python操作ffmpeg,做視頻轉(zhuǎn)碼【上篇】

      -bufsize:用于設(shè)置碼率控制緩沖器的大小,減少波動。

      修改視頻分辨率

      將輸入的 1920x1080 縮小到 960x540 輸出

      ffmpeg -i 輸入視頻.mp4 -vf scale=960:540 輸出視頻.mp4

      如果 540 不寫,寫成 -1 ,即 scale=960:-1 ,ffmpeg會保持原始的寬高比。

      截取視頻圖像

      ffmpeg -i 輸入視頻.mp4 -r 1 -q:v 2 -f image2 pic-%03d.jpeg

      -r:每間隔幾秒抓取一幀;

      -q:v:存儲jpeg的圖像質(zhì)量,2是高質(zhì)量

      也可以依據(jù)時間進行截取

      ffmpeg -i 輸入視頻.mp4 -ss 00:00:00 -t 1 -r 1 -q:v 2 -f image2 pic-%03d.jpeg

      -ss:開始時間

      -t :共要多少時間

      上述命令表示從視頻起點,間隔1秒,獲取一幀作為圖片。

      還可以使用如下命令進行截取

      ffmpeg -i 輸入視頻.mp4 -y -f image2 -t 0.001 -s 960x540 a.jpg

      還可以用關(guān)鍵幀去獲取

      ffmpeg -i 輸入視頻.mp4 -y -f image2 -frames 1 a.jpg ffmpeg -i 輸入視頻.mp4 -vf "scale=iw/2:ih/2" b.png

      ffmpeg 轉(zhuǎn)換 mp4 為 m3u8 文件

      ffmpeg -i 輸入視頻 -profile:v baseline -level 3.0 -start_number 0 -hls_time 60 -hls_list_size 10 -f hls demo1.m3u8

      -start_number number:設(shè)置播放列表中最先播放的索引號,默認 0;

      -hls_time seconds:設(shè)置段長度,單位秒,默認為2;

      -hls_list_size size:設(shè)置播放列表中字段最大數(shù)。如果為0,則包含所有分段,默認為5;

      -profile:v baseline -level 3.0:H.264畫質(zhì)級別控制,本部分知識可以另行學(xué)習(xí);

      由于上述命令轉(zhuǎn)碼之后,生成的文件名如下所示,所以需要修改視頻切片的名稱生成規(guī)則,新增如下參數(shù) -hls_segment_filename video%07d.ts 。

      完整命令如下所示:

      ffmpeg -i 輸入視頻 -profile:v baseline -level 3.0 -start_number 0 -hls_time 60 -hls_segment_filename video%07d.ts -f hls demo1.m3u8

      最終轉(zhuǎn)換成高清與標清的 m3u8 命令如下:

      ffmpeg -i 輸入視頻.mp4 -codec:a aac -async 2 -ar 44100 -codec:v libx264 -hls_time 20 -hls_list_size 0 -threads 2 -max_muxing_queue_size 9999 -y demo.m3u8

      其中重要的參數(shù)有:

      -threads 0 自動選擇最大線程數(shù);

      -max_muxing_queue_size 1024:緩存大小;

      -ar freq: 設(shè)置音頻采樣率。

      轉(zhuǎn)碼成標清

      ffmpeg -i 輸入視頻.mp4 -codec:v libx264 -b:v 256k -maxrate 256k -bufsize 256k -bt 512k -hls_time 20 -hls_list_size 0 -threads 2 -max_muxing_queue_size 9999 -y demo2.m3u8

      Python 視頻 視頻轉(zhuǎn)碼

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:快速搭建項目管理
      下一篇:excel表格操作很卡的解決方法
      相關(guān)文章
      亚洲国产精品久久久久婷婷老年| 亚洲AV午夜成人片| 亚洲另类精品xxxx人妖| 亚洲成亚洲乱码一二三四区软件| 久久精品国产亚洲7777| 亚洲性猛交XXXX| 亚洲综合在线另类色区奇米| 国产成人综合亚洲AV第一页| 77777亚洲午夜久久多人| 亚洲午夜久久久久妓女影院| 国产精品久久久亚洲| 亚洲精品中文字幕乱码三区| 久久精品国产亚洲综合色| 亚洲国产精品无码久久一线| 国产亚洲综合久久系列| 亚洲av无码国产精品夜色午夜 | 国产∨亚洲V天堂无码久久久| 亚洲毛片αv无线播放一区| 国产亚洲美女精品久久久久狼| 亚洲国产精品无码专区在线观看| 亚洲AV日韩精品久久久久久| 亚洲自偷自拍另类12p| 亚洲色偷偷偷网站色偷一区| 亚洲人成片在线观看| 亚洲人成色在线观看| 国产大陆亚洲精品国产| 亚洲午夜福利精品久久| 亚洲中文字幕在线观看| 亚洲av日韩av天堂影片精品| 亚洲欧洲在线播放| 中文字幕在线观看亚洲日韩| 亚洲AV成人无码久久WWW| 精品亚洲一区二区三区在线播放| 国产v亚洲v天堂无码网站| 久久精品国产亚洲AV大全| 亚洲AV无码国产精品色| 亚洲AV无码成人精品区日韩 | 亚洲最大av无码网址| 亚洲AV永久无码精品水牛影视| 久久亚洲AV成人无码国产| 亚洲1234区乱码|