Android ffmpeg avio_open()无法打开输出文件以写入编码流

Android ffmpeg avio_open()无法打开输出文件以写入编码流,android,ffmpeg,java-native-interface,codec,Android,Ffmpeg,Java Native Interface,Codec,我正在尝试使用针对android的ffmpeg ported将原始PCM转换为mp4。我面临一个问题,avio_open返回负值,表示无法打开sdcard中保存的输出文件sample.mp4。我给出了类似/sdcard/sample.mp4的文件路径 avio_open(&oc->pb, filename, AVIO_FLAG_WRITE) returns -2 /*如果需要,请打开输出文件*/ if (!(fmt->flags & AVFMT_NOFILE))

我正在尝试使用针对android的ffmpeg ported将原始PCM转换为mp4。我面临一个问题,avio_open返回负值,表示无法打开sdcard中保存的输出文件sample.mp4。我给出了类似/sdcard/sample.mp4的文件路径

avio_open(&oc->pb, filename, AVIO_FLAG_WRITE)  returns -2
/*如果需要,请打开输出文件*/

 if (!(fmt->flags & AVFMT_NOFILE)) {
     if (avio_open(&oc->pb, filename, AVIO_FLAG_WRITE) < 0) {
         fprintf(stderr, "Could not open '%s'\n", filename);
         return 1;
     }
 }
if(!(fmt->flags&AVFMT\u NOFILE)){
如果(avio_打开(&oc->pb,文件名,avio_标志_写入)<0){
fprintf(stderr,“无法打开“%s”\n”,文件名);
返回1;
}
}

有什么想法吗?

您需要为启用mp4而构建ffmpeg。您已经这样做了。为此,您必须在ffmpeg根目录的build.sh文件中为mp4格式启用muxer和codec(coder-decoder)。codec是我认为它是MPEG4。构建它,然后将其用于mp4文件。

我也有同样的问题,但我的情况是,我启用了编解码器和多路复用器。通过启用文件协议--enable protocol=file解决了我的问题。

hi您是否将音频和视频混合在一起,例如aac和h264匹配时间line@Dmytro在你的例子中,什么是编解码器?你是否试图写入一个文件(保存流)?在我的例子中,它是mpeg4。任务是将视频流从vlib重新编码到mpeg4,并在没有音频的情况下保存到文件(mp4)。