2017-04-27 7 views
0

復号化せずにMPEG4ビデオからDCT係数および動きベクトルを抽出したい。私は答えを探していて何も役に立たなかった。符号化された領域におけるDCT係数および動きベクトル抽出

この作業やコードを実行する可能性はありますか?

どのようにして、ffmpegを使用してコード化されたコードを読み取るコードを書くことができましたか。

void CFfmpegmethods::VideoRead(){ 
    //cout << "this is video read" << endl; 

    const char *url = "H:/Sanduni_projects/ad_2.mp4"; 

    AVFormatContext *s = NULL; 
    int ret = avformat_open_input(&s, url, NULL, NULL); 
    if (ret < 0) 
     //abort(); 

    AVDictionary *options = NULL; 

    av_dict_set(&options, "video_size", "640x480", 0); 
    av_dict_set(&options, "pixel_format", "rgb24", 0); 

    if (avformat_open_input(&s, url, NULL, &options) < 0){ 
     //abort(); 
    } 

    av_dict_free(&options); 

    AVDictionaryEntry *e; 

    if (e = av_dict_get(options, "", NULL, AV_DICT_IGNORE_SUFFIX)) { 
     fprintf(stderr, "Option %s not recognized by the demuxer.\n", e->key); 
     //abort(); 
    } 

    avformat_close_input(&s); 
} 
+0

これは、ヘルプサイトあなたのコードを共有したり、あなたはまだ試したものを私たちに示してあります。それから、私たちだけがあなたを助けることができます。 –

+0

私はちょうど復号化プロセスなしで圧縮ドメインのビデオから上記の特徴を抽出することが可能かどうかを知りたいです。それで全部です。 –

+0

ようこそスタックオーバーフロー!あなたの質問を編集して[これまでに行ったコード](http://whathaveyoutried.com)を表示してください。問題を抱えているコードのアウトライン(ただし、好ましくは[mcve])を含める必要があります。次に、特定の問題を解決することができます。 [ask]も読んでください。 –

答えて

0

私は以下のように動きベクトルを抽出することができました。ここで私は座標を使って配列を生成します。それはベクトルの初期位置と目的地です。

static int MV_generation(const AVPacket *pkt) 
{ 
    double x_src_val = 0; 
    double y_src_val = 0; 
    double x_dst_val = 0; 
    double y_dst_val = 0; 

int ret = avcodec_send_packet(video_dec_ctx, pkt); 

while (ret >= 0){ 

    ret = avcodec_receive_frame(video_dec_ctx, frame); 

    if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF) { 
     break; 
    } 

    if (ret >= 0) { 
     AVFrameSideData *sd; 
     sd = av_frame_get_side_data(frame, AV_FRAME_DATA_MOTION_VECTORS); 

     if (sd) { 
      const AVMotionVector *mvs = (const AVMotionVector *)sd->data; 
      int size_sd = sd->size; 

      } 

     av_frame_unref(frame); 
    } 
} 
return 0; 

}

+0

これまでのコードです。私はエンコードされたビデオを読むことができ、私はテキストファイルにデータを書きました。しかし、そこに書かれたデータは読めるものではありません。 –

関連する問題