热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

pyaaf内容修改

为什么80%的码农都做不了架构师?#预备知识在AAF标准中对AAF文件层次定义为三层:时间线、逻辑素材和物理素材。##时间线在非线性编辑系统中时间

为什么80%的码农都做不了架构师?>>>   hot3.png

#预备知识 在 AAF 标准中对 AAF 文件层次定义为三层:时间线、 逻辑素材和物理素材。 ##时间线 在非线性编辑系统中时间线对应于 EDL 表(Editorial Determination List,即: 编辑决策列表) ;在 AAF 中,时间线对应于一个 CompositionMob 对象。 CompositionMob 对象位于 AAF 文件的最上层,在 CompositionMob 上可以添加 各种跟时间有关的元素,如素材,特技、字幕、声音等,从而达到编辑节目的 效果。当用户完成编辑后,AAF 把时间线上的元素按其层次结构存储到 AAF 文 件中,当用户再次打开时,AAF 依次读出时间线上的元素,并显示给用户,这 时便可以向时间线上增加和删除特定的元素以达到用户修改节目的目的。 在 AAF 里素材被存放在 SourceMob 里, MasterMob 是被用于 CompositionMob 间接访问素材的对象,CompositionMob 不必知道素材是具体的 什么类型,就像时间线引用的是一个虚拟的素材,不必关心具体的物理素材。 ##逻辑素材 AAF 组织为了能够更好的编辑 AAF 文件,引入了一个中间层,也就是时间 不再指向具体的素材,而是指向一个逻辑的素材(SourceMob) ,再由它指向具 体的素材(EssenceData)。这样做的好处是当物理素材发生改变是,只需修改物 理素材的引用,而不必修改时间线信息,从而减少了修改工量。并且,逻辑素材 还可以被多次引用,包含更多的素材类型,如:视频、音频、用户数据信息等, 但一个物理素材可能只有视频或音频。 ##物理素材 物理素材(EssenceData)用于描述具体的物理实体,以及实体数据的引用。 物理素材包含的描述信息有视频的幅面大小,帧率(PAL/NTSC) 、编码方式 (MPEG2,MPEG4),音频的采样率,采样大小,声道数量等数据引用,如果是 内置数据,那么必定要包含数据的 ID,如果是外置数据,还要包括引用的数据 路径。 #pyaaf文件读写 pyaaf通过aaf_file = aaf.open(output_aaf, 'r')进行读取
通过aaf_file.save("resources/change_onlyone_timeline_name.aaf")进行保存文件

#pyaaf的header、storage、dictionary的读取,与dump对比 pyaaf读取header、storage、dictionary通过如下代码

class_iid = aaf_file.class_iid
header = aaf_file.header
storage = aaf_file.storage
dictionary = aaf_file.dictionaryprint "[aaf_file.class_iid]:" + str(class_iid)
print "[aaf_file.header]:" + str(header)
print "[aaf_file.storage]:" + str(storage)
print "[aaf_file.dictionary]:" + str(dictionary)

针对相同文件打印输出与dump打印对比

[aaf_file.class_iid]:urn:uuid:9346acd3-2713-11d2-8035-006008143e6f
[aaf_file.header]:
[aaf_file.storage]:
[aaf_file.dictionary]:

dump打印

Content Dictionary

注意:这里描述的内存地址有时候一样,有时候不一样,是由于C++内存地址分配问题,并非指相对内存地址。 #尝试对header、storage、dictionary实例化 ##尝试header实例化 代码self_header = aaf.storage.Header(),报异常TypeError: Header cannot be instantiated from Python。该异常为Header不能使用python进行实例化 ##尝试storage(ContentStorage)实例化 代码self_storage = aaf.storage.ContentStorage(),报异常TypeError: ContentStorage cannot be instantiated from Python。该异常为ContentStorage不能使用python进行实例化 ##尝试storage(ContentStorage)实例化 代码self_storage = aaf.storage.ContentStorage(),报异常TypeError: ContentStorage cannot be instantiated from Python。该异常为ContentStorage不能使用python进行实例化 ##尝试dictionary实例化 代码self_dict = aaf.dictionary.Dictionary(),报异常TypeError: Dictionary cannot be instantiated from Python。该异常为Dictionary不能使用python进行实例化 #获取storage当中的mobs,并添加mob

aaf_mobs = storage.mobs()
for aaf_mob in aaf_mobs:print aaf_mob

把创建的mob,存储到storage中

new_timeline = CompositionMob(aaf_file,"AAF Test TimeLine")
storage.add_mob(new_timeline)

#AAF对象类方法

##Mob Mob作为一系列的Mob的父类,具有许多方法。

append_comment(name, value) #追加评论
append_attribute(name, value) #追加属性(修改mob的name不能通过这种方式)


转:https://my.oschina.net/hava/blog/732732



推荐阅读
  • 最近学习了数据挖掘常用的两种算法:FP-Growth和K-Means。现在把我的学习结果分享给大家。以下是本文的目录,大家可以根据需要跳过一些章节:1.FP-Grow ... [详细]
  • R语言基础_数据导入&保存
    数据分析文件常用的储存格式为CSV(.csv)和EXCEL(.xlsx),其余文 ... [详细]
  • 不常见的RAID,RAID2,RAID4,RAID7
    RAID2的技术RAID2是RAID0的改良版,以汉明码(HammingCode)的方式将数据进行编码后分割为独立的位元,并 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • Day 5 20190120 老男孩python学习第5天 内容整理
    今天继续看MasteringPycharm的视频,一个半小时看git的教学视频:视频1小时44分钟,看了2个半小时以上https:www.youtube ... [详细]
  • 下载器,就是一种网络工具,从网络中接收自己想要的数据。下载器是一个网络客户端。它的下载流程无非就是客户端连接服务器端,然后发送资源下载请求 ... [详细]
  • linux树莓派和n1,树莓派 斐讯N1 搭建NFS
    什么是NFS?1台Linux主机的磁盘可以通过网络挂载到其他Linux主机上,实现云盘效果。NFS是一套软件和协议,同时也是一种文件系统& ... [详细]
  • TLB 缓存延迟刷新漏洞 CVE201818281 解析 ... [详细]
  • SQLPLUS 命令
    定制:sql提示符信息1、显示SQLPLUS帮助,命令如下:HELPINDEX@COPYPAUSESHUTDOWN@@DEFINEPRINTSPOOLDELPR ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
author-avatar
手机用户2502857517_939
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有