0

FFMPEG ライブラリを使用して Android アプリケーションでビデオをデマルチプレクサしようとしています。すべてが正常に機能しています。しかし、c コードからファイルを作成してファイル fopen に異なるストリームを書き込もうとすると、NULL が返されます。その後進めません。私のコードは

int ret , got_frame;
av_register_all();
LOGE("Registered formats");
err = av_open_input_file(&pFormatCtx, "file:/mnt/sdcard/input.mp4", NULL, 0, NULL);
LOGE("Called open file");
if(err!=0) {
    LOGE("Couldn't open file");
    return;
}
LOGE("Opened file");

if(av_find_stream_info(pFormatCtx)<0) {
    LOGE("Unable to get stream info");
    return;
}

videoStream = -1;
audioStream = -1;
for (i=0; i<pFormatCtx->nb_streams; i++) {
    if(pFormatCtx->streams[i]->codec->codec_type==CODEC_TYPE_VIDEO) {
        videoStream = i;
        if(audioStream != -1)
        break;
    }

    if(pFormatCtx->streams[i]->codec->codec_type==CODEC_TYPE_AUDIO) {
                audioStream = i;
                if(videoStream != -1)
                break;
            }

}
if(videoStream==-1) {
    LOGE("Unable to find video stream");
    return;
}
if(audioStream==-1) {
      LOGE("Unable to find audio stream");
      return;
  }

LOGI("Video stream is [%d] Audio stream [%d]", videoStream,audioStream);

pCodecCtx=pFormatCtx->streams[videoStream]->codec;

pCodecCtxAudio=pFormatCtx->streams[audioStream]->codec;

LOGI("Video size is [%d x %d]", pCodecCtx->width, pCodecCtx->height);

videoOut = fopen("file:/mnt/sdcard/videoout.mp4","wb");
if (videoOut == NULL) {
    LOGE("Unable to open output video");
    return;
   } 

私のコードの問題は何ですか。アプリケーションが外部ストレージに書き込む権限を有効にしました。また、指定したパスも正しいです。助けて。

4

1 に答える 1