使用ffmpeg基于旋转元数据旋转视频?

时间:2014-04-02 05:48:27

标签: video ffmpeg rotation transpose exiftool

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

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

1 个答案:

答案 0 :(得分:1)

旋转信息属于"视频流"而不是视频文件(也有音频流)。所以你需要查看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;
        }
}