在ffmpeg中读取JPEG
Reading JPEG in ffmpeg
我试图让ffmpeg编码几个单独的JPEG图像到Android上的视频。我已经成功地为Android构建了它(参见本文末尾的配置字符串)。
我可以用随机生成的帧内容编码h.263+视频,否则ffmpeg似乎工作得很好。
一个类似的问题表明,以下代码应该足以将图像加载到AvFrame
:
// Make sure we have the codecs
av_register_all();
AVFormatContext *pFormatCtx;
int ret = av_open_input_file(&pFormatCtx, imageFileName, NULL, 0, NULL);
if (ret != 0) {
printf("Can't open image file '%s': code %d, %s",
imageFileName, ret, strerror(AVERROR(ret)));
}
上面返回正确的绝对文件路径和错误:
Failed '/sdcard/DCIM/Camera/IMG083.jpg': code -1094995529,未知错误:1094995529
顺便说一下,如果我省略av_register_all()
,它返回错误2。
我用以下参数编译了ffmpeg:
。linux/configure——目标os =——prefix = $前缀——enable-cross-compile——extra-libs = " -lgcc "——拱=手臂预先构建的/bin/arm-linux-androideabi-gcc - cc = $——cross-prefix = $预先构建的/bin/arm-linux-androideabi -——纳米=预先构建的/bin/arm-linux-androideabi-nm美元——sysroot = $平台——extra-cflags=" -O3 -fpic -DANDROID -DHAVE_SYS_UIO_H=1 -Dipv6mr_interface=ipv6mr_ifindex -fasm -Wno-psabi -fno-short-enums -fno-strict-aliasing -finline-limit=300 $OPTIMIZE_CFLAGS "——启用共享——静态——extra-ldflags="-Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib - nosdlib -lc -lm -ldl -llog"——disable-everything——enable-demuxer = mov——enable-demuxer = h264——disable-ffplay——enable-protocol =文件——enable-avformat——enable-avcodec——enable-decoder = mjpeg——enable-decoder = png——enable-parser = h264——enable-encoder = h263——enable-encoder = h263p——disable-network——enable-zlib——disable-avfilter——disable-avdevice
欢迎提出任何建议!
此错误表明JPEG所需的解码器没有与ffmpeg一起构建。我相信启用mjpeg
足以使其工作,但出于沮丧,我只是启用了所有内容,并且它工作了。
我建议将--enable-decoder=mjpeg
添加到配置字符串中,并使用NDK为Android重建库。如果这不起作用,删除--disable-everything
并单独删除不兼容的组件,直到它成功编译(我相信只是添加--disable-indev
对Android有效)。
注意:除了"mjpeg" muxer/demuxer/解析器外,还需要"image2" muxer/demuxer.
在调用./configure
时需要启用mjpeg和image2
--enable-decoder=mjpeg --enable-demuxer=image2
我刚刚检查了我的代码,读取jpg。
- 理解boost::asio-async_read在无需读取内容时的行为
- 使用新行和不使用新行读取文件
- 读取文件并输入到矢量中
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 无法找到/读取配置文件.conf-FileIOException
- 如何使用Luacneneneba API正确读取字符串和表参数
- 从JPEG文件中读取Exif缩略图
- 从提升读取 jpeg 尺寸
- JPEG-从文件读取焦距
- 在 C 和 C++ 中从 JPEG 读取黑白像素作为数组
- 使用c++在windows上读取/写入exif/jpeg
- 使用boost::gil从内存中读取JPEG图像
- 在ffmpeg中读取JPEG
- opencv从缓冲区读取jpeg图像
- 根据镜像效果,亮度和缩放级别读取jpeg文件
- 在发布版本中使用QImage读取Jpeg错误
- 需要帮助在读取JPEG文件使用libjpeg
- 在不使用外部库的情况下在c++中读取灰度.jpeg图像