ubuntu之坑(十四)——安装FFmpeg进行本地视频推流(在海思平台上运行)

1.编译x264(没有x264依赖项参考,有则跳过)

   参考blog:ubuntu22.04下编译ffmpeg-6.0,并且激活x264编码功能。记录一下踩坑(ERROR: x264 not found using pkg-config)
需要注意:

sudo ./configure --enable-static --prefix=/usr/local/x264

  在执行上面命令时可能遇到下面问题,这是在Linux系统中运行Shell脚本时可能会遇到一个常见的错误,这个错误通常是由于Shell脚本文件中存在不兼容的换行符引起的。在Windows系统中,文本文件的行尾通常以回车符(CR)和换行符(LF)的组合表示(称为CRLF),而在Linux和Unix系统中,行尾仅以换行符(LF)表示。当你在Windows环境下编写或编辑Shell脚本,然后尝试在Linux系统上运行时,就可能会遇到这个问题。(这里主要是configure、config.sub、config.guess、version.sh四个文件

“/bin/bash^M: bad interpreter: No such file or directory”

  解决这个问题的一种简单方法是使用sed命令删除脚本中的回车符。你可以运行以下命令:

sed -i 's/\r$//' xxx.sh

  这条命令的作用是在原地(-i)修改文件,查找每一行末尾的回车符(\r$)并将其删除。这样,文件就会被转换为仅包含换行符(LF)的Unix风格的行尾格式,从而避免了上述错误。如果在本地ubuntu执行到此为止了。
  由于我们需要在海思嵌入式平台上安装ffmpeg流媒体,在configure时还需要配置海思的交叉编译链,这里需要对configure进行修改。
参考blog为:海思Hi3536交叉编译ffmpeg 和opencv;海思3519 arm-hisiv500-linux-交叉编译x264、ffmpeg1.2.12、opencv2.4.9;libx264开发笔记(一):libx264介绍、海思平台移植编译
  在执行configure命令时使用如下命令:

CC=aarch64-mix210-linux-gcc
./configure --prefix=/home/ss927/workspace/media/local --enable-shared --enable-static --host=aarch64-mix210-linux  --cross-prefix=aarch64-mix210-linux- --disable-asm

  其中,–prefix 选项是用于指定软件安装的根目录; –enable-shared选项是用于控制是否生成共享库(shared libraries),共享库也称为动态链接库(dynamic libraries),与静态库(static libraries)相对;–enable-static选项用于控制是否生成静态库(static libraries);–host选项用于指定目标主机的平台类型。这个选项在交叉编译(cross-compiling)时特别重要,因为它允许你为不同的目标平台编译软件,而这些平台可能与编译主机(build host)不同;–cross-prefix 选项用于指定交叉编译工具链的前缀。这个前缀通常包括目标平台的架构和操作系统信息,确保 ./configure 脚本使用正确的编译器、链接器和其他工具;–disable-asm选项用于禁用汇编代码的使用,在需要确保编译过程完全使用高级语言(如C或C++)。
  一定要进行以下操作,否则编译ffmpeg时会出ERROR: x264 not found using pkg-config的问题。
  在/…/lib/pkgconfig/下有一个x264.pc文件,将它移动到/usr/share/pkgconfig下(pkg-config会搜索这个路径下的.pc文件)。

sudo cp /home/ss927/workspace/media/local/lib/pkgconfig/x264.pc /usr/share/pkgconfig

你可能感兴趣的:(linux虚拟机,ubuntu,ffmpeg,音视频)