3

我知道transpose如果我事先知道视频是如何旋转的,我可以使用视频过滤器转置视频,并使用类似这样的方式更新元数据-metadata:s:v:0 rotate=0,但是如何根据视频中的元数据旋转位使用正确的转置值?基本上我想将旋转信息烘焙到视频数据本身,并清除旋转元数据。

是否可以单独使用 ffmpeg 执行此操作,或者我必须编写某种脚本来提取旋转值,并使用适当的选项调用 ffmpeg?如果是后者,是否有人已经有了工作脚本?:) 我认为是一个人使用exiftool和 rails 的方法;没有它有可能吗?

4

1 回答 1

2

旋转信息属于“视频流”,而不是视频文件(也有音频流)。所以你需要查看 AVStream.metadata。

AVFormatContext *inputFormatCtx = ...;
for(int i=0; i<inputFormatCtx->nb_streams; i++) {
        if(inputFormatCtx->streams[i]->codec->codec_type==AVMEDIA_TYPE_VIDEO) {

            AVDictionary* metadata = (AVDictionary*)inputFormatCtx->streams[i]->metadata;

            for(int i =0;i<metadata->count;i++)
            {
                AVDictionaryEntry entity = (AVDictionaryEntry)(metadata->elems[i]);
                LOGD("metadata %s %s",entity.key,entity.value);
            }

            break;
        }
}
于 2014-07-10T09:29:48.937 回答