0

大きな問題を解決しようとしていますが、非常に小さな問題で立ち往生しています。ffmpeg を使用してビデオ ファイル内のオーディオ ストリームを読み取ろうとしていますが、ストリームのファイル全体をトラバースする必要があるループは数回しか実行されません。他の人が非常に同様に使用しているため、問題が何であるかを理解できません。以下は私のコードです確認してください:

JNIEXPORT jint JNICALL Java_ru_dzakhov_ffmpeg_test_MainActivity_logFileInfo
    (JNIEnv * env,
     jobject this,
     jstring filename
    )
{

AVFormatContext *pFormatCtx;
int             i,j,k, videoStream, audioStream;
AVCodecContext  *pCodecCtx; 
AVCodec         *pCodec;
AVFrame         *pFrame; 
AVPacket        packet;
int             frameFinished;
float           aspect_ratio;
AVCodecContext  *aCodecCtx;
AVCodec         *aCodec;
//uint8_t inbuf[AUDIO_INBUF_SIZE + FF_INPUT_BUFFER_PADDING_SIZE];
j=0;

av_register_all();
char *str = (*env)->GetStringUTFChars(env, filename, 0);
 LOGI(str);
// Open video file
if(av_open_input_file(&pFormatCtx, str, NULL, 0, NULL)!=0)
    ;

// Retrieve stream information
if(av_find_stream_info(pFormatCtx)<0)
    ;

 LOGI("Separating");
// Find the first video stream  
videoStream=-1;
audioStream=-1;

for(i=0; i<&pFormatCtx->nb_streams; i++) {

    if(pFormatCtx->streams[i]->codec->codec_type==AVMEDIA_TYPE_AUDIO)
    {
        LOGI("Audio Stream");
        audioStream=i;
        }
}
av_write_header(pFormatCtx);
if(videoStream==-1)
     LOGI("Video stream is -1");    


if(audioStream==-1)
     LOGI("Audio stream is -1");

return i;}
4

1 に答える 1

0

ライブラリのロードとアンロードに関連する問題が発生している可能性があり、それが jni を介した繰り返しの呼び出しにどのように関連するか。あなたの症状が何であるかはわかりませんが、解決策がない場合は読んでみてください:

ここ

そしてここ

于 2013-04-14T19:57:47.297 に答える