当前位置: 首页 > news >正文

网站建设维护费用公司建设网站记什么费用

网站建设维护费用,公司建设网站记什么费用,华为最新消息,钛钢饰品网站建设文章目录 BUG起因类似问题反馈问题解决具体步骤#xff1a; 阅读过文章ffmpeg命令行解析调试流程记录movenc.c源码分析 BUG起因 在ffmpeg参数默认可识别的metadata参数如下#xff1a; 具体可见libavformat/movenc.c-mov_write_udta_tag() mov_write_string_metadata(s,… 文章目录 BUG起因类似问题反馈问题解决具体步骤 阅读过文章ffmpeg命令行解析调试流程记录movenc.c源码分析 BUG起因 在ffmpeg参数默认可识别的metadata参数如下 具体可见libavformat/movenc.c-mov_write_udta_tag() mov_write_string_metadata(s, pb_buf, \251ART, artist, 0);mov_write_string_metadata(s, pb_buf, \251nam, title, 0);mov_write_string_metadata(s, pb_buf, \251aut, author, 0);mov_write_string_metadata(s, pb_buf, \251alb, album, 0);mov_write_string_metadata(s, pb_buf, \251day, date, 0);mov_write_string_metadata(s, pb_buf, \251swr, encoder, 0);// currently ignored by mov.cmov_write_string_metadata(s, pb_buf, \251des, comment, 0);// add support for libquicktime, this atom is also actually read by mov.cmov_write_string_metadata(s, pb_buf, \251cmt, comment, 0);mov_write_string_metadata(s, pb_buf, \251gen, genre, 0);mov_write_string_metadata(s, pb_buf, \251cpy, copyright, 0);mov_write_string_metadata(s, pb_buf, \251mak, make, 0);mov_write_string_metadata(s, pb_buf, \251mod, model, 0);mov_write_string_metadata(s, pb_buf, \251xyz, location, 0);mov_write_string_metadata(s, pb_buf, \251key, keywords, 0);mov_write_raw_metadata_tag(s, pb_buf, XMP_, xmp);而原视频中的参数都是 com.apple.quicktime.location.accuracy.ho : com.apple.quicktime.location.ISO6709 : com.apple.quicktime.make : com.apple.quicktime.model : com.apple.quicktime.software : com.apple.quicktime.creationdate :这些参数不在ffmpeg的atom列表中 所以ffmpeg会当作自定义medatada参数处理可以使用脚本测试 #!/bin/bash list( title author album_artist album grouping composer year track comment genre copyright description synopsis show episode_id network lyrics ) for i in ${list[]};doecho use - $i./ffmpeg -i input_old.mov -metadata ${i}YYYY-MM-DD HH:MM:SS -c copy output_mdta_time.mov -y mediainfo output_mdta_time.mov | grep YYYY-MM-DD HH:MM:SS --colorsleep 1 done那么就需要使用-movflags use_metadata_tags参数来添加自定义metadata在使用ffmpeg对视频添加metadata或者保存metadata时处理之后视频在QuickTime中无法正确读取metadata-key比如 $ ./ffmpeg -i input_old.mov -c copy -movflags use_metadata_tags -metadata nameYJ output.mov -y此时通过ffprobe、mediainfo等工具查看是没有问题的 $ mediainfo output.mov General Complete name : output.mov Format : MPEG-4 Format profile : QuickTime Codec ID : qt 0000.02 (qt ) File size : 785 KiB Duration : 780 ms Overall bit rate : 8 245 kb/s major_brand : qt minor_version : 0 compatible_brands : qt com.apple.quicktime.creationdate : xxx//clear com.apple.quicktime.location.accuracy.ho : xxx//clear com.apple.quicktime.location.ISO6709 : xxx//clear com.apple.quicktime.make : Apple com.apple.quicktime.model : iPhonexxx //clear com.apple.quicktime.software : xxx//clear name : YJ encoder : Lavf58.29.100但是QuickTime获取视频属性、以及IOS开发使用AVAsset中会出现如下情况 //ios-switch let _asset AVAsset(url: videoURL) let metadata _asset.metadata print(start\(metadata.count)) for item in metadata {if let identifier item.identifier?.rawValue,let value item.value {print(Identifier: \(identifier), Value: \(value))} } print(end)//Print : start11 Identifier: itsk/%00%00%00%01, Value: qt Identifier: itsk/%00%00%00%02, Value: 0 Identifier: itsk/%00%00%00%03, Value: qt Identifier: itsk/%00%00%00%04, Value: 2023-03-25T14:57:050800 Identifier: itsk/%00%00%00%05, Value: 35.000000 Identifier: itsk/%00%00%00%06, Value: xxxx Identifier: itsk/%00%00%00%07, Value: Apple Identifier: itsk/%00%00%00%08, Value: xxx Identifier: itsk/%00%00%00%09, Value: xxx Identifier: itsk/%00%00%00%0A, Value: YJ Identifier: itsk/%00%00%00%0B, Value: xxx end类似问题反馈 https://trac.ffmpeg.org/ticket/4209 添加-movflags use_metadata_tags将允许您添加和继承自定义元数据。至少ff*工具将在输出中显示这些标签 我刚刚用iPhone X HEVC视频测试了ffmpeg 4.0.3版本。 命令很简单 ffmpeg -i IMG_9988.MOV -movflags use_metadata_tags -c copy aaaa.mov 我可以用ffprobe在目标文件GPS、模型等上看到原始元数据 com.apple.quicktime.创建日期2018-11-28T17:47:53-0200com.apple.quicktime.location.ISO6709-23.5424-046.6576/com.apple.quicktime.make苹果com.apple.quicktime.modeliPhone Xcom.apple.quicktime.software12.1但苹果堆栈不会在目标文件上显示元数据。这是一张屏幕截图左侧显示右侧的源和目标 https://exiftool.org/forum/index.php?topic11782.0 ffmpeg似乎支持数量有限的.mp4格式的iTunes标签。-map_metadata 0’不保留自定义/任意元密钥。为此目的的开关是“-movflags use_metadata_tags”但这些是以非常规方式编写的Quicktime Player无法识别它们我目前使用的是Mojave QT–Catalina QT有些不同 https://www.linuxmi.com/ffmpeg-shili.html ffmpeg -i source.mov \-map_metadata 0 -movflags use_metadata_tags \ linuxmi.mp4由于某些视频存储自定义元数据此命令可能无法正确复制所有数据。 https://www.mail-archive.com/libav-userffmpeg.org/msg12683.html 在编码视频文件时向容器添加元数据 我在向mp4或mov容器添加元数据时遇到一些问题不确定是否这是avformat中的问题或者如果我做错了什么。 在查看了二进制ffmpeg后我自己找到了答案它具有同样的问题如果做ffmpeg -i input.mp4 -metadata helloworld -c copy output.mp4...网上有更多关于命令行工具的信息比图书馆 :)...我在这里找到了https://superuser.com/questions/1208273/how-to-add-new-and-non-defined-metadata-to-an-mp4-file...输出用户元数据ffmpeg需要以下选项-movflags use_metadata_tags...所以我这样更改了avformat_write_header()调用av_dict_set(options, movflags, use_metadata_tags, 0);/* 编写流标头如果有的话。*/int ret avformat_write_header(oc_, options);// 字典复制到write_header中我们应该释放这是我们的副本av_dict_free(options);...现在我的metadatsa出现在输出文件中我希望这对有问题的人有所帮助那不是非常明显的行为https://video.stackexchange.com/questions/23741/how-to-prevent-ffmpeg-from-dropping-metadata 现在我发现use_metadata_tags选项是个坏主意因为它不是标准-例如Plex不再读取任何元数据。有趣的是我试图将更多的元数据导入Plex但这个选项实际上恰恰相反。在上面的代码中我可以看到MDTA的方式是写入所有键然后写入所有值而我想大多数程序都期望列表中的键/值对因此不知道如何读取MDTA元数据。 支持最多的解决方案 exiftool -TagsFromFile source.mp4 -All:All target.mp4问题解决 为了看清楚ffmpeg对metadata做了什么这里使用exiftool工具进行比较 $ exiftool -v input_old.mov 1 exiftool -v output.mov 2 $ vim -d 1 2注意看下面左边为原始视频、右边为ffmpeg编辑后视频metadata区别 Movie (SubDirectory) -- │ Movie (SubDirectory) -- [Movie directory] │ [Movie directory]// .....| UserData (SubDirectory) -- │ | UserData (SubDirectory) --| Unknown_free │ | [UserData directory]| Meta (SubDirectory) -- │ | | Meta (SubDirectory) --| [Meta directory] │ | | [Meta directory]| | Handler (SubDirectory) -- │ | | | Handler (SubDirectory) --| | [BinaryData directory, 26│ | | | [BinaryData directory,| | | HandlerClass │ | | | | HandlerClass | | | HandlerType mdta │ | | | | HandlerType mdta| | | HandlerVendorID │ | | | | HandlerVendorID | | | HandlerDescription │ | | | | HandlerDescription | | Keys (SubDirectory) -- │ | | | Keys (SubDirectory) --| | [Keys directory] │ | | | [Keys directory]| | | Added ItemList Tag 1.1 │ | | | | Added ItemList Tag 1.1| | | Added ItemList Tag 1.2 │ | | | | Added ItemList Tag 1.2| | | Added ItemList Tag 1.3 │ | | | | Added ItemList Tag 1.3| | | Added ItemList Tag 1.4 │ | | | | Added ItemList Tag 1.4| | | Added ItemList Tag 1.5 │ | | | | Added ItemList Tag 1.5| | | Added ItemList Tag 1.6 │ | | | | Added ItemList Tag 1.6| | ItemList (SubDirectory) --│ | | | | Added ItemList Tag 1.7| | [ItemList directory] │ | | | | Added ItemList Tag 1.8| | | LocationAccuracyHorizonta│ | | | | Added ItemList Tag 1.9| | | GPSCoordinates xxx. │ | | | | Added ItemList Tag 1.10| | | Make Apple │ | | | | Added ItemList Tag 1.11| | | Model iPhxxx. │ | | | ItemList (SubDirectory) -| | | Software xxxxxx │ | | | [ItemList directory]| | | CreationDate 2023-03-25│ | | | | MajorBrand qt结果是ffmpeg将Meta Box放在了Movie-UserData-Meta Box的位置。而这个位置在QuickTime中是无法识别的QuickTime的具体解释如下 https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/Metadata/Metadata.html Storage Location in a QuickTime File Within a QuickTime file, metadata can be stored within a movie atom (‘moov’), a track atom (‘trak’) or a media atom (‘mdia’). Only one metadata atom is allowed for each location. If there is user data and metadata stored in the same location, and both declare the same information, for example, declare a copyright notice, the metadata takes precedence具体的Metadata Structure构造在ffmpeg-libavformat/movenc.c文件中可见 /* meta data tags */static int mov_write_meta_tag(AVIOContext *pb, MOVMuxContext *mov,AVFormatContext *s){int size 0;int64_t pos avio_tell(pb); s:avio_wb32(pb, 0); /* size */ s: val:ffio_wfourcc(pb, meta); s:avio_wb32(pb, 0);if (mov-flags FF_MOV_FLAG_USE_MDTA) {mov_write_mdta_hdlr_tag(pb, mov, s); mov_write_mdta_keys_tag(pb, mov, s);mov_write_mdta_ilst_tag(pb, mov, s);}else {/* iTunes metadata tag */mov_write_itunes_hdlr_tag(pb, mov, s);mov_write_ilst_tag(pb, mov, s);}size update_size(pb, pos);return size;}所以只需要将Movie-UserData-Meta Box转移到Movie-Meta Box即可正确识别 具体步骤 修改libavformat/movenc.c如下 $ git diff movenc.cint64_t pos avio_tell(pb);avio_wb32(pb, 0); /* size */ffio_wfourcc(pb, meta); - avio_wb32(pb, 0);//TODO - update2//avio_wb32(pb, 0); //Offset to - moov/metaif ((size avio_close_dyn_buf(pb_buf, buf)) 0) {/** TODO update1*创建一个box,udta box 的大小应该包括 8 个字节的 box 头:*- 4 个字节的 box 大小*- 4 个字节的 box 类型*/if (!(mov-mode MODE_3GP) !(mov-mode MODE_MOV !(mov-flags FF_MOV_FLAG_USE_MDTA))) {avio_wb32(pb, 8); //置空moov-uata boxffio_wfourcc(pb, udta);avio_write(pb, buf, size); //将moov-uata-meta box偏移到moov-meta box}else{avio_wb32(pb, size 8);ffio_wfourcc(pb, udta);avio_write(pb, buf, size);}}av_free(buf);重新编译make再次执行保存metadata $ ./ffmpeg -i input_old.mov -c copy -movflags use_metadata_tags -metadata nameYJ output.mov -y测试 //ios-switch let _asset AVAsset(url: videoURL) let metadata _asset.metadata print(start\(metadata.count)) for item in metadata {if let identifier item.identifier?.rawValue,let value item.value {print(Identifier: \(identifier), Value: \(value))} } print(end)//Print : start10 Identifier: mdta/major_brand, Value: qt Identifier: mdta/minor_version, Value: 0 Identifier: mdta/compatible_brands, Value: qt Identifier: mdta/com.apple.quicktime.creationdate, Value: 2023-03-25T14:57:050800 Identifier: mdta/com.apple.quicktime.location.accuracy.horizontal, Value: 35.000000 Identifier: mdta/com.apple.quicktime.location.ISO6709, Value: xxxx Identifier: mdta/com.apple.quicktime.make, Value: Apple Identifier: mdta/com.apple.quicktime.model, Value: iPhoxxx Identifier: mdta/com.apple.quicktime.software, Value: xxx Identifier: mdta/name, Value: YJ Identifier: mdta/encoder, Value: Lavf58.29.100 end阅读过文章 https://www.qiniu.com/qfans/qnso-70261246#commentshttps://trac.ffmpeg.org/ticket/4209?cversion2cnum_hist25#comment:25https://trac.ffmpeg.org/ticket/4209https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/Metadata/Metadata.html ffmpeg命令行解析调试流程记录 main ffmpeg_parse_options split_commandline - av_log(NULL, AV_LOG_DEBUG, Reading option %s ..., opt); [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hQmJ9qBh-1682697624690)(…/Library/Application Support/typora-user-images/image-20230311144719815.png)] 这里可以直接快速断电在fftools/cmdutils.c823即可查看每次循环得到的参数 split_commandline后就会解析完成所有参数命令 fftools/ffmpeg_opt.c - ffmpeg_parse_options-open_files() 会读取输入文件并打印输入文件的数据比如metadata fftools/ffmpeg_opt.c3331- ret open_files(octx.groups[GROUP_OUTFILE], “output”, open_output_file); movenc.c源码分析 命令如下 set args -i input_old.mov -movflags use_metadata_tags -c copy output.mov -y判断用户态释放输入了-use-metadata参数 3630 static int mov_write_meta_tag(AVIOContext *pb, MOVMuxContext *mov,3631 AVFormatContext *s)3632 {3633 int size 0;3634 int64_t pos avio_tell(pb);→ 3635 avio_wb32(pb, 0); /* size */3636 ffio_wfourcc(pb, meta);3637 avio_wb32(pb, 0);3638 if (mov-flags FF_MOV_FLAG_USE_MDTA) {3639 mov_write_mdta_hdlr_tag(pb, mov, s);//hdlr 标签用于指定这些自定义元数据的类型比如使用 mdta 表示这是用户自定义元数据。3640 mov_write_mdta_keys_tag(pb, mov, s);//keys 标签用于指定这些自定义元数据的键名和键类型比如使用 com.apple.quicktime.description 表示这是 QuickTime 描述信息的键名。3641 mov_write_mdta_ilst_tag(pb, mov, s);//ilst 标签用于实际存储这些自定义元数据的值。3642 }主要是下面几个函数 mov_write_mdta_keys_tag(pb, mov, s);mov_write_mdta_ilst_tag(pb, mov, s);static int mov_write_mdta_ilst_tag(AVIOContext *pb, MOVMuxContext *m ov,AVFormatContext *s){AVDictionaryEntry *t NULL;int64_t pos avio_tell(pb); s:int count 1; /* keys are 1-index based */avio_wb32(pb, 0); /* size */ s: val:ffio_wfourcc(pb, ilst); s:while (t av_dict_get(s-metadata, , t, AV_DICT_IGNORE_SUFFIX )) { m: key: prev: flags:int64_t entry_pos avio_tell(pb); s:avio_wb32(pb, 0); /* size */ s: val:avio_wb32(pb, count); /* key */ s: val:mov_write_string_data_tag(pb, t-value, 0, 1); data: lang: lupdate_size(pb, entry_pos); pos:count 1; //TODO 这里改了有用}return update_size(pb, pos);}
http://www.w-s-a.com/news/122208/

相关文章:

  • 本地生活网站 源码重庆本地网站有哪些
  • 企业网站域名服务器国外html响应式网站
  • 东莞网站建设策划企业网站推广策划方法
  • 网站的图片怎么制作WordPress交互式网站
  • pc网站增加手机站什么专业学网页设计制作
  • 婚庆公司网站模板wordpress用什么框架
  • 高校网站建设的时效性长沙市网站建设
  • 合肥网站建设市场四川建设网官网住房和城乡厅官网官方
  • 天行健君子以自强不息网站建设江西网站做的好的企业文化
  • 建网站内容谷歌搜索引擎优化
  • 网站建设与管理案例教程第三版答案网站建设策划书范文六篇精选
  • 建设工程项目在哪个网站查询实时网站推广的最终目的是
  • 个人网站可以做淘客网站设置的参数
  • 自适应网站制作公司做室内设计通常上的网站
  • 网站建设项目采购公告建设网站公司建网页
  • 自己做网站怎么推广网站建设应该考虑哪些方面
  • 我做的网站手机上不了wordpress插件整站搬家
  • 河南省和建设厅网站首页西安找建网站公司
  • 网页设计基础代码网站进出成都最新通知
  • 如何创建网站乐清网络科技有限公司
  • 沈阳市网站制作艺术字体logo设计生成器
  • 网站设计常用软件都有哪些中国建设银行官方招聘网站
  • 证券投资网站建设视频直播怎么赚钱的
  • 建设酒店网站ppt模板下载郑州小程序设计外包
  • 网站建设自我总结google推广公司
  • 安全网站建设情况wordpress 评论表单
  • 网站建设发言材料个人网站推广软件
  • php建站软件哪个好南京哪家做网站好
  • 排名好的手机网站建设番禺网站建设专家
  • 番禺怎么读百度有专做优化的没