视频二进制流RAW文件转图片完整教程
不管你是纯二进制裸流(如H.264/H.265裸流、YUV/RGB原始帧),都能一键转成 JPG/PNG 图片。
核心工具:FFmpeg(万能、免费、无门槛)
所有RAW视频流转图片,FFmpeg 是唯一通用解决方案,Windows/Mac/Linux 都能用。
第一步:安装 FFmpeg
Windows
- 去官网下载:https://ffmpeg.org/download.html
- 解压后把
bin目录加入系统环境变量 - 打开 cmd 输入
ffmpeg -version验证成功
Mac
bash
brew install ffmpeg
Linux
bash
sudo apt install ffmpeg
第二步:根据你的 RAW 类型选择命令
以下是复制就能用的命令,你只需要改文件名。
1. 最常见:H.264 / H.265 视频裸流(.raw/.h264/.265/.hevc)
这是摄像头、监控、网络流最常见的 RAW 二进制流。
提取所有帧为图片:
bash
ffmpeg -i video.raw frame_%04d.jpg
只提取第一帧(最常用):
bash
ffmpeg -i video.raw -vframes 1 output.jpg
如果是 H.265 裸流,指定编码:
bash
ffmpeg -i video.raw -c:v hevc -vframes 1 output.jpg
2. YUV 原始图像裸流(YUV420p 最常见)
如果你的 RAW 是无压缩像素裸流(摄像头原始数据),必须指定分辨率:
bash
ffmpeg -f rawvideo -pixel_format yuv420p -s 1920x1080 -i video.raw -vframes 1 output.jpg
你只需要修改:
1920x1080→ 你的视频分辨率yuv420p→ 你的格式(常见 yuv422p / rgb24)
3. RGB 二进制裸流(RGB24/RGB888)
bash
ffmpeg -f rawvideo -pixel_format rgb24 -s 1280x720 -i video.raw -vframes 1 output.jpg
第三步:最简单的 Python 代码(不装 FFmpeg 也能转)
如果你想用代码直接把二进制流转图片,我给你一段极简可用代码:
python
import cv2
import numpy as np
# 读取 RAW 二进制文件
raw_data = open("video.raw", "rb").read()
# 根据你的格式设置(必须改!)
width = 1920
height = 1080
fmt = "yuv420p" # 或 rgb24 / bgr24
# 转换为图片
if fmt == "yuv420p":
yuv = np.frombuffer(raw_data, dtype=np.uint8)
img = cv2.imdecode(yuv, cv2.IMREAD_COLOR)
elif fmt == "rgb24":
img = np.frombuffer(raw_data, dtype=np.uint8).reshape(height, width, 3)
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
# 保存图片
cv2.imwrite("output.jpg", img)
print("转换完成:output.jpg")
依赖安装:
bash
pip install opencv-python numpy
总结
- 视频裸流(H.264/H.265) → 用 FFmpeg 最简单
- 像素裸流(YUV/RGB) → 需要指定分辨率和格式
- 命令一行搞定,无需复杂工具
- 给出的 Python 代码可直接集成到项目里