1.广告机项目-----ffmpeg播放准备

执行 ffmpeg -version

导入一个10s作用的MP4文件

已经把test1.mp4放到了/userdata/mnt目录下,直接在当前终端执行以下命令就能测试播放:

复制代码
ffplay -nodisp -autoexit -volume 80 test1.mp4

命令说明:

  • -nodisp:隐藏终端里的视频预览窗口,让画面只输出到 HDMI 显示器;
  • -autoexit:视频播放完 10 秒后自动退出命令(不用手动按 Ctrl+C);
  • -volume 80:把音量调到 80%(适配开发板喇叭 / 耳机);
  • test1.mp4:当前目录下的测试视频(你已经在/userdata/mnt目录,直接用文件名即可)。

播放失败

1. 内容解读

这是开发板终端执行ffprobe命令后,输出的test1.mp4视频流编码信息,关键内容包括:

  • 视频编码格式:H.264(codec_name=h264
  • 编码配置文件:High(profile=High
  • 编码级别:31(对应 H.264 Level 3.1)
  • 媒体类型:视频(codec_type=video

2. 播放失败的核心原因

开发板(RK3568)的 FFmpeg 对H.264 High 配置文件的硬件解码兼容性不足(RK3568 硬件解码对 Baseline/Constrained Baseline 配置文件的支持更稳定),导致解码流程中无法正常配置滤镜图,进而播放失败。

3. 解决方法

方法 1:强制软件解码播放

在开发板终端执行以下命令,跳过硬件解码,用软件解码播放:

复制代码
ffplay -vcodec libx264 -autoexit -volume 80 /userdata/mnt/test1.mp4

失败

方法 2:转换视频为兼容格式(推荐)

在电脑端用 FFmpeg 将视频转换为 RK3568 硬件解码最优的Baseline 配置文件,步骤如下:

  1. 电脑终端执行转换命令:

    复制代码
    ffmpeg -i test1.mp4 -vcodec libx264 -profile:v baseline -level 3.1 -pix_fmt yuv420p -acodec aac -ar 44100 test1_compat.mp4
  2. 将转换后的test1_compat.mp4传到开发板/userdata/mnt目录;

  3. 开发板终端执行播放命令:

    复制代码
    ffplay -autoexit -volume 80 /userdata/mnt/test1_compat.mp4

停止这个操作

不能在 MobaXterm 界面直接播放视频画面,核心原因是MobaXterm 通过 SSH 远程连接开发板,仅能传输命令行和文本信息,不支持图形化视频渲染,且开发板的 FFplay 默认依赖硬件显示接口(如 HDMI)输出画面,无外接屏幕时无法生成可视化图像。

开发板接了 MIPI 屏幕后,只需先将显示输出切换到 MIPI 屏幕(开发板默认可能优先 HDMI),再用 FFplay 播放即可,步骤如下(全程在 MobaXterm 终端操作):

步骤 1:确认 MIPI 屏幕的 DRM 设备节点(先验证屏幕是否被识别)

首先执行命令,查看开发板是否识别到 MIPI 屏幕(MIPI 在 DRM 中通常对应MIPI-DSI-1节点):

复制代码
# 列出所有显示设备节点
ls /sys/class/drm/ | grep -E "card0-.*"

从输出能看到,你的 MIPI 屏幕对应的 DRM 设备节点是card0-DSI-1(开发板中 "DSI" 就是 MIPI 屏幕的标识),接下来按以下步骤配置显示并播放:

步骤 1:修改 Weston 配置,指定输出到 DSI-1(MIPI 屏幕)

编辑 Weston 的显示配置文件,将输出设备切换为DSI-1

复制代码
# 编辑Weston配置文件
vi /tmp/.weston_drm.conf

输入以下配置(指定 MIPI 屏幕为输出设备):

复制代码
output DSI-1 rotate=0

步骤 2:重启 Weston 服务,应用 MIPI 显示配置

执行命令重启窗口服务,让显示输出切换到 MIPI 屏幕:

复制代码
systemctl restart weston

该截图显示执行systemctl restart weston时出现command not found错误,原因是开发板系统未采用 systemd 作为初始化工具 (Buildroot 系统默认常使用 sysvinit 或直接后台启动服务,无systemctl命令)。

解决步骤

需通过 "查找进程 - 终止进程 - 重新启动" 的方式重启 Weston 服务:

  1. 查找 Weston 进程 ID:执行命令获取 Weston 的运行进程:

    复制代码
    ps aux | grep weston

    输出示例

  2. 终止当前 Weston 进程:用进程 ID 终止运行中的 Weston: 杀主进程667的

复制代码
   kill -9 677
  1. 重新启动 Weston 服务(指定 MIPI 输出):执行命令后台启动 Weston,并应用之前配置的 MIPI 显示:

    复制代码
    weston --config=/tmp/.weston_drm.conf &

重启完成后,MIPI 屏幕会重新初始化,再执行ffplay命令即可在 MIPI 屏幕播放视频。

此时你的 MIPI 屏幕会亮起(显示开发板的终端 / 桌面界面),说明显示输出已切换成功。

相关推荐
luoqice10 小时前
RTMP视频流的帧格式分析
网络·ffmpeg
老姚---老姚1 天前
编译支持HEVC/H.265 over RTMP / Enhanced RTMP 的 ffmpeg
ffmpeg·h.265·hevc·rtmp·enhanced
码流怪侠2 天前
FFmpeg 开发实战全解析:从入门到精通(附完整代码示例)
ffmpeg·音视频开发·视频编码
圆弧YH2 天前
FFmpeg
ffmpeg
luoqice2 天前
FLV文件格式详解
ffmpeg
happybasic3 天前
在CMD下使用FFmpeg将.wav文件转换成指定的格式~
ffmpeg
shao9185163 天前
第10章 Streaming(上):初级音频应用(1)——项目三:自建服务器的Mini-Omni实时语音聊天机器人
ffmpeg·whisper·asr·mini-omni·自建语音服务器
Leon_Chenl4 天前
【已开源】【嵌入式 Linux 音视频+ AI 实战项目】瑞芯微 Rockchip 系列 RK3588-基于深度学习的人脸门禁+ IPC 智能安防监控系统
深度学习·opencv·yolo·ffmpeg·音视频·边缘计算·人脸识别+检测
antzou4 天前
视频图片/文字水印
ffmpeg·视频水印·批量水印
AC赳赳老秦5 天前
DBA 专属方案:用 OpenClaw 实现 SQL 语句优化、慢查询分析、数据库备份巡检全自动化
服务器·前端·数据库·ffmpeg·自动化·deepseek·openclaw