<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[解决ROS的usb_cam节点无法正常读取mjpeg格式摄像头的方法]]></title><description><![CDATA[<h5>本文解决办法<a href="http://answers.ros.org/question/217382/garbled-image-problem-on-usb_cam/" target="_blank" rel="noopener noreferrer">来源</a>:http://answers.ros.org/question/217382/garbled-image-problem-on-usb_cam/</h5>
<h4>使用usb_cam读取mjpeg格式的usb摄像头时，如果提示类似下述的错误，是因为链接的ffmpeg解码库存在问题。</h4>
<pre><code>[mjpeg @ 0x223e460] overread 8
[mjpeg @ 0x223e460] overread 8
[mjpeg @ 0x223e460] error count: 68
[mjpeg @ 0x223e460] error y=38 x=1
[mjpeg @ 0x223e460] error count: 64
[mjpeg @ 0x223e460] error y=34 x=1
[mjpeg @ 0x223e460] error count: 68
[mjpeg @ 0x223e460] error y=40 x=4
[mjpeg @ 0x223e460] error count: 64
[mjpeg @ 0x223e460] error y=42 x=1
[mjpeg @ 0x223e460] error count: 64
[mjpeg @ 0x223e460] error y=31 x=0
[mjpeg @ 0x223e460] error count: 64
[mjpeg @ 0x223e460] error y=30 x=37
[mjpeg @ 0x223e460] overread 8
</code></pre>
<h4>解决办法是安装新版本的ffmpeg,然后修改usb_cam的cmake依赖库链接设置</h4>
<h5>1.ffmpeg的安装</h5>
<pre><code>mkdir ~/ffmpeg_sources
cd ~/ffmpeg_sources
wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
tar xjvf ffmpeg-snapshot.tar.bz2
cd ffmpeg
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig"
./configure   --prefix="$HOME/ffmpeg_build"   --pkg-config-flags="--static"   --extra-cflags="-I$HOME/ffmpeg_build/include"   --extra-ldflags="-L$HOME/ffmpeg_build/lib"   --bindir="$HOME/bin"     --enable-shared --enable-pic --extra-cflags="-fPIC"
make -j
make install
</code></pre>
<h5>2. 现在ffmpeg开发库已经安装在home目录下的ffmpeg_build文件夹内，修改usb_cam的cmake文件</h5>
<p dir="auto">为了方便自己，这里有一份已经修改好的<a href="https://github.com/BlueWhaleRobot/usb_cam.git" target="_blank" rel="noopener noreferrer">usb_cam代码</a>，git clone下来后，将CMakeLists.txt文件中对应下文部分的xiaoqiang替换成自己的用户名即可。ffmpeg库API一直在变化更新，上述修改好的usb_cam版本解决了这些匹配问题，因此推荐使用。</p>
<pre><code>## pkg-config libraries
## find_package(PkgConfig REQUIRED)
## pkg_check_modules(avcodec libavcodec REQUIRED)
## pkg_check_modules(swscale libswscale REQUIRED)
set(avutil_LIBRARIES /home/xiaoqiang/ffmpeg_build/lib/libavutil.so.55)
set(avcodec_LIBRARIES /home/xiaoqiang/ffmpeg_build/lib/libavcodec.so.57)
set(swscale_LIBRARIES /home/xiaoqiang/ffmpeg_build/lib/libswscale.so.4)
set(ffmpeg_INCLUDE_DIRS  /home/xiaoqiang/ffmpeg_build/include/)
</code></pre>
<h5>３.执行catkin_make，重新编译usb_cam，问题解决</h5>
<p dir="auto">例如</p>
<pre><code>cd ~/Documents/ros
catkin_make
</code></pre>
<h5>４.对于蓝鲸智能的小强用户，现在使用下述命令可以正常以mjpeg方式获取小车的usb摄像头数据，修改launch文件中的分辨率为1920*1080还能获取30fps的1080p图像。</h5>
<pre><code>roslaunch usb_cam ov2610mjpg.launch
</code></pre>
]]></description><link>http://community.bwbot.org/topic/144/解决ros的usb_cam节点无法正常读取mjpeg格式摄像头的方法</link><generator>RSS for Node</generator><lastBuildDate>Fri, 07 Aug 2026 11:16:39 GMT</lastBuildDate><atom:link href="http://community.bwbot.org/topic/144.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 21 Dec 2016 16:11:40 GMT</pubDate><ttl>60</ttl></channel></rss>