日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python調用ffmpeg開源視頻處理庫,批量處理視頻

瀏覽:206日期:2022-07-05 11:16:04

代碼示例

# coding=utf-8import osimport subprocessimport datetimeimport json, pprintimport re, timeimport threadingimport randomimport shutilclass FFmpeg: def __init__(self, editvdo, addlogo=None, addmusic=None, addvdohead=None, addvdotail=None): self.editvdo = editvdo self.addlogo = addlogo self.addmusic = addmusic self.addvdohead = addvdohead self.addvdotail = addvdotail self.vdo_time, self.vdo_width, self.vdo_height, self.attr_dict = self.get_attr() self.editvdo_path = os.path.dirname(editvdo) self.editvdo_name = os.path.basename(editvdo) def get_attr(self): ''' 獲取視頻屬性參數 :return: ''' strcmd = r’ffprobe -print_format json -show_streams -i '{}'’.format(self.editvdo) status, output = subprocess.getstatusoutput(strcmd) agrs = eval(re.search(’{.*}’, output, re.S).group().replace('n', '').replace(' ', ’’)) streams = agrs.get(’streams’, []) agrs_dict = dict() [agrs_dict.update(x) for x in streams] vdo_time = agrs_dict.get(’duration’) vdo_width = agrs_dict.get(’width’) vdo_height = agrs_dict.get(’height’) attr = (vdo_time, vdo_width, vdo_height, agrs_dict) return attr def edit_head(self, start_time, end_time, deposit=None): ''' 截取指定長度視頻 :param second: 去除開始的多少秒 :param deposit: 另存為文件 :return: True/Flase ''' if None == deposit: deposit = self.editvdo_path+’/’+’edit_head’+self.editvdo_name start = time.strftime(’%H:%M:%S’, time.gmtime(start_time)) end = time.strftime(’%H:%M:%S’, time.gmtime(end_time)) strcmd = ’ffmpeg -i '{}' -vcodec copy -acodec copy -ss {} -to {} '{}' -y’.format( self.editvdo, start, end, deposit) result = subprocess.run(args=strcmd, stdout=subprocess.PIPE, shell=True) if os.path.exists(deposit): os.remove(self.editvdo) os.rename(deposit, self.editvdo) return True else: return False def edit_logo(self, deposit=None): ''' 添加水印 :param deposit:添加水印后另存為路徑,為空則覆蓋 :return: True/False ''' if None == deposit: deposit = self.editvdo_path+’/’+’edit_logo’+self.editvdo_name strcmd = r’ffmpeg -i '{}' -vf 'movie=’{}’ [watermark];[in] ’ r’[watermark] overlay=main_w-overlay_w-10:10 [out]' '{}'’.format( self.editvdo, self.addlogo, deposit) result = subprocess.run(args=strcmd, stdout=subprocess.PIPE, shell=True) if os.path.exists(deposit): os.remove(self.editvdo) os.rename(deposit, self.editvdo) return True else: return False def edit_music(self, deposit=None): if None == deposit: deposit = self.editvdo_path+’/’+’edit_music’+self.editvdo_name strcmd = r’ffmpeg -y -i '{}' -i '{}' -filter_complex '[0:a] ’ r’pan=stereo|c0=1*c0|c1=1*c1 [a1], [1:a] ’ r’pan=stereo|c0=1*c0|c1=1*c1 [a2],[a1][a2]amix=duration=first,’ r’pan=stereo|c0<c0+c1|c1<c2+c3,pan=mono|c0=c0+c1[a]' ’ r’-map '[a]' -map 0:v -c:v libx264 -c:a aac ’ r’-strict -2 -ac 2 '{}'’.format(self.editvdo, self.addmusic, deposit) result = subprocess.run(args=strcmd, stdout=subprocess.PIPE, shell=True) if os.path.exists(deposit): os.remove(self.editvdo) os.rename(deposit, self.editvdo) return True else: return False def edit_rate(self, rete=30, deposit=None): ''' 改變幀率 :param rete: 修改大小幀率 :param deposit: 修改后保存路徑 :return: ''' if None == deposit: deposit = self.editvdo_path+’/’+’edit_music’+self.editvdo_name strcmd = r’ffmpeg -i '{}' -r {} '{}'’ % (self.editvdo, rete, deposit) result = subprocess.run(args=strcmd, stdout=subprocess.PIPE, shell=True) if os.path.exists(deposit): os.remove(self.editvdo) os.rename(deposit, self.editvdo) return True else: return False def edit_power(self, power=’1280x720’, deposit=None): ''' 修改分辨率 :param power: 分辨率 :param deposit: 修改后保存路徑,為空則覆蓋 :return: ''' if None == deposit: deposit = self.editvdo_path+’/’+’edit_power’+self.editvdo_name strcmd = r’ffmpeg -i '{}' -s {} '{}'’.format(self.editvdo, power, deposit) result = subprocess.run(args=strcmd, stdout=subprocess.PIPE, shell=True) if os.path.exists(deposit): os.remove(self.editvdo) os.rename(deposit, self.editvdo) return True else: return False def rdit_marge(self, vdo_head, vdo_tail, deposit=None): if None == deposit: deposit = self.editvdo_path+’/’+’rdit_marge’+self.editvdo_name with open(self.editvdo_path+’/’+’rdit_marge.txt’, ’w’, encoding=’utf-8’) as f: f.write('file ’{}’ nfile ’{}’ nfile ’{}’' .format(vdo_head, self.editvdo, vdo_tail)) strcmd = r’ffmpeg -f concat -safe 0 -i '{}' -c copy '{}'’.format( self.editvdo_path + ’/’ + ’rdit_marge.txt’, deposit) result = subprocess.run(args=strcmd, stdout=subprocess.PIPE, shell=True) if os.path.exists(deposit): os.remove(self.editvdo) os.rename(deposit, self.editvdo) return True else: return False # ffmpeg - i input.mkv - filter_complex '[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]' - map'[v]' - map'[a]' output.mkvtest = FFmpeg(r'D:vdio4.mp4')pass

以上就是Python調用ffmpeg開源視頻處理庫,批量處理視頻的詳細內容,更多關于python 批量處理視頻的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久精品亚洲人成影院 | 久久av免费| 日韩欧美另类中文字幕| 不卡专区在线| 岛国精品一区| 高清一区二区三区| 久久av日韩| 综合激情一区| 久热re这里精品视频在线6| 亚洲免费福利| 色乱码一区二区三区网站| 欧美黄页在线免费观看| 免费一级欧美片在线观看网站| 蜜桃久久av一区| 亚洲狼人精品一区二区三区| 蜜桃一区二区三区在线观看| 国产一在线精品一区在线观看| 麻豆精品在线视频| 国产极品一区| 欧美日韩亚洲一区在线观看| 国产日韩欧美三区| 国产另类在线| 欧美一区在线观看视频| 日本不卡高清| 国产精品久久久久久久久久齐齐| 欧美精品福利| 国产精品久一| 精品一区视频| 久久久久久婷| 99热精品久久| 国产欧美午夜| 婷婷成人av| 久久男人天堂| 免费人成网站在线观看欧美高清| 免费久久99精品国产自在现线| 日韩影院免费视频| 日本不卡一区二区| 蜜桃视频第一区免费观看| 日韩动漫一区| 丰满少妇一区| 国产一区二区视频在线看| 久久久久国产| 日韩精品一二区| 国产日韩一区二区三区在线| 国产欧美一区二区三区米奇| 韩日一区二区| 久久久夜精品| 狠狠爱成人网| 欧美日一区二区在线观看| 欧美视频一区| 日韩国产欧美| 日韩精品午夜视频| 精品高清久久| 国产精品88久久久久久| 丝袜美腿成人在线| 精品九九久久| 丝袜国产日韩另类美女| 日韩国产网站| 国产九一精品| 99热精品在线观看| 欧美不卡在线| 99视频精品全国免费| 国产精品久久久久久久免费软件| 国产极品模特精品一二| 日本一区二区免费高清| 久久激情综合网| 精品视频一区二区三区四区五区 | 欧美一级一区| 久久不见久久见免费视频7 | 国产一区二区三区黄网站| 精品国产乱码久久久久久1区2匹| 色偷偷色偷偷色偷偷在线视频| 免费一级片91| 久久精品国产成人一区二区三区| 午夜久久黄色| 日本黄色精品| 亚洲综合福利| 偷拍精品精品一区二区三区| 麻豆成人在线观看| 国产成人免费| 精品无人区麻豆乱码久久久| 久久久精品久久久久久96| 日韩av在线免费观看不卡| 久久蜜桃精品| 国产精品欧美在线观看| 午夜在线一区| 深夜视频一区二区| 国产亚洲一区| 蜜桃久久久久久| 激情婷婷综合| 中文字幕色婷婷在线视频| 日本免费新一区视频| 91久久午夜| 欧美日韩国产v| 亚洲精品字幕| av成人国产| 国产精品亚洲一区二区三区在线观看| 久久精品av麻豆的观看方式| 国产精品毛片在线看| 日韩精品欧美| 久久精品福利| 久久黄色影视| 中文字幕免费一区二区| av不卡在线| 香蕉久久99| 毛片在线网站| 丰满少妇一区| 老司机精品视频在线播放| 色8久久久久| 中文另类视频| 丝袜诱惑制服诱惑色一区在线观看| 亚洲午夜电影| 精品一区二区三区视频在线播放| 岛国av在线网站| 最新亚洲激情| 国产剧情在线观看一区| а√在线中文在线新版| 国产精品流白浆在线观看| 欧美天堂一区| 国产精品一级| 日本在线精品| 视频一区视频二区中文| 日本不卡视频在线观看| 日韩一区三区| 91精品在线免费视频| 婷婷精品在线观看| 亚洲精品激情| 日本一区二区中文字幕| 亚洲综合不卡| 视频一区视频二区在线观看| 蜜桃伊人久久| 在线免费观看亚洲| 亚洲+小说+欧美+激情+另类| 国产伦理一区| 亚洲免费网址| 999国产精品999久久久久久| 国模精品一区| 麻豆国产精品| 色综合五月天| 国产精品欧美大片| 久久精品五月| 老司机精品视频在线播放| 日本一二区不卡| 秋霞影视一区二区三区| 激情综合亚洲| 老牛国产精品一区的观看方式| 蜜桃一区二区三区在线观看| 蜜臀精品久久久久久蜜臀 | 日韩电影免费在线观看| 亚洲成人不卡| 亚洲精品a级片| 免费久久精品视频| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲欧洲日韩| 日韩高清成人在线| 美女久久精品| 99精品视频在线观看免费播放| 午夜久久美女| 无码日韩精品一区二区免费| 日韩不卡免费视频| 国产精品一二| 国产精品mm| 成人影视亚洲图片在线| 99视频精品视频高清免费| 免费久久精品视频| 蜜臀a∨国产成人精品| 亚洲在线免费| 国产精品资源| 中文另类视频| 伊人精品久久| 麻豆一区二区三| 秋霞影院一区二区三区| 中文一区一区三区免费在线观 | 久久精品av| 久久国产66| 日本午夜精品久久久久| 国产欧美一区二区精品久久久 | 欧美a在线观看| 91tv亚洲精品香蕉国产一区| 久久av一区二区三区| 欧美日韩一区自拍| 国产精品99一区二区三区| 亚洲少妇诱惑| 久久久亚洲欧洲日产| 国产高清一区| 国产毛片精品久久| 999精品色在线播放| 日本va欧美va欧美va精品| 国际精品欧美精品| 亚洲专区视频| 麻豆视频一区| 视频一区视频二区在线观看| 久久精品理论片| 蜜臀久久99精品久久久久宅男| 精品成av人一区二区三区| 蜜桃av一区二区三区电影| 国产第一亚洲| 日精品一区二区三区| 久久蜜桃精品| 国产精品久久久网站|