ffmpeg 硬件解码手册

ffmpeg 硬件解码手册,第1张

https://trac.ffmpeg.org/wiki/HWAccelIntro

如何查看硬件加速

找ffmpeg3.2版本执行ffmpeg -hwaccels

qsv可以解码的类型有h264,h264/hevc,mpeg2,vc1

qsv解码里面已经自带了h264_mp4toannexb的码流转化器,需要先将mp4中的h264码率转换成annexb格式,再进行解码

如果对于非mp4文件中的码流,则绕过了码流转化器。

用qsv编码:

ffmpeg -i INPUT -c:v h264_qsv -preset:v faster out.qsv.mp4

用qsv解码

ffmpeg -hwaccel qsv -i INPUT -f null - -benchmark

linux下如何安装intel media sdk

http://blog.csdn.net/nonmarking/article/details/46391767

intel media sdk 2016 [支持intel 酷睿 4,5代cpu]

intel media sdk 2016 [支持intel 酷睿 6代cpu]

硬件编码测试实验

ffmpeg -threads 64 -stream_loop -1 -s 1920x1080 -i out.yuv -c:v h264_qsv -f null out.264

在centos[i6700k] 能编码140fps 【cpu:20%,gpu:63%]

在win7[hd4600,i5,4核心] 能编码85fps 【cpu:65,gpu:52%]

nvenc decoder and encoder

./ffmpeg -c:v h264_cuvid -i out.mp4 /tmp/out.yuv

./ffmpeg  -threads 16 -f lavfi -i testsrc=size=1920x1080 -c:v h264_nvenc out.mp4

如何测试并发编码

1)将ffmpeg/tools/build_stagefright移动到ffmpeg下面,修改执行权限。

 chmod u+x build_stagefright

2)打开build_stagefright文件,配置Android NDK路径。

#!/bin/bash

export NDK=/to/your/ndk/path

if [ "$NDK" = "" ]then

echo NDK variable not set, assuming ${HOME}/android-ndk-r8d

export NDK=${HOME}/android-ndk-r8d

fi

3)手动下载update-cm-7.0.3-N1-signed.zip

4)修改TOOLCHAIN=`echo $NDK/toolchains/arm-linux-androideabi-4.3.3/prebuilt/*-x86 ` 为 TOOLCHAIN=`echo $NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64 ` ,否则会出现arm-linux-androideabi-gcc is unable to create an executable file. C compiler test failed.

5)vim configure 将enabled libstagefright_h264 &&require_cpp libstagefright_h264 改为 enabled libstagefright &&require_cpp libstagefright_h264,否则会出现ERROR: libstagefright_h264 not found

6)将build_stagefright中的EXTRA_CFLAGS="$EXTRA_CFLAGS -I$NDK/sources/cxx-stl/gnu-libstdc++/include -I$NDK/sources/cxx-stl/gnu-libstdc++/libs/$ABI/include"改为EXTRA_CFLAGS="$EXTRA_CFLAGS -I$NDK/sources/cxx-stl/gnu-libstdc++/4.8/include -I$NDK/sources/cxx-stl/gnu-libstdc++/4.8/libs/$ABI/include"

7)将build_stagefright中的EXTRA_LDFLAGS="-Wl,--fix-cortex-a8 -L$ANDROID_LIBS -Wl,-rpath-link,$ANDROID_LIBS -L$NDK/sources/cxx-stl/gnu-libstdc++/libs/$ABI"更改为EXTRA_LDFLAGS="-Wl,--fix-cortex-a8 -L$ANDROID_LIBS -Wl,-rpath-link,$ANDROID_LIBS -L$NDK/sources/cxx-stl/gnu-libstdc++/4.8/libs/$ABI"

8)将build_stagefright中的EXTRA_LDFLAGS="-Wl,--fix-cortex-a8 -L$ANDROID_LIBS -Wl,-rpath-link,$ANDROID_LIBS -L$NDK/sources/cxx-stl/gnu-libstdc++/libs/$ABI"继续修改添加交叉编译所需要的外部库。最终修改为:

EXTRA_LDFLAGS="-Wl,--fix-cortex-a8 -L$ANDROID_LIBS -Wl,-rpath-link,$ANDROID_LIBS -L$NDK/sources/cxx-stl/gnu-libstdc++/4.8/libs/$ABI -lstagefright -lstdc++ -lutils -lbinder -lgnustl_static -lgnustl_shared"


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/tougao/8110271.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-13
下一篇2023-04-13

发表评论

登录后才能评论

评论列表(0条)

    保存