精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

神器 ffmpeg :操作視頻,極度舒適

開發 后端
本以為是個一次性的工作,結果賽事視頻數據巨大,視頻文件長短不一,完全沒法手工處理,于是 Python 又一次拯救了我。

[[438178]]

 最近有了一個新任務,需要將賽事視頻,拆分成兩分鐘以內的小段,用于發布到短視頻平臺上。

本以為是個一次性的工作,結果賽事視頻數據巨大,視頻文件長短不一,完全沒法手工處理,于是 Python 又一次拯救了我。

還等什么,開始干吧!

最重要的事

無論做什么事情,都要去分析一下最重要的是什么,然后集中精力攻克,再繼續找最重要的事。

對我們這個任務來說,不算是個大項目,不過呢,還是要找最重要的事開始,步步為營,最終將整個問題解決了。

整體來來看,我們需要從一個目錄中讀取視頻文件,然后,對每個視頻文件進行裁剪,最后將處理好的文件保存好。

在這個過程中,最重要的是什么呢?我覺得,是視頻裁剪,如果不能方便的裁剪視頻,其他的一切工作都是白費的,是吧。

裁剪視頻

現在短視頻很流行,有很多視頻編輯軟件,功能豐富,而我們需要的只是裁剪功能,而且需要用編程的方式調用,那么最合適的莫過于 ffmpeg[1] 了。

ffmpeg 是一個命令行工具,功能強大,可以編程調用。

從 ffmpeg 官網上下載對應操作系統的版本,我下的是 Windows 版[2]。

下載后解壓到一個目錄,然后將目錄下的 bin,配置到環境變量里。然后打開一個命令行,輸入: 

  1. > ffmpeg -version  
  2. ffmpeg version 2021-10-07-git-b6aeee2d8b-full_build- ... 

測試一下,能顯示出版本信息,說明配置好了。

現在讀一下文檔,發現拆分視頻文件的命令是: 

  1. ffmpeg -i [filename] -ss [starttime] -t [length] -c copy [newfilename] 
  •  i 為需要裁剪的文件
  •  ss 為裁剪開始時間
  •  t 為裁剪結束時間或者長度
  •  c 為裁剪好的文件存放

好了,用 Python 寫一個調用: 

  1. import subprocess as sp  
  2. def cut_video(filename, outfile, start, length=90):  
  3.     cmd = "ffmpeg -i %s -ss %d -t %d -c copy %s" % (filename, start, length, outfile)  
  4.     p = sp.Popen(cmd, shell=True 
  5.     p.wait()  
  6.     return 
  •  定義了一個函數,通過參數傳入 ffmpeg 需要的信息
  •  將裁剪命令寫成一個字符串模板,將參數替換到其中
  •  用 subprocess 的 Popen 執行命令,其中參數 shell=True 表示將命令作為一個整體執行
  •  p.wait() 很重要,因為裁剪需要一會兒,而且是另起進程執行的,所以需要等執行完成再做后續工作,否則可能找不到裁剪好的文件

這樣視頻裁剪工作就完成了,然后再看看什么是最重要的。

計算分段

視頻裁剪時,需要一些參數,特別是開始時間,如何確定呢?如果這件事做不好,裁剪工作就很麻煩。

所以看看如何計算裁剪分段。

我需要將視頻裁剪成一分半的小段,那么將需要知道目標視頻文件的時間長度。

獲取視頻長度

如何獲得長度呢?ffmpeg 提供了另一個命令 —— ffprobe。

找了一下,可以合成一個命令來獲取: 

  1. > ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=11:nokey=1 -i a.flv  
  2. 920.667 

命令比較復雜哈,可以先不用管其他參數,只要將要分析的視頻文件傳入就好了。命令的結果是顯示一行視頻文件的長度。

于是可以編寫一個函數: 

  1. import subprocess as sp  
  2. def get_video_duration(filename):  
  3.     cmd = "ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 -i %s" % filename  
  4.     p = sp.Popen(cmd, stdout=sp.PIPE, stderr=sp.PIPE)  
  5.     p.wait()  
  6.     strout, strerr = p.communicate() # 去掉最后的回車  
  7.     ret = strout.decode("utf-8").split("\n")[0]  
  8.     return ret 
  •  函數只有一個參數,就是視頻文件路徑
  • 合成命令語句,將視頻文件路徑替換進去
  •  用 subprocess 來執行,注意這里需要設置一下命令執行后的輸出
  •  用 wait 等待命令執行完成
  •  通過 communicate 提取輸出結果
  •  從結果中提取視頻文件的長度,返回

分段

得到了視頻長度,確定好每個分段的長度,就可以計算出需要多少分段了。

代碼很簡單: 

  1. import math  
  2. duration = math.floor(float(get_video_duration(filename)))  
  3. part = math.ceil(duration / length) 

注意,計算分段時,需要進行向上取整,即用 ceil,以包含最后的一點尾巴。

得到了需要的分段數,用一個循環就可以計算出每一段的起始時間了。

獲取文件

因為處理的文件很多,所以需要自動獲取需要處理的文件。

方法很簡單,也很常用,一般可以用 os.walk 遞歸獲取文件,還可以自己寫,具體根據實際情況。 

  1. for fname in os.listdir(dir):  
  2.     fname = os.path.join(dir, os.path.join(dir, fname))  
  3.     basenames = os.path.basename(fname).split('.')  
  4.     mainname = basenames[0].split("_")[0]  
  5.     ... 

提供視頻文件所在的目錄,通過 os.listdir 獲取目錄中的文件,然后,合成文件的絕對路徑,因為調用裁剪命令時需要絕對路徑比較方便。

獲取文件名,是為了在后續對裁剪好的文件進行命名。

代碼集成

現在每個部分都寫好了,可以將代碼集成起來了: 

  1. def main(dir):  
  2.     outdir = os.path.join(dir, "output")  
  3.     if not os.path.exists(outdir):  
  4.         os.mkdir(outdir)  
  5.     for fname in os.listdir(dir):  
  6.         fname = os.path.join(dir, os.path.join(dir, fname))  
  7.         if os.path.isfile(fname):  
  8.             split_video(fname, outdir) 
  •  main 方法是集成后的方法
  •  先創建一個裁剪好的存儲目錄,放在視頻文件目錄中的 output 目錄里
  •  通過 listdir 獲取到文件后,對每個文件進行處理,其中判斷了一下是否為文件
  •  調用 split_video 方法開始對一個視頻文件進行裁剪

總結

總體而言,這是個很簡單的應用,核心功能就是調用了一個 ffmpeg 命令。

相對于技術,更重要的是如何對一個項目進行分析和分解,以及從什么地方開始。

這里的方式起始時,不斷地找最重要地事情,以最重要的事情為線索不斷地推進,最終以自下而上地方式解決整個問題。

期望這篇文章對你有所啟發,比心。 

 

責任編輯:龐桂玉 來源: Python編程
相關推薦

2022-11-30 07:23:39

2024-02-27 13:03:38

前端視頻合成FFmpeg

2017-04-05 16:30:09

Node.jsFFmpeg Canvas

2022-06-23 09:17:07

PythonGUIPyAutoGUI

2012-11-07 10:27:20

2022-08-29 10:39:32

FFmpeg多媒體框架開源

2023-09-26 17:14:15

2021-03-15 06:49:03

Ffmpeg項目轉換庫

2020-06-09 08:05:11

Android 代碼操作系統

2020-05-14 13:35:59

開源視頻 技術

2025-05-21 08:23:52

IO開發Java

2013-07-25 14:00:18

AndroidGenymotion模擬器

2018-08-15 15:23:48

視頻

2009-11-11 08:54:27

Windows 7系統漏洞補丁下載

2020-12-28 13:55:11

云邊緣5G視頻云

2023-11-28 10:17:37

2025-02-04 10:23:56

C#視頻版權

2022-08-12 08:38:52

FFmpegLinux命令

2022-03-15 16:53:12

FFmpeg視頻解碼Android

2024-12-12 08:50:30

開源多媒體框架
點贊
收藏

51CTO技術棧公眾號

国产日韩欧美大片| 91在线播放国产| 日本美女bbw| 欧美黄色一级| 欧美日韩在线免费观看| 伊人久久大香线蕉精品| 欧美自拍第一页| 日韩高清一区二区| 欧美人交a欧美精品| 无码人妻aⅴ一区二区三区| av成人免费| 亚洲成人av电影在线| 亚洲激情啪啪| 亚洲日本香蕉视频| 国产在线国偷精品产拍免费yy| 高清欧美性猛交| 精品视频第一页| 天天躁日日躁狠狠躁欧美巨大小说| 欧美性大战久久久久久久蜜臀| 国产精品三级一区二区| 91社区在线观看| 99久久精品国产麻豆演员表| 成人精品视频99在线观看免费| 日韩手机在线观看| 欧美影视一区| 中文字幕亚洲一区二区三区五十路 | 女人偷人在线视频| 国产凹凸在线观看一区二区 | 免费欧美网站| 欧美日韩精品三区| 亚洲一区二区蜜桃| 午夜不卡影院| 亚洲第一在线综合网站| 肉大捧一出免费观看网站在线播放| 蜜桃免费在线| 久久一区二区三区四区| 国产精品免费观看高清| 国产深喉视频一区二区| 美女一区二区视频| 国产成人在线播放| 国产又黄又粗又爽| 精品电影一区| 午夜精品久久久久久久99热| 青娱乐国产精品| 亚洲一级淫片| 美女扒开尿口让男人操亚洲视频网站| 麻豆一区在线观看| 国产精品久久观看| 日韩中文字幕欧美| 日韩一级片在线免费观看| 欧美日韩国产传媒| 国产一区二区久久精品| 最新中文字幕视频| 最新亚洲精品| 亚洲欧美精品在线| 无码少妇一区二区| 青青草综合网| 日韩中文字幕网站| 日韩a级片在线观看| 久久久久久久久丰满| 久久综合免费视频影院| 小泽玛利亚一区二区免费| 一级毛片免费高清中文字幕久久网| 精品国产一区二区三区久久狼黑人| 黄色av片三级三级三级免费看| 青青草成人影院| 久久精品福利视频| 久久久精品99| 欧美一区=区| 国产精品6699| 99视频国产精品免费观看a| 国产曰批免费观看久久久| 亚洲最大福利视频网| 人妻中文字幕一区| 久久久久久97三级| 在线观看亚洲视频啊啊啊啊| 污污的网站在线看| 精品久久久久人成| 99视频在线视频| 国产一区二区三区免费在线| 精品国产凹凸成av人网站| www.免费av| 日本不卡免费一区| 久久99视频免费| 青青草免费观看视频| 日本成人在线不卡视频| 91手机在线播放| 麻豆av电影在线观看| 日韩一区欧美一区| 男女超爽视频免费播放| 看片一区二区| 精品美女在线播放| 女人黄色一级片| 狠狠综合久久| 国产精品激情自拍| 亚洲AV无码国产精品午夜字幕| 91日韩精品一区| 欧美日韩一级在线| 欧美第一视频| 日韩欧美二区三区| 人人妻人人澡人人爽| 午夜日韩电影| 国产精品热视频| 免费观看黄色av| 国产精品福利一区| www.com毛片| 一区二区免费| 久久精品国产亚洲7777| 日韩美一区二区| 国产一区91精品张津瑜| 日韩免费av一区二区三区| 丁香花在线影院| 在线播放亚洲一区| 精品无码在线观看| 在线亚洲国产精品网站| 99久热re在线精品996热视频| 二人午夜免费观看在线视频| 午夜精品福利在线| 五月天六月丁香| 欧美大人香蕉在线| 国产成人在线精品| 青青青手机在线视频观看| 亚洲激情成人在线| 永久免费的av网站| 国产亚洲一区二区三区不卡| 久久免费视频网| 91在线视频国产| 国产三级三级三级精品8ⅰ区| 丁香花在线影院观看在线播放 | 欧美肥妇毛茸茸| 摸摸摸bbb毛毛毛片| 亚洲一区二区三区高清| 国产伦理久久久| 在线观看av免费| 欧美一区二区三区在线观看| 久久久免费看片| 奇米色777欧美一区二区| 久久久精品国产一区二区三区| 日韩少妇视频| 日韩视频免费观看高清完整版| 精品无码一区二区三区蜜臀| 捆绑紧缚一区二区三区视频 | 18免费在线视频| 在线亚洲精品福利网址导航| wwwwww日本| 视频一区视频二区中文| 蜜桃麻豆91| 韩日精品一区二区| 亚洲欧美激情在线视频| 黄色片中文字幕| 国产日韩欧美亚洲| 五月婷婷激情久久| 首页国产精品| 91香蕉视频在线下载| 婷婷丁香在线| 亚洲国产欧美一区二区丝袜黑人 | 电影k8一区二区三区久久| 精品国内二区三区| 日韩字幕在线观看| 99国产一区二区三精品乱码| 欧美 日本 亚洲| 久久av中文| 国产美女精品视频免费观看| 巨大荫蒂视频欧美另类大| 91超碰这里只有精品国产| 欧美日韩中文字幕在线观看| 成人免费高清在线| 男人添女人下面高潮视频| 免费成人高清在线视频theav| 国产精品69av| 免费网站看v片在线a| 日韩午夜电影在线观看| 日韩精品成人在线| 久久免费看少妇高潮| 伊人国产在线视频| 欧美另类女人| 久久大片网站| 四虎国产精品永久在线国在线| 久久亚洲欧美日韩精品专区| 秋霞av鲁丝片一区二区| 欧美视频一二三区| 成人在线观看小视频| 99国产欧美久久久精品| 午夜视频在线网站| 亚洲一级一区| 亚洲一区二三| 国产精品美女在线观看直播| 国产精品v日韩精品| 免费不卡av| 夜夜嗨av一区二区三区免费区| 91免费视频播放| 午夜日韩在线电影| 精品视频第一页| www.性欧美| 亚洲在线观看网站| 久久亚洲视频| 四虎精品欧美一区二区免费| 国产影视一区| 国产高清自拍一区| 亚洲人体在线| 浅井舞香一区二区| 日本乱理伦在线| 中文字幕精品国产| 亚州男人的天堂| 91精品午夜视频| 久久人人爽人人爽人人片av免费| 亚洲欧美日韩国产手机在线| 欧美色图亚洲激情| 成人免费视频caoporn| 成人性生交免费看| 麻豆精品网站| 国精产品一区一区三区视频| 91精品久久久久久久蜜月| 免费在线国产精品| 成人性生交大片免费看96| 国产一区二区在线免费| 625成人欧美午夜电影| 欧美黑人xxx| 免费黄色网页在线观看| 亚洲石原莉奈一区二区在线观看| 成人午夜精品福利免费| 在线播放欧美女士性生活| 亚洲国产无线乱码在线观看| 精品福利在线看| 久久无码精品丰满人妻| 亚洲天堂网中文字| 毛片视频免费播放| 国产精品丝袜一区| 亚洲av熟女国产一区二区性色| 99精品视频在线观看免费| av电影在线播放| 国产盗摄一区二区三区| 欧美性受xxxx黒人xyx性爽| 麻豆精品在线看| 亚洲另类第一页| 麻豆国产精品777777在线| 在线观看免费黄网站| 日本麻豆一区二区三区视频| 熟女少妇精品一区二区| 狂野欧美一区| 国产精品无码av无码| 久久视频一区| 久久精品香蕉视频| 日本午夜精品一区二区三区电影| 日韩久久一级片| 久久精品系列| 熟妇人妻va精品中文字幕 | 亚洲色图 校园春色| 亚洲国产成人久久综合| 手机av在线免费观看| 亚洲国产欧美久久| 色视频免费在线观看| 亚洲精品国精品久久99热一| 可以在线观看的av网站| 亚洲一区二区黄| 蜜桃视频在线观看免费视频网站www| 中文字幕国产亚洲2019| 国产在线高清理伦片a| 久久国产精品网站| a级大胆欧美人体大胆666| 性欧美办公室18xxxxhd| 欧美三级精品| 国产欧美一区二区三区久久| 国产精品igao视频网网址不卡日韩| 亚洲伊人久久综合| 国产精品视屏| 欧美亚洲免费在线| 日韩精品中文字幕第1页| 四虎4hu永久免费入口| 亚洲国产精品第一区二区三区 | free欧美| 国产日韩在线亚洲字幕中文| 精品国产鲁一鲁****| 国产精品亚洲不卡a| 中文字幕伦av一区二区邻居| 一区二区三区久久网| 欧美黄色大片网站| 男女高潮又爽又黄又无遮挡| 麻豆精品国产91久久久久久| 99热这里只有精品2| 91丨国产丨九色丨pron| 国产精品18在线| 亚洲线精品一区二区三区八戒| 99精品人妻国产毛片| 91.com视频| 天天干在线观看| 中文字幕视频在线免费欧美日韩综合在线看| 国产在线看片| 91精品国产91| 国产一区二区三区视频在线 | 国产精品7m凸凹视频分类| 国产手机免费视频| 捆绑紧缚一区二区三区视频| 亚洲熟女一区二区| 国产精品福利一区二区三区| 久久免费激情视频| 777a∨成人精品桃花网| 深夜福利视频一区| 美女黄色丝袜一区| 99久久婷婷国产综合精品首页| 97人人模人人爽人人喊38tv| 成人av资源电影网站| 久久久久久久久久网| 看国产成人h片视频| 素人fc2av清纯18岁| 亚洲宅男天堂在线观看无病毒| 日韩黄色片网站| 亚洲国模精品一区| 亚洲七七久久综合桃花剧情介绍| 国产精品扒开腿做爽爽爽男男| 菁菁伊人国产精品| 国产91porn| 久久国产视频网| 精品无码一区二区三区| 亚洲成av人片一区二区梦乃| 国产理论视频在线观看| 国产一区二区三区精品久久久| 国产精品原创| 国产精品视频免费一区| 国产精品成人a在线观看| 青青青在线视频免费观看| 99天天综合性| 日本系列第一页| 精品国产免费视频| 污视频网站免费在线观看| 91久久久久久久久久| 98精品视频| 高潮一区二区三区| 国产精品全国免费观看高清| 波多野结衣一区二区三区四区| 亚洲国内精品在线| 草草视频在线观看| 国产精品永久入口久久久| 午夜欧美精品久久久久久久| 特黄特黄一级片| |精品福利一区二区三区| 国产精品久久久久久久成人午夜| 亚洲男人天堂视频| 中文在线а√在线8| 久久精品国产第一区二区三区最新章节| 欧美精品午夜| 午夜福利三级理论电影| 性久久久久久久| 四虎精品成人免费网站| 欧美专区第一页| 国产一区不卡| 国产精品人人爽人人爽| 国产精品全国免费观看高清 | 久久99国产精品久久99| 免费黄色激情视频| 日韩天堂在线观看| 免费污视频在线| 久久国产精品亚洲va麻豆| 蜜乳av另类精品一区二区| 中文字幕免费高清| 欧美日韩视频在线观看一区二区三区 | 久久精品一区二区三区四区| 亚洲国产av一区二区三区| 国产一区二区三区视频免费| 欧洲成人一区| 日韩video| 播五月开心婷婷综合| 区一区二在线观看| 中文字幕在线看视频国产欧美在线看完整 | 国产在线观看免费视频软件| 欧美日韩国产不卡| 在线看福利影| 国产综合欧美在线看| 另类国产ts人妖高潮视频| 成年人视频软件| 精品日韩av一区二区| 悠悠资源网亚洲青| 亚洲免费久久| 国产福利一区在线观看| 在线观看中文字幕视频| 国产亚洲欧洲高清一区| 欧美二区观看| 蜜臀av午夜一区二区三区| 亚洲日本一区二区三区| 殴美一级特黄aaaaaa| 国产精品狼人色视频一区| 欧美全黄视频| 中日韩精品一区二区三区| 91精品国产综合久久蜜臀| a级片在线免费| 亚洲一区二区在线看| 成人国产精品免费网站| 亚洲系列在线观看| 性欧美办公室18xxxxhd| 91麻豆精品国产91久久久平台| 88av在线播放| 欧美二区在线观看| 成人欧美一区二区三区的电影| 一区不卡视频| 91小视频在线免费看| 99久久一区二区| 国产精品成人一区二区三区吃奶| 欧美日韩亚洲一区三区| 国产熟妇搡bbbb搡bbbb| 精品处破学生在线二十三|