MetaRTC-ffmpeg arm移植

2024-05-26 15:52
文章标签 ffmpeg 移植 arm metartc

本文主要是介绍MetaRTC-ffmpeg arm移植,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

touch cmake_arm.sh
添加

rm -rf build
mkdir build
cd build
ARCH=aarch64.cmake
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../$ARCH  ..
make

touch cmake_arm.sh
添加

SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_C_COMPILER /home/yqw/MetaRTC/BC/stbgcc-6.3-1.1/bin/arm-linux-gcc)
SET(CMAKE_CXX_COMPILER /home/yqw/MetaRTC/BC/stbgcc-6.3-1.1/bin/arm-linux-g++)

将这两个文件放入libmetartc6
./cmake_arm.sh

srtp

./configure --prefix="/home/yqw/temp/ffmpeg-webrtc/FFmpeg-n4.3.3/metartc6/libsrtp-2-fit" --host="arm-linux" --enable-static --enable-shared CC=/home/yqw/MetaRTC/BC/stbgcc-6.3-1.1/bin/arm-linux-gcc
make -j20

RV32

export PATH=$PATH:/home/yqw/MetaRTC/RV/usr/bin
./configure --prefix="/home/yqw/temp/ffmpeg-webrtc/FFmpeg-n4.3.3/metartc6/libsrtp-2-fit" --host="arm-linux" --enable-static --enable-shared CC=arm-linux-gnueabihf-gcc

openssl

 ./config no-asm shared no-async --prefix=$(pwd)/build --cross-compile-prefix=/home/yqw/MetaRTC/BC/stbgcc-6.3-1.1/bin/arm-linux-make -j20sudo make install

RV32

export PATH=$PATH:/home/yqw/MetaRTC/RV/usr/bin
./config no-asm shared no-async --prefix=$(pwd)/build --cross-compile-prefix=arm-linux-gnueabihf-

然后把Makefile中的所有的-m64删去

在build中到.a

编译ffmpeg

./configure --cross-prefix=/home/yqw/MetaRTC/BC/stbgcc-6.3-1.1/bin/arm-linux- --enable-cross-compile --target-os=linux --cc=/home/yqw/MetaRTC/BC/stbgcc-6.3-1.1/bin/arm-linux-gcc --arch=arm --prefix=$(pwd)/build32 --disable-shared --enable-static --extra-libs='-L/home/yqw/temp/ffmpeg-webrtc/FFmpeg-n4.3.3/metartc6 -lmetartccore6 -lpthread -lsrtp2 -lssl -lcrypto -ldl'

RV32

./configure --cross-prefix=/home/yqw/MetaRTC/RV/bin/arm-linux-gnueabihf- --enable-cross-compile --target-os=linux --cc=arm-linux-gnueabihf-gcc --arch=arm --prefix=$(pwd)/build_RV32 --disable-shared --enable-static --extra-libs='-L/home/yqw/temp/ffmpeg-webrtc/FFmpeg-n4.3.3/metartc6 -lmetartccore6 -lpthread -lsrtp2 -lssl -lcrypto -ldl'

注意这里的dl和pthread是调用交叉编译工具链中的库;当写在同一个–extra-libs里时没有顺序之分,如果用两个–extra-libs,那么就有加载的顺序之分,比如crypto里要用到dl,那么dl就需要放在它的前面加载。
第二个注意点,无法把ffmepg编译成动态库,不然会报如下错误:

libmetartccore6.a(YangMetaConnection.c.o): relocation R_ARM_THM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC

/home/yqw/temp/ffmpeg-webrtc/FFmpeg-n4.3.3/metartc6/metartc6/include/yang_config.h
#define Yang_Enable_Dtls 1 //default:using dtls
#define Yang_Enable_Openssl 1
#define Yang_Enable_RTC_Video 0

metartc支持mips32位,支持arm64,不支持arm32位,在arm32下报下列错误,这个错误是对内存的越界操作,然后再free(),目前metartc6和7都不支持arm32。
webrtc init>>>>>>>>>>>>>>>>>>>http://192.168.100.77:1985/tc/v1/whip/?app=live&stream=livestream
[webrtc @ 0x189c3c0] webrtc_open http://192.168.100.77:1985/tc/v1/whip/?app=live&stream=livestream

srtp init success!
*** Error in `/usr/data/ffmpeg’: free(): invalid next size (fast): 0x0189cd20 ***

Program received signal SIGABRT, Aborted.
0xb6e515f6 in ?? () from /lib/libc.so.6
(gdb) bt
#0 0xb6e515f6 in ?? () from /lib/libc.so.6
#1 0xb6e5f2ac in raise () from /lib/libc.so.6
#2 0xb6e5ff9a in abort () from /lib/libc.so.6
#3 0xb6e86bba in ?? () from /lib/libc.so.6
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

这篇关于MetaRTC-ffmpeg arm移植的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1004911

相关文章

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

ffmpeg面向对象-待定

1.常用对象 rtsp拉流第一步都是avformat_open_input,其入参可以看下怎么用: AVFormatContext *fmt_ctx = NULL;result = avformat_open_input(&fmt_ctx, input_filename, NULL, NULL); 其中fmt_ctx 如何分配内存的?如下 int avformat_open_input(

bash: arm-linux-gcc: No such file or directory

ubuntu出故障重装了系统,一直用着的gcc使用不了,提示bash: arm-linux-gcc: No such file or directorywhich找到的命令所在的目录 在google上翻了一阵发现此类问题的帖子不多,后来在Freescale的的LTIB环境配置文档中发现有这么一段:     # Packages required for 64-bit Ubuntu

编译linux内核出现 arm-eabi-gcc: error: : No such file or directory

external/e2fsprogs/lib/ext2fs/tdb.c:673:29: warning: comparison between : In function 'max2165_set_params': -。。。。。。。。。。。。。。。。。。 。。。。。。。。。。。。。 。。。。。。。。 host asm: libdvm <= dalvik/vm/mterp/out/Inte

FFmpeg系列-视频解码后保存帧图片为ppm

在正常开发中遇到花屏时怎么处理呢?可以把解码后的数据直接保存成帧图片保存起来,然后直接看图片有没有花屏来排除是否是显示的问题,如果花屏,则代表显示无问题,如果图片中没有花屏,则可以往显示的方向去排查了。 void saveFrame(AVFrame* pFrame, int width, int height, int iFrame){FILE *pFile;char szFilename[

Cortex-A7:ARM官方推荐的嵌套中断实现机制

0 参考资料 ARM Cortex-A(armV7)编程手册V4.0.pdf ARM体系结构与编程第2版 1 前言 Cortex-M系列内核MCU中断硬件原生支持嵌套中断,开发者不需要为了实现嵌套中断而进行额外的工作。但在Cortex-A7中,硬件原生是不支持嵌套中断的,这从Cortex-A7中断向量表中仅为外部中断设置了一个中断向量可以看出。本文介绍ARM官方推荐使用的嵌套中断实现机

ARM 虚拟化介绍

0.目录 文章目录 0.目录1.概述 1.1 Before you begin 2.虚拟化介绍 2.1 虚拟化为什么重要2.2 hypervisors的两种类型2.3 全虚拟化和半虚拟化2.4 虚拟机和虚拟CPUs 3.AArch64中的虚拟化4.stage 2 转换 4.1 什么是stage 2 转换4.2 VMIDs4.3 VMID vs ASID4.4 属性整合和覆盖4.5模拟

RT-Thread(Nano版本)的快速移植(基于NUCLEO-F446RE)

目录 概述 1 RT-Thread 1.1 RT-Thread的版本  1.2 认识Nano版本 2 STM32F446U上移植RT-Thread  2.1 STM32Cube创建工程 2.2 移植RT-Thread 2.2.1 安装RT-Thread Packet  2.2.2 加载RT-Thread 2.2.3 匹配相关接口 2.2.3.1 初次编译代码  2.2.3.

【IPV6从入门到起飞】4-RTMP推流,ffmpeg拉流,纯HTML网页HLS实时直播

【IPV6从入门到起飞】4-RTMP推流,ffmpeg拉流,纯HTML网页HLS实时直播 1 背景2 搭建rtmp服务器2.1 nginx方案搭建2.1.1 windows 配置2.1.2 linux 配置 2.2 Docker方案搭建2.2.1 docker 下载2.2.2 宝塔软件商店下载 3 rtmp推流3.1 EV录屏推流3.2 OBS Studio推流 4 ffmpeg拉流转格式