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
相关推荐
阿里巴啦20 小时前
python+yt-dlp开源项目,支持 YouTube, Bilibili, TikTok/抖音,快手 等多个平台的视频/音频/字幕下载/ai摘要等功能
python·ffmpeg·whisper·音视频·视频处理·ai摘要·音视频转录
来鸟 鸣间2 天前
linux下ffmpeg源码编译
linux·运维·ffmpeg
Echo_NGC22372 天前
【FFmpeg使用指南】Part 2:滤镜图架构与信号处理
架构·ffmpeg·音视频·信号处理
Echo_NGC22372 天前
【FFmpeg使用指南】Part 1:核心架构与媒体流处理
ffmpeg·音视频·媒体·视频
ssxueyi2 天前
用 Claude Code 从零开发自己的Direct3D 硬件加速播放器
ffmpeg·ai编程·directx·视频播放器·从零开始·claude code·csdn征文活动
Yan_uuu2 天前
ubuntu18.04 安装 x264、ffmpeg、nv-codec-hearers 支持GPU硬件加速
c++·图像处理·ubuntu·ffmpeg
runner365.git3 天前
做一个基于ffmpeg的AI Agent智能体
人工智能·ffmpeg·大模型
彷徨而立3 天前
【FFmpeg】理解 av_packet_from_data 和 av_packet_unref 接口
ffmpeg
runner365.git3 天前
ffmpeg8.0合入whisper,语音识别模型终于进入ffmpeg
ffmpeg·whisper·语音识别
小徐敲java4 天前
视频推流服务器与FFmpeg 安装配置
服务器·ffmpeg·音视频