我知道我可以使用transpose
视频过滤器转置视频,如果我事先知道视频如何旋转,并使用类似-metadata:s:v:0 rotate=0
之类的内容更新元数据,但我该如何使用正确的转置值取决于视频中的元数据旋转位?基本上我想将旋转信息烘焙到视频数据本身,并清除旋转元数据。
是否可以单独使用ffmpeg执行此操作,还是必须编写某种脚本来提取旋转值,并使用适当的选项调用ffmpeg?如果是后者,是否还有人有工作脚本? :)我使用exiftool
和rails看到this作为一个人的方法;没有可能吗?
答案 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;
}
}