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
相关推荐
Anhty8 小时前
3 款手机音频剪辑 APP 横评,短视频配音后期,免费工具怎么选?
功能测试·ffmpeg·音视频
VidDown1 天前
自动给视频挑一张能看的封面:帧评分、构图与批量生成
python·ffmpeg·音视频·视频
可乐鸡翅yeah_2 天前
HLS 业务 Referer‑Policy 网页元标签引发播放异常排错
前端·javascript·网络·ffmpeg·php·音视频
开开心心就好3 天前
本地文件搜索工具推荐,占用小速度还快
智能手机·ffmpeg·ocr·word·音视频·网络攻击模型·安全架构
我科绝伦(Huanhuan Zhou)3 天前
oracle坏块导致备份不了
数据库·oracle·ffmpeg
RS迷途小书童4 天前
Python+FFmpeg提取大疆无人机MP4内嵌mov_text遥测SRT字幕并做完整性校验
python·ffmpeg·大疆·srt字幕·dji
开开心心就好4 天前
视频压缩工具推荐,画质效果很能打
智能手机·ffmpeg·ocr·word·排序算法·音视频·散列表
可乐鸡翅yeah_4 天前
业务中 M3U8 水印相关坑,硬水印和动态水印区别
前端·网络·数据库·ffmpeg·m3u8在线
redfred4 天前
HyperFrames 部署教程:5.6 万 Star 开源「写 HTML 出视频」框架,Windows 从零上手(CLI 三条命令 + 7 个避坑)
ffmpeg·开源·自动化·html·音视频
Arcai10245 天前
PostgreSQL数据备份和恢复完全指南
数据库·postgresql·ffmpeg·备份一体机·备份软件·smartstor·智备科技