自定义元数据未保存 [英] custom metadata not saved

查看:56
本文介绍了自定义元数据未保存的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


1.       
我试图为我的wmv文件设置一些自定义元数据通过编码器4 SDK。 但似乎未保存自定义元数据。 标准元数据已保存。 
以下是代码


公开
void test_encode( bool bThumbnail)


        {


MediaItem mediaItem =
new
MediaItem (m_sOutputPath + m_sFileNameWithoutExtension +
@" .xesc" );


'p>的            mediaItem.OutputFormat.VideoProfile.Size = mediaItem.OriginalVideoSize;


 


MetadataCollection meta = mediaItem.Metadata; ;


" Title" ] =
" MyTitle" ;


<跨度风格= "字体家庭:"窄Arial","无衬线"">&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;&NBSP;&NBSP;&NBSP; meta [" Rating" ] =
" 77" ;


 


&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; meta [" Category" ] =
" MyCategory" ;


<跨度风格= "字体家庭:"窄Arial","无衬线"">&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP ;&NBSP;&NBSP;&NBSP; meta [" CustomTag" ] =
" my custom tag" ;


 


'p>的&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;
int count = meta.Count;
//给出4


&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;
作业作业=
工作
();



@" .wmv" ;


&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; job.Encode();



MediaItem mediaItemNew =
new
MediaItem (m_sOutputPath + m_sFileNameWithoutExtension +
@" .wmv" );


int countNew = mediaItemNew.Metadata.Count;
//给出2,此处不保存自定义元数据



代码有问题吗? 谢谢。


 


>

解决方案

实际上,如果您在元数据查看器或二进制编辑器中打开文件,您会发现您的元数据已正确保存,但是编码器没有读取它背部。这是自v1以来Encoder的一种行为,它主要与安全性有关。
我们只读回我们理解的元数据并忽略其余部分,以确保不要通过用户不想分享的元数据块。


请随意如果这是一个重要的场景,建议/投票支持要添加的新功能:
http:// expressionencoder.uservoice.com/forums/58981-general


1.       I tried to set some custom metadata for my wmv files through Encoder 4 SDK.  But it seems that the custom metadata is not saved.  The standard metadata is saved.  The following is the code

public void test_encode(bool bThumbnail)

        {

            MediaItem mediaItem = new MediaItem (m_sOutputPath + m_sFileNameWithoutExtension + @".xesc" );

            mediaItem.OutputFormat.VideoProfile.Size = mediaItem.OriginalVideoSize;

 

            MetadataCollection meta = mediaItem.Metadata; ;

            meta["Title" ] = "MyTitle" ;

            meta["Rating" ] = "77" ;

 

            meta["Category" ] = "MyCategory" ;

            meta["CustomTag" ] = "my custom tag" ;

 

            int count = meta.Count; // gives 4

             Job job = new Job ();

            job.MediaItems.Add(mediaItem);

            job.DefaultMediaOutputFileName = m_sFileNameWithoutExtension + @".wmv" ;

             job.Encode();

            job.Dispose();

             MediaItem mediaItemNew = new MediaItem (m_sOutputPath + m_sFileNameWithoutExtension + @".wmv" );

            int countNew = mediaItemNew.Metadata.Count; // gives 2, custom metadata is not saved here

        }

Is there something wrong with the code?  Thanks.

 


解决方案

Actually, if you crack the file open in a metadata viewer or in a binary editor, you'll find out that your metadata was properly saved, but that Encoder doesn't read it back. This has been a behavior of Encoder since v1, which is mostly related to security. We only read back the metadata we understand and ignore the rest to ensure with don't passthrough metadata chunks that the users don't want to share.

Please, feel free to suggest/vote for a new feature to be added if this is an important scenario for you: http://expressionencoder.uservoice.com/forums/58981-general.


这篇关于自定义元数据未保存的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆