2012-04-12 20 views
1

は私が前のスレッドを読んで、これはNISHAnTからの応答、 FFMPEG: Dynamic change of bit_rate for VideoのFFmpeg:ビットレートの変化を動的に

avcodec_init(); 

avcodec_register_all(); 

codec = avcodec_find_encoder(CODEC_ID_H263); 

c = avcodec_alloc_context(); 

picture= avcodec_alloc_frame(); 

    c->bit_rate = bitrate; 
    c->width = w; 
    c->height = h; 
    c->time_base= (AVRational){1,framerate}; 
    c->pix_fmt = PIX_FMT_YUV420P; 

avcodec_close(c); 

av_free(c); 

であり、これは私のコードです:私が追加しようとしました

if(previous_BR != cur_BR){ 
     previous_BR = cur_BR; 

     AVCodecContext* new_c = av_mallocz(sizeof(AVCodecContext));; 

     avcodec_copy_context(new_c, ost_table[0]->st->codec); 


     avcodec_close(ost_table[0]->st->codec); 
     av_free(ost_table[0]->st->codec); 

     avcodec_init(); 
     avcodec_register_all(); 

     ost_table[0]->enc = avcodec_find_encoder(CODEC_ID_H264); 
     new_c = avcodec_alloc_context3(ost_table[0]->enc); 
     ost_table[0]->st->codec = new_c; 

     AVFrame *picture= avcodec_alloc_frame(); 

     new_c->bit_rate = cur_BR; 
     new_c->width = 352; 
     new_c->height = 288; 
     int framerate = 30; 
     new_c->time_base= (AVRational){1,framerate}; 
     new_c->pix_fmt = PIX_FMT_YUV420P; 
     new_c->codec_type = AVMEDIA_TYPE_VIDEO; 
     new_c->codec_id = CODEC_ID_H264;} 

トランスコードする私のコード()、しかし、私のコードを通過した後にffmpegが終了します。 私のコードに何か問題がありますか? またはその他に何を追加する必要がありますか?

"redo:"の後ろにコードを置くと、ループバックして再帰的に戻ります。 助けてください!

ありがとうございます。

答えて

0

cは、AVCodecContext構造である。 再生するファイルの種類に合わせて最初にffmpegを設定する必要があります。最初のbuild.shファイルをffmpegのルートディレクトリに入れてビルドします。 codec9coder-decoderを設定する必要のあるファイルのタイプについては )とmuxer/demuxerを使用してください。 例えばaviファイルを再生するには、それぞれMPEG「AVI」および「MPEG4」であるavi用のmuxer/demuxerおよびコーデックを設定する必要があります。

+0

こんにちは、返信ありがとう、私は上記のコードが動作しているかどうかを知りたいのですが、どこにffmpeg.cを入れるべきか、自分のアプリで使う必要があります。しかし、私は既存のffmpeg.cを変更する方が好きです。 –

+0

それがffmpegに追加されていれば、あなたはffmpegコードを入れ、ヘッダファイルにそのプロトタイプを定義する必要があります。そうでなければ、別のアプリケーションを作成してlibavcodec(および他のffmpegライブラリ)にリンクする必要があります。ビットレートのエラー処理条件を設定しなければなりません。CODEC_ID_H263(h.263)によって受け入れられないビットレートを入れることはできません。 – Raulp

+0

こんにちは、私のコードをアップロードし、私はそれを動作させるために変更する必要があるものを見てください?やり直しの後にそれを置くことは大丈夫ですか? –

関連する問題