GVKun编程网logo

CentOS 7 安装 ffmpeg(centos7安装ffmpeg)

1

在本文中,我们将为您详细介绍CentOS7安装ffmpeg的相关知识,并且为您解答关于centos7安装ffmpeg的疑问,此外,我们还会提供一些关于Android中集成ffmpeg(一):编译ffm

在本文中,我们将为您详细介绍CentOS 7 安装 ffmpeg的相关知识,并且为您解答关于centos7安装ffmpeg的疑问,此外,我们还会提供一些关于Android 中集成 ffmpeg (一):编译 ffmpeg、CentOS 6 下安装php5.5.34的 ffmpeg 扩展 ffmpeg-php、CentOS 7设置开机启动服务,添加自定义系统服务 centos 7 关闭防火墙 centos 7.2 centos 7 64位下载、FFMPEG - 缩放视频以水平压缩它不起作用我如何告诉 FFMPEG 在此处切换纵横比?的有用信息。

本文目录一览:

CentOS 7 安装 ffmpeg(centos7安装ffmpeg)

CentOS 7 安装 ffmpeg(centos7安装ffmpeg)

Linux系统版本查看

lsb_release -a
#Install EPEL repo
yum -y install epel-release
 rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
#安装包版本
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
yum repolist
yum -y install ffmpeg ffmpeg-devel
ffmpeg

 

Android 中集成 ffmpeg (一):编译 ffmpeg

Android 中集成 ffmpeg (一):编译 ffmpeg

  • 方案选择

Android 中集成 ffmpeg 的 codec 功能无非两种方式:

    1. JNI 直接调用,主要用于 App 开发(无权限修改系统底层),如 EXOPlayer,JPlayer 等。
    2. 集成 ffmpeg 到 OMX,即封装 ffmpeg 为 OMX 的 plugin,然后实现 component 接口。

考虑到性能问题,我选取的方案二即集成 ffmpeg 到 OMX。首先第一个问题就是 ffmpeg 的编译。也有两种方式:

    1. 集成 ffmpeg 源码到整个 Android 系统工程,独立写 bp 或 mk 进行编译。(由于 ffmpeg 配置复杂,参考网上的一些现成 mk 进行修改发现工作量比较巨大)
    2. 独立 NDK 编译 ffmpeg 成动态库或静态库,然后通过 prebuild 的方式集成。(由于 OMX 的 plugin 是直接动态加载动态库,无编译上的依赖,此种方法编译跟普通的 ffmpeg 编译类似,故推荐该方法)

 

  • FFmpeg 配置

32bit 编译配置:

 1 #!/bin/bash
 2 
 3 chmod 777 ./configure
 4 #chmod 777 ./version.sh
 5 NDK=/your_ndk_path/android-ndk-r16b
 6 SYSROOT=$NDK/platforms/android-27/arch-arm
 7 TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
 8 CROSS=$TOOLCHAIN/bin/arm-linux-androideabi-
 9 
10 ISYSROOT=$NDK/sysroot
11 ASM=$ISYSROOT/usr/include/arm-linux-androideabi
12 CC=$TOOLCHAIN/bin/arm-linux-androideabi-gcc
13 NM=$TOOLCHAIN/bin/arm-linux-androideabi-nm
14 
15 CPU=arm
16 PREFIX=./android/$CPU
17 ADDI_CFLAGS="-marm"
18 
19 function build_one
20 {
21 ./configure \
22 --prefix=$PREFIX \
23 --target-os=linux \
24 --arch=$CPU \
25 --enable-cross-compile \
26 --incdir=$NDK/sysroot/usr/include \
27 --sysroot=$SYSROOT \
28 --cross-prefix=$CROSS \
29 --cc=$CC \
30 --nm=$NM \
31 --extra-cflags="-I$ASM -isysroot $ISYSROOT -Os -fpic $ADDI_CFLAGS" \
32 --enable-shared \
33 --enable-static \
34 --disable-asm \
35 --enable-pic \
36 --disable-doc \
37 --disable-ffmpeg \
38 --disable-ffplay \
39 --disable-ffprobe \
40 --disable-ffserver \
41 --disable-avdevice \
42 --disable-doc \
43 --disable-symver \
44 --disable-debug \
45 --disable-encoders \
46 --disable-muxers \
47 --enable-avresample \
48 --disable-pthreads \
49 --enable-swresample
50 make
51 make install
52 }
53 
54 rm -rf $PREFIX
55 make distclean
56 build_one
View Code

 

说明:

 1. --disable-asm 选项是因为在 ffmpeg-2.0 的版本编译出版本运行时出现错误:libavcodec.so: has text relocation。 但是在用 ffmpeg-3.3 版本时没有出现。也有文章说跟 NDK 版本也有关系。

可以通过命令检查:readelf -a aarch64/lib/libavcodec.so |grep TEXTREL

 2. 在高版本的 ffmpeg(如 3.3.8)中,可以直接指定 --target-os=android ,否则就需要修改 configure 文件让输出的动态库不带版本号,修改 SLIBNAME_WITH_VERSION 等选项为:

SLIBNAME=''$(SLIBPREF)$(FULLNAME)$(SLIBSUF)''
SLIBNAME_WITH_VERSION=''$(SLIBNAME).$(LIBVERSION)''
SLIBNAME_WITH_MAJOR=''$(SLIBNAME).$(LIBMAJOR)''
LIB_INSTALL_EXTRA_CMD=''$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"''
SLIB_INSTALL_NAME=''$(SLIBNAME_WITH_VERSION)''
SLIB_INSTALL_LINKS=''$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)''

   3. ffmpeg 增加动态库导出函数,只需要修改源码所在目录的.v 文件,如在 libavformat/libavformat.v 中增加导出 ffurl_register_protocol 方法供外部代码链接。

 

64bit 编译配置:

 1 #!/bin/bash
 2 
 3 chmod 777 ./configure
 4 #chmod 777 ./version.sh
 5 NDK=/disk2/wuxingde/android-ndk-r16b
 6 SYSROOT=$NDK/platforms/android-27/arch-arm64
 7 TOOLCHAIN=$NDK/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64
 8 
 9 ISYSROOT=$NDK/sysroot
10 ASM=$ISYSROOT/usr/include/aarch64-linux-android
11 CC=$TOOLCHAIN/bin/aarch64-linux-android-gcc
12 NM=$TOOLCHAIN/bin/aarch64-linux-android-nm
13 
14 CPU=aarch64
15 PREFIX=$(pwd)/android/$CPU
16 #ADDI_CFLAGS="-marm"
17 
18 function build_one
19 {
20 ./configure \
21 --prefix=$PREFIX \
22 --target-os=linux \
23 --arch=$CPU \
24 --enable-cross-compile \
25 --incdir=$NDK/sysroot/usr/include \
26 --sysroot=$SYSROOT \
27 --cross-prefix=$TOOLCHAIN/bin/aarch64-linux-android- \
28 --cc=$CC \
29 --nm=$NM \
30 --extra-cflags="-I$ASM -isysroot $ISYSROOT -Os -fpic" \
31 --enable-shared \
32 --enable-static \
33 --enable-asm \
34 --enable-pic \
35 --disable-doc \
36 --disable-ffmpeg \
37 --disable-ffplay \
38 --disable-ffprobe \
39 --disable-ffserver \
40 --disable-avdevice \
41 --disable-doc \
42 --disable-symver \
43 --disable-debug \
44 --disable-encoders \
45 --disable-muxers \
46 --enable-avresample \
47 --disable-pthreads \
48 --enable-swresample
49 make
50 make install
51 }
52 
53 rm -rf $PREFIX
54 make distclean
55 build_one
View Code

 

  • PREBUID

如果只用 64bit 版本可以直接使用下面 Android.mk 一次性编译:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_PREBUILT_LIBS := \
        lib/libavcodec.so \
        lib/libavformat.so \
        lib/libavutil.so \
        lib/libavfilter.so \
        lib/libswresample.so \
        lib/libavresample.so \
        lib/libswscale.so

include $(BUILD_MULTI_PREBUILT)
View Code

如果同时需要 32bit 和 64bit 版本需要使用下面 Android.mk 分别编译各个库:

 1 LOCAL_PATH := $(call my-dir)
 2 include $(CLEAR_VARS)
 3 
 4 LOCAL_SRC_FILES_32 := \
 5         arm/lib/libavcodec.so
 6 LOCAL_SRC_FILES_64 := \
 7         aarch64/lib/libavcodec.so
 8 LOCAL_MODULE := libavcodec
 9 LOCAL_MODULE_SUFFIX := .so
10 LOCAL_MODULE_CLASS := SHARED_LIBRARIES
11 #LOCAL_MODULE_TARGET_ARCH := arm
12 LOCAL_MULTILIB := both
13 include $(BUILD_PREBUILT)
14 
15 include $(CLEAR_VARS)
16 LOCAL_SRC_FILES_32 := \
17         arm/lib/libavformat.so
18 LOCAL_SRC_FILES_64 := \
19         aarch64/lib/libavformat.so
20 LOCAL_MODULE := libavformat
21 LOCAL_MODULE_SUFFIX := .so
22 LOCAL_MODULE_CLASS := SHARED_LIBRARIES
23 #LOCAL_MODULE_TARGET_ARCH := arm
24 LOCAL_MULTILIB := both
25 include $(BUILD_PREBUILT)
26 
27 include $(CLEAR_VARS)
28 LOCAL_SRC_FILES_32 := \
29         arm/lib/libavutil.so
30 LOCAL_SRC_FILES_64 := \
31         aarch64/lib/libavutil.so
32 LOCAL_MODULE := libavutil
33 LOCAL_MODULE_SUFFIX := .so
34 LOCAL_MODULE_CLASS := SHARED_LIBRARIES
35 #LOCAL_MODULE_TARGET_ARCH := arm
36 LOCAL_MULTILIB := both
37 include $(BUILD_PREBUILT)
38 
39 include $(CLEAR_VARS)
40 LOCAL_SRC_FILES_32 := \
41         arm/lib/libavresample.so
42 LOCAL_SRC_FILES_64 := \
43         aarch64/lib/libavresample.so
44 LOCAL_MODULE := libavresample
45 LOCAL_MODULE_SUFFIX := .so
46 LOCAL_MODULE_CLASS := SHARED_LIBRARIES
47 #LOCAL_MODULE_TARGET_ARCH := arm
48 LOCAL_MULTILIB := both
49 include $(BUILD_PREBUILT)
50 
51 include $(CLEAR_VARS)
52 LOCAL_SRC_FILES_32 := \
53         arm/lib/libavfilter.so
54 LOCAL_SRC_FILES_64 := \
55         aarch64/lib/libavfilter.so
56 LOCAL_MODULE := libavfilter
57 LOCAL_MODULE_SUFFIX := .so
58 LOCAL_MODULE_CLASS := SHARED_LIBRARIES
59 #LOCAL_MODULE_TARGET_ARCH := arm
60 LOCAL_MULTILIB := both
61 include $(BUILD_PREBUILT)
62 
63 include $(CLEAR_VARS)
64 LOCAL_SRC_FILES_32 := \
65         arm/lib/libswresample.so
66 LOCAL_SRC_FILES_64 := \
67         aarch64/lib/libswresample.so
68 LOCAL_MODULE := libswresample
69 LOCAL_MODULE_SUFFIX := .so
70 LOCAL_MODULE_CLASS := SHARED_LIBRARIES
71 #LOCAL_MODULE_TARGET_ARCH := arm
72 LOCAL_MULTILIB := both
73 include $(BUILD_PREBUILT)
74 
75 include $(CLEAR_VARS)
76 LOCAL_SRC_FILES_32 := \
77         arm/lib/libswscale.so
78 LOCAL_SRC_FILES_64 := \
79         aarch64/lib/libswscale.so
80 LOCAL_MODULE := libswscale
81 LOCAL_MODULE_SUFFIX := .so
82 LOCAL_MODULE_CLASS := SHARED_LIBRARIES
83 #LOCAL_MODULE_TARGET_ARCH := arm
84 LOCAL_MULTILIB := both
85 include $(BUILD_PREBUILT)
View Code

 

编译部分就到此结束,这部分由于 Android NDK 版本(我用的是 android-ndk-r16b)和 ffmpeg 版本不同,网上很多教程都没法用,花费了很多时间。特别要注意 ffmpeg 中 --extra-cflags = 配置,不要随意加额外一些定义,可能会导致链接不上的问题。

 

CentOS 6 下安装php5.5.34的 ffmpeg 扩展 ffmpeg-php

CentOS 6 下安装php5.5.34的 ffmpeg 扩展 ffmpeg-php

#yum groupinstall "development tools"#cd /etc/yum.repos.d/#cp -prv ../yum.repos.d{,.orig}                #vim dag.repo#cat dag.repo [dag]name=dag rpm repository for red hat enterprise linuxbaseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/daggpgcheck=1gpgkey=http://dag.wieers.com/packages/rpm-gpg-key.dag.txtenabled=1protect=0#wget http://dag.wieers.com/packages/rpm-gpg-key.dag.txt -p /tmp#rpm --import /tmp/rpm-gpg-key.dag.txt#yum repolist#yum install ffmpeg-devel re2c ffmpeg#cd /usr/local/src/#wget http://downloads.sourceforge.net/project/ffmpeg-php/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2#tar -xjf ffmpeg-php-0.6.0.tbz2#cd ffmpeg-php-0.6.0/#phpize#./configure#sed -i ''s#pix_fmt_rgba32#pix_fmt_rgb32#'' ./ffmpeg_frame.c#sed -i ''311,360s/list_entry/zend_rsrc_list_entry/'' ./ffmpeg_movie.c#make && make install#echo -e "extension=ffmpeg.so\n" > /etc/php.d/ffmpeg.ini#apache -k restart#php -m|grep ffmpeg
登录后复制

参考文章:https://stavrovski.net/blog/install-ffmpeg-and-ffmpeg-php-in-centos-6-with-virtualmin

CentOS 7设置开机启动服务,添加自定义系统服务 centos 7 关闭防火墙 centos 7.2 centos 7 64位下载

CentOS 7设置开机启动服务,添加自定义系统服务 centos 7 关闭防火墙 centos 7.2 centos 7 64位下载

centos 7设置开机启动服务,添加自定义系统服务

  • 建立服务文件
  • 保存目录
  • 设置开机自启动
  • 其他命令

1.建立服务文件

文件路径

vim /usr/lib/systemd/<span>system</span>/nginx.service 
登录后复制

服务文件内容

<span>[Unit]</span><span>Description=<span>nginx - high performance web server</span></span><span>After=<span>network.target remote-fs.target nss-lookup.target</span></span><span>[Service]</span><span>Type=<span>forking</span></span><span>ExecStart=<span>/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf</span></span><span>ExecReload=<span>/usr/local/nginx/sbin/nginx -s reload</span></span><span>ExecStop=<span>/usr/local/nginx/sbin/nginx -s stop</span></span><span>[Install]</span><span>WantedBy=<span>multi-user.target</span></span>
登录后复制

文件内容解释

[<span>Unit</span>]:服务的说明<span>
Description:描述服务</span><span>
After:描述服务类别</span><span>
[Service]服务运行参数的设置</span><span>
Type=forking是后台运行的形式</span><span>
ExecStart为服务的具体运行命令</span><span>
ExecReload为重启命令</span><span>
ExecStop为停止命令</span><span>
PrivateTmp=True表示给服务分配独立的临时空间</span><span>
注意:启动、重启、停止命令全部要求使用绝对路径</span><span>
[Install]服务安装的相关设置,可设置为多用户</span>
登录后复制

2.保存目录

以754的权限保存在目录:

/usr/lib/systemd/<span>system</span>
登录后复制

3.设置开机自启动

任意目录下执行

systemctl enable nginx<span>.service</span>
登录后复制
登录后复制

4.其他命令

启动nginx服务

systemctl <span><span>start</span> nginx.service</span>
登录后复制

设置开机自启动

systemctl enable nginx<span>.service</span>
登录后复制
登录后复制

停止开机自启动

systemctl disable nginx<span>.service</span>
登录后复制

查看服务当前状态

systemctl status nginx<span>.service</span>
登录后复制

重新启动服务

systemctl restart nginx<span>.service</span>
登录后复制

查看所有已启动的服务

systemctl <span>list</span>-units --<span><span>type</span>=</span>service
登录后复制
'').addClass(''pre-numbering'').hide(); $(this).addClass(''has-numbering'').parent().append($numbering); for (i = 1; i '').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了centos 7设置开机启动服务,添加自定义系统服务,包括了centos 7方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

FFMPEG - 缩放视频以水平压缩它不起作用我如何告诉 FFMPEG 在此处切换纵横比?

FFMPEG - 缩放视频以水平压缩它不起作用我如何告诉 FFMPEG 在此处切换纵横比?

如何解决FFMPEG - 缩放视频以水平压缩它不起作用我如何告诉 FFMPEG 在此处切换纵横比?

我有一个 1920×1080 的视频。我想水平挤压它,制作一个 608×1080 的视频。

我正在尝试使用 ffmpeg -i i.mp4 -vf scale=608:1080 o.mp4 执行此操作。我试过切换参数以确保。
无论参数顺序如何,或者我是否包含 force_original_aspect_ration,或者使用 x:
输出视频总是(到目前为止)是 1080×608 而不是 608×1080。

我到底如何让 FFMPEG 切换回轴?

今天关于CentOS 7 安装 ffmpegcentos7安装ffmpeg的讲解已经结束,谢谢您的阅读,如果想了解更多关于Android 中集成 ffmpeg (一):编译 ffmpeg、CentOS 6 下安装php5.5.34的 ffmpeg 扩展 ffmpeg-php、CentOS 7设置开机启动服务,添加自定义系统服务 centos 7 关闭防火墙 centos 7.2 centos 7 64位下载、FFMPEG - 缩放视频以水平压缩它不起作用我如何告诉 FFMPEG 在此处切换纵横比?的相关知识,请在本站搜索。

本文标签: