3

transposeビデオがどのように回転されるかを事前に知っていれば、ビデオ フィルタを使用してビデオを転置し、このようなものを使用してメタデータを更新-metadata:s:v:0 rotate=0できることはわかっていますが、ビデオのメタデータ回転ビットに応じて正しい転置値を使用するにはどうすればよいですか? 基本的には、回転情報をビデオ データ自体に焼き付け、回転メタデータをクリアしたいと考えています。

ffmpeg だけでこれを行うことは可能ですか、または回転値を抽出するスクリプトを作成し、適切なオプションで ffmpeg を呼び出す必要がありますか? 後者の場合、誰かが既に動作するスクリプトを持っていますか? :)これexiftoolは、レールを使用する 1 人の男のアプローチだと思います。なしでそれを行うことは可能ですか?

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 に答える