ffmpeg python_ffmpeg-python 学习

该博客介绍了如何使用Python的`ffmpeg`和`python-ffmpeg`库进行视频处理,包括解析时间表达式、运行进程回调和更新处理进度信息。通过示例代码展示了如何解析时间表达式、运行命令行进程以及更新XML文件来跟踪处理状态。
摘要由CSDN通过智能技术生成

#增加自动缩进换行

def indent(elem, level=0):

i= "\n" + level*" "

iflen(elem):if not elem.text or notelem.text.strip():

elem.text= i + " "

if not elem.tail or notelem.tail.strip():

elem.tail=ifor elem inelem:

indent(elem, level+1)if not elem.tail or notelem.tail.strip():

elem.tail=ielse:if level and (not elem.tail or notelem.tail.strip()):

elem.tail=idefparse_dfxp_time_expr(time_expr):if nottime_expr:returntime_expr=time_expr.strip()

mobj= re.match(r'^(?P\d+(?:\.\d+)?)s?$', time_expr)ifmobj:return float(mobj.group('time_offset'))

mobj= re.match(r'^(\d+):(\d\d):(\d\d(?:(?:\.|:)\d+)?)$', time_expr)ifmobj:return 3600 * int(mobj.group(1)) + 60 * int(mobj.group(2)) + float(mobj.group(3).replace(':', '.'))def runProc(proc, out, callback, timeOut = 30):try:

proc_out_closed=False

start=time.time()while notproc_out_closed:if (time.time() - start >timeOut):raiseKeyboardInterrupt()

line= ''

whileTrue:

char= out.read(1)if notchar:

proc_out_closed=Truebreak

if char in [b'\r', b'\n']:break

try:

line+= char.decode('ascii', 'replace')exceptException as ex:continue

if notline:continue

ifisinstance(line, bytes):

line= line.decode('utf-8')#print(line) #print可能會有特殊字符而引起的異常

callback(line)return proc.wait() ==0exceptKeyboardInterrupt:try:if sys.platform != 'win32':

proc.communicate(b'q')else:

proc.terminate()except:print('except...........')returnFalsedef updateInfo(fileName, outputFileName, progress, resultState = 'working', error=None):ifos.path.exists(fileName):

Tree=ET.parse(fileName)

ProgressInfoNode=Tree.getroot()#创建根节点

else:

ProgressInfoNode= ET.Element('ProgressInfo')#创建子节点,并添加属性

GetNode = lambda child: ProgressInfoNode.find(child) if ProgressInfoNode.find(child)!=None elseET.SubElement(ProgressInfoNode, child)

Node= GetNode('OutputFileName')#ET.SubElement(ProgressInfoNode,'OutputFileName')

Node.text =outputFileName

Node= GetNode('ResultState')#ET.SubElement(ProgressInfoNode, 'ResultState')

Node.text =resultState

Node= GetNode('Progress')#ET.SubElement(ProgressInfoNode, 'Progress')

Node.text =str(progress)iferror:

Node= GetNode('error')#ET.SubElement(ProgressInfoNode, 'Progress')

Node.text =str(error)#创建elementtree对象,写文件

indent(ProgressInfoNode,0)

tree=ET.ElementTree(ProgressInfoNode)

tree.write(fileName, encoding="utf-8")

ffmpeg是一个开源的跨平台音视频处理工具,能够对音视频进行编解码、转码、剪辑、合成等操作。它支持多种音视频格式,并且具有强大的功能和灵活性。 python-ffmpeg-video-streaming是一个Python库,用于打包媒体内容以进行在线流式传输,如DASH和HLS。它提供了简单易用的API,可以方便地实现视频流的处理和传输。 imageio_ffmpeg是一个用于处理图片和视频的Python库。它提供了对FFmpeg的封装,使得在Python中可以方便地使用FFmpeg进行图片和视频的处理。通过使用imageio_ffmpeg,可以实现图片和视频的解码、编码、剪辑等功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python库 | python-ffmpeg-video-streaming-0.0.11.tar.gz](https://download.csdn.net/download/qq_38161040/85129360)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [python-ffmpeg-video-streaming::videocassette:使用FFmpeg打包媒体内容以进行在线流式传输(DASH和HLS)](https://download.csdn.net/download/weixin_42105816/18373506)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Python库 | imageio_ffmpeg-0.4.1-py3-none-win32.whl](https://download.csdn.net/download/qq_38161040/85514865)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值