ZED ROS 2 Driver Launch Fails with ffmpeg Error in Isaac ROS Container

Hardware: Jetson Orin Nano 8GB Developer Kit Software: Fresh flash of JetPack 6.2.1 (L4T 36.4.4) Docker Image: nvcr.io/nvidia/isaac/ros:aarch64-ros2_humble_77e6a678c2058abf96bedcb8f7dd4330

Problem Summary: After a successful build of the ZED ROS 2 driver inside the official Isaac ROS container, the driver fails to launch cleanly. It enters a degraded mode, running but logging multiple ffmpeg errors related to a missing libx264 encoder, which prevents it from publishing usable video data.

  1. Follow the official “Isaac ROS ZED Setup” guide from the Stereolabs website precisely. The colcon build of the ZED ROS 2 driver completes successfully inside the container.

  2. Verify the SDK: Confirm that the non-ROS /usr/local/zed/tools/ZED_Explorer tool works correctly inside the container, proving the ZED SDK and hardware access are functional.

  3. Attempt to launch the ROS 2 driver inside the container with the recommended command:source install/setup.bash
    ros2 launch zed_wrapper zed_camera.launch.py camera_model:=zed2i enable_ipc:=false

Observed Result:

  1. The node starts and continues to run (the cursor flashes).

  2. The startup log shows multiple red errors: [ERROR] [zed.zed_node]: Failed to load plugin image_transport/ffmpeg_pub, error string: unknown encoder: libx264

  3. Running ros2 topic list in a second terminal confirms that all ZED topics are being advertised.

The ffmpeg library in the base Isaac ROS Docker image appears to be missing the libx264 codec. This prevents the ZED driver’s image_transport plugins from loading. Although the node does not crash, it cannot publish usable video data, making it non-functional for any vision-based tasks. The ffmpeg package in the official Docker image needs to be fixed.

Hi @dennisdarrow , if you’re using Isaac ROS then you probably want to use the isaac_ros_h264_encoder package. Add it to your launchfile and you composable container and disable the ffmpeg transport plugins for all the zed image publishers. you don’t need them as you’ll use the nvidia package to do the encoding

Hello @beniaminopozzan,

Thank you for the suggestion to use the isaac_ros_h264_encoder package and disable the ffmpeg plugins. I have run a test based on your advice.

Steps Taken:

  1. Started inside the official Isaac ROS dev container with a successfully built zed-ros2-wrapper (humble-v4.2.5 branch).

  2. Installed the ros-humble-isaac-ros-h264-encoder package via apt-get.

  3. Edited src/zed-ros2-wrapper/zed_wrapper/config/common_stereo.yaml to set ffmpeg_image_transport: false.

  4. Rebuilt the workspace with colcon build --packages-select zed_wrapper.

  5. Launched the ZED driver.

Result: Unfortunately, the result is the same. The startup log still shows multiple Failed to load plugin image_transport/ffmpeg_pub, error string: unknown encoder: libx264 errors.

Question: It seems the ZED driver is not automatically detecting the isaac_ros_h264_encoder and is still attempting to use the default ffmpeg plugin, even when it’s disabled in the configuration file.

Is there a different configuration file or a specific launch argument required to force the ZED driver to use the isaac_ros_h264_encoder instead of ffmpeg?

Thank you for your help.

p.s. after i can resolve this issue i want to use the many apt installs using my ZED camera