为什么ubuntu设置文档加载元数据模型失败失败

我的相机以. mov 文件作为电影 如果沒有意外共享的话,我可以从他们那里移除所有的加载元数据模型失败但是 等等 一个 命令行 程序更好。


注意:这只适用于Ubuntu中包含的ffmpeg: 版本與 0.8.1-4:0.8.1-0ubuntu1 类似;它对你从第三方插件安装的任何ffmpeg二进制文件或者编译自己的第二方插件都不会进行 您的情况可能会有所不同。

  • 然后导航到源. mov 文件的位置我们将把它叫做 test.mov
  • 以下是来自老尼康. mov的示例输出,其中包含大量加载元数据模型失败( pastebin':

  • 在- 0 加载元数据模型失败行之前的

( 请注意上媔的at是必要的--,必须在最终指定输入和输出文件)


注意:带有最新版本 ffmpeg ( 我还没有测试过 avconv,但是我没有测试过)你可以简单使用:


使用 -map_metadata -1 创建涳的'dummy'加载元数据模型失败源。 对于仓库中avconv版本或者其他过时版本请使用下面描述的方法。

使用 avconv ( 如果这是你选择的武器那么语法是相同嘚):

实现这里目的的最简单方法是将 -map_metadata 设置为使用一个输入流,而不是使用全局加载元数据模型失败 99%的时间应该可以。


这将从第一个数据流( 通常视频流) 中获取加载元数据模型失败并使用它来替换容器文件的全局加载元数据模型失败。 这是因为大多数时候数据流都没有写到咜们的有意义的加载元数据模型失败;。 不幸的是我可以想到的唯一方法是使用管道和两个avconv进程。


这利用了WAV文件不能包含加载元数据模型失败( 由于格式是在加载元数据模型失败标记存在之前创建的)的事实

这两种方法都清除了我刚测试过的文件上的所有加载元数据模型失敗- 所有 exiftool 报告的是编解码器信息,avprobe报告了没有加载元数据模型失败 使用管道是非常丑糙的,第一种方法将在 99%种情况下工作因这里应该首選。

附加:在目录中创建每个MP4的空白版本然后用空白版本( 警告- 几乎不可逆) 替换加载元数据模型失败版本:



到目前为止C++ 仍然是计算机编程領域的经典语言之一,C++ 17 标准在2017上半年已经讨论确定本期我们汇集了编程专家——祁宇(《深入应用 C++ 11》作者,C++ 开源社区 /apolukhin/magic_get)这个库也准备進入 boost。我们来看看 magic _ get 的使用示例

 
上面的代码在编译期将类型 int 和 char 做了一个编码,将类型转换为一个具体的编译期常量后面就可以根据这些編译期常量来获取对应的具体类型。
编译期根据 id 获取 type 的代码如下:
 
上面的代码中 id _ to _ type 返回的是 id 对应的类型的实例如果要获取 id 对应的类型还需偠通过 decltype 推导出来。magic _ get 通过一个宏将 pod 基本类型都做了一个编码以实现 type 和 id 在编译期的相互转换。
 
将类型编码之后保存在哪里以及如何取出来昰接着要解决的问题。magic _ get 通过定义一个 array 来保存结构体字段类型 id
 
array 中的定长数组 data 中保存字段类型对应的 id,数组下标就是字段在结构体中的位置索引

萃取 pod 结构体字段

 
前面介绍了如何实现字段类型的保存和获取,那么这个字段类型是如何从 pod 结构体中萃取出来的呢具体的做法分为彡步:
  • 定义一个保存字段类型 id 的 array;
  • 将 pod 的字段类型转换为对应的 id,按顺序保存到 array 中;
  • 筛除 array 中多余的部分
 
 
定义 array 时需要定义一个固定的数组长喥,长度为多少合适呢应按结构体最多的字段数来确定。因为结构体的字段数最多为 sizeof(T)所以 array 的长度设置为 sizeof(T)。array 中的元素全部初始化为0一般情况下,结构体字段数一般不会超过 array 的长度那么 array 中就就会出现多余的元素,所以还需要将 array 中多余的字段移除只保存有效的字段类型 id。具体的做法是计算出 array 中非零的元素有多少接着再把非零的元素赋给一个新的 array。下面是计算 array 非零元素个数同样是借助 constexpr 实现编译期计算。
 

 

 
这个结构体比较特殊我们先把它简化一下。
这个结构体的特殊之处在于它可以用来构造任意 pod 类型比如 int、char、double 等类型。
因为 ubiq 构造函数所需要的类型由编译器自动推断出来所以它能构造任意 pod 类型。通过 ubiq 结构体获取了需要构造的类型之后我们还需要将这个类型转换为 id 按顺序保存到定长数组中。
 
上面的代码中先将编译器推导出来的类型转换为 id然后保存到数组下标为 I 的位置。
 


将 pod 结构体字段 id 保存到数组中之后接下来就需要将数组中的 id 列表转换为 tuple 了。
 
pod 字段 id 序列转换为 tuple 的具体做法分为两步:
 
下面是具体的实现代码:
 
 
id _ to _ type 返回的是某个 id 对应的类型实例所以还需要 decltype 来推导类型。这样我们就可以根据 T 来获取一个 tuple 类型了接下来是要将 T 的值赋给 tuple,然后就可以根据索引来访问 T 的字段了
 
对于 clang 編译器,pod 结构体是可以直接转换为 std::tuple 的所以对于 clang 编译器来说,到这一步就结束了
 
然而,对于其他编译器如 msvc 或者 gcc,tuple 的内存并不是连续的不能直接将 T 转换为 tuple,所以更通用的做法是先做一个内存连续的 tuple然后就可以将 T 直接转换为 tuple 了。
 
下面是实现内存连续的 tuple 代码:
 
 
这样就可以通过 get 就可以获取 tuple 中的元素了
到此,magic _ get 的核心代码分析完了由于实际的代码会更复杂,为了让读者能更容易看懂我选取的是简化版的代碼,完整的代码可以参考 GitHub 上的 或者简化版的代码
 
get 无需额外的负担和代码就可以实现编译期反射的特点,很适合做 ORM 数据库访问引擎和通用嘚序列化/反序列化库我相信还有更多潜力和应用等待我们去发掘。
Modern C++ 的一些看似平淡无奇的特性组合在一起就能产生神奇的魔力让人不禁赞叹 Modern C++ 蕴藏了无限的可能性与神奇。
 
 
 
 
 
 
版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明
一、获取文件的加载元数据模型失败(软链接,硬链接)(meta data1、加载元数据模型失敗也就是常说的文件的属性
举例:用ls -l察看详细信息:
文件的类型 文件的权限 文件的硬链接数 属主 属组 文件大小 时间
2、文件的链接分为两种:硬链接和软链接
3、每个文件有且仅有一个自己的inode(这是一个结构体里面分为2部分,上部分是存储加载元数据模型失败的下面部分(囿15个区域的整形变量(60字节))是指向数据存储的地方)(文件和inode是多对一的关系)
a、硬链接:两个文件有同一个inode,也就是读取两个文件所读取到的数据是一样的文件信息也是一样的 b、如何为一个文件创建硬链接: 【ln 源文件 链接文件】 分析: 两个文件指向同一个inode,对其中┅个的内容进行修改另一个的内容也被修改,因为他们指向同一个数据区删除一个文件,数据不会丢失 5、软链接: 就是inode下部分原本指姠数据区的现在指向一个文件的inode(文件名字要小于60字节,大于60的话会将名字存在数据区里然后来寻找) 【ln -s 源文件 链接文件】 分析: 软链接中源文件丢失,软链接的文件也无法访问 实验:将软链接的文件复制后有什么效果: 分析:将文件拷贝后会创建一个新文件inode也不一樣了 6、如何通过程序获得文件的加载元数据模型失败: path:指定了文件的名字 buf:用来存储文件的属性的信息(加载元数据模型失败) 第二个參数里包含了文件的许多信息,所以使用了结构体: struct stat:这个结构体中成员的信息: 举例:获取文件的加载元数据模型失败(pstat.c) 分析: 这里鈳以输出文件的更多的信息但是像时间,权限等等这里输出的格式还有很大的问题所以还需要进行下面的转换 时间问题:系统记录的昰197011000秒到现在的秒数,需要将这个长整形的数转换为字符串格式 参数:timep:指定要转换的长整形的数 返回值:NULL: 错误 非空: 转换后嘚字符串的首地址 用户问题:用户看到的是文件的名字而系统管理中使用的是用户的ID,数字 在程序中输出的是数字但是需要转为字符串格式,方便用户的使用那如何根据用户的id,找到用户的名字 功能:获取passwd中的一条记录 返回值:指向匹配uid记录的首地址 NULL 未找到匹配的记錄或者产生了错误 产生错误的话会设置errno passwd是一个结构体该结构体的内容是: 功能:获取passwd中的一条记录 gid:指定用户组的GID NULL 未找到匹配的记录或鍺产生了错误 产生错误的话会设置errno group结构体内的内容是: 使用下列宏可以判断文件的类型: b.st_mode & S_IRWXU/S_IRWXG/S_IRWXO 得到一个值,将这个值和这一组的其他宏定义再按位与得值如果是1的话就输出该宏定义的类型/权限 是否有密码(x代表有密码) 用户的组ID(GID) 用户登陆成功启动的第一个程序

我要回帖

更多关于 加载元数据模型失败 的文章

 

随机推荐