RK平台ffmpeg支持硬件编解码

1、下载ffmpeg-rockchip

https://github.com/nyanmisaka/ffmpeg-rockchip

2、编译

复制代码
#!/bin/bash
cd /media/extern_sdb/wzh/android-ndk-r27c/toolchains/llvm/prebuilt/linux-x86_64/bin

# 为llvm-ar创建符号链接
ln -s llvm-ar armv7a-linux-androideabi21-ar
ln -s llvm-ranlib armv7a-linux-androideabi21-ranlib
ln -s llvm-nm armv7a-linux-androideabi21-nm
ln -s llvm-strip armv7a-linux-androideabi21-strip

# 验证
ls -l armv7a-linux-androideabi21-*

cd -
# =============================================
# 配置参数(根据你的实际路径修改)
# =============================================

# NDK 根目录(确认路径正确)
export NDK_ROOT=/media/extern_sdb/wzh/android-ndk-r27c

# 目标 Android API 版本
export API_LEVEL=21

# 目标架构 (armeabi-v7a)
export ARCH=arm
export CPU=armv7-a
export TARGET_ABI=armeabi-v7a

# 输出目录
export PREFIX=$(pwd)/android-build/${TARGET_ABI}

# =============================================
# 设置工具链路径(使用 Clang)
# =============================================

# Clang 工具链路径
export TOOLCHAIN=${NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64

# 交叉编译前缀
export CROSS_PREFIX=${TOOLCHAIN}/bin/armv7a-linux-androideabi${API_LEVEL}-

# Sysroot 路径
export SYSROOT=${TOOLCHAIN}/sysroot


#export CFLAGS="-target armv7a-linux-androideabi${API_LEVEL} -march=${CPU} -mfpu=neon -mfloat-abi=softfp -fPIC -fPIE -pie -I${SYSROOT}/usr/include"
#export LDFLAGS="-pie -L${SYSROOT}/usr/lib/arm-linux-androideabi/${API_LEVEL}"


./configure \
--prefix=${PREFIX} \
--enable-cross-compile \
--cross-prefix=${CROSS_PREFIX} \
--sysroot=${SYSROOT} \
--target-os=android \
--arch=${ARCH} \
--cpu=${CPU} \
--enable-static \
--enable-pic \
--enable-small \
--disable-doc \
--enable-jni  \
--enable-mediacodec \
--enable-decoder=h264_mediacodec \
--enable-decoder=hevc_mediacodec \
--enable-encoder=h264_mediacodec \
--enable-encoder=hevc_mediacodec \
--extra-cflags="${CFLAGS}" \
--extra-ldflags="${LDFLAGS}"  || { echo "配置失败!"; exit 1; }


export CFLAGS="-target armv7a-linux-androideabi${API_LEVEL} -march=${CPU} -mfpu=neon -mfloat-abi=softfp -fPIC -fPIE -pie -I${SYSROOT}/usr/include -I/media/extern_sdb/wzh/rk3229_9.0/external/ffmpeg-4.2.2/x264/android-build/armeabi-v7a/include"
export LDFLAGS="-pie -L${SYSROOT}/usr/lib/arm-linux-androideabi/${API_LEVEL} -L/media/extern_sdb/wzh/rk3229_9.0/external/ffmpeg-4.2.2/x264/android-build/armeabi-v7a/lib"
#
#./configure \
#--prefix=${PREFIX} \
#--enable-cross-compile \
#--cross-prefix=${CROSS_PREFIX} \
#--sysroot=${SYSROOT} \
#--target-os=android \
#--arch=${ARCH} \
#--cpu=${CPU} \
#--enable-static \
#--enable-small \
#--disable-doc \
#--enable-encoder=copy \
#--extra-cflags="${CFLAGS}" \
#--extra-ldflags="${LDFLAGS}"  || { echo "配置失败!"; exit 1; }


# =============================================
# 编译和安装
# =============================================

make clean
make -j$(nproc) || { echo "编译失败!"; exit 1; }
make install || { echo "安装失败!"; exit 1; }

echo "编译成功!输出目录: ${PREFIX}"

3、命令

复制代码
(1)从usb摄像头取mjpeg流封装成avi视频,这是软件封装
./ffmpeg -f v4l2 -input_format mjpeg -video_size 1920x1080 -framerate 30 -i /dev/video0 \
       -t 5 -r 30 -c:v copy -y output30.avi  
(2)从摄像头取yuv流编成h264
ffmpeg -f v4l2 -input_format yuyv422 -video_size 640x480 -framerate 30 -i /dev/video0 \
       -vf "format=nv12" \
       -c:v h264_mediacodec \
       -b:v 3000k -maxrate 4000k -bufsize 6000k \
       -g 30 \
       -t 5 \
       -y output.mp4
(3)查看当前摄像头输出的分辨率
v4l2-ctl -d /dev/video0 --get-fmt-video --get-parm
(4)查看当前摄像头支持哪些分辨率
v4l2-ctl --list-formats-ext
(5)设置摄像头输出的分辨率
v4l2-ctl -d /dev/video0 \
    --set-fmt-video=width=640,height=480,pixelformat=YUYV \
    --set-parm=30
相关推荐
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