2014-04-02 69 views
3

我知道我可以轉與transpose視頻濾鏡的視頻,如果我知道這個視頻是如何提前旋轉,使用這樣的事情-metadata:s:v:0 rotate=0更新元數據,但我該如何使用依賴於元數據正確的移調值旋轉位在視頻中?基本上我想將旋轉信息烘焙到視頻數據本身中,並清除旋轉元數據。使用ffmpeg根據旋轉元數據旋轉視頻?

是否有可能單獨與ffmpeg的做到這一點,或者我必須寫某種腳本來提取旋轉值,並調用的ffmpeg用適當的選項?如果是後者,是否有人已經有工作腳本了? :)我看到this爲使用exiftool和導軌一個人的做法;有沒有可能做到這一點?

回答

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; 
     } 
} 
+0

啊,我想知道,如果它可以只用命令行工具來完成,而無需使用的lib編寫代碼... – qix

+0

如果需要禁用自動旋轉什麼? –