add ffmpeg-remux

This commit is contained in:
SirPdboy 2022-08-28 08:55:28 +08:00 committed by GitHub
parent 2a74defe74
commit 67f14660ee
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

223
ffmpeg-remux/Makefile Normal file
View File

@ -0,0 +1,223 @@
#
# Copyright (C) 2017-2020 Ian Leonard <antonlacon@gmail.com>
# Copyright (C) 2018 Ted Hess <thess@kitschensync.net>
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=ffmpeg-remux
PKG_VERSION:=4.3.3
PKG_RELEASE:=1
PKG_SOURCE:=ffmpeg-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://ffmpeg.org/releases/
PKG_HASH:=9f0a68fbd74feb4e50dc220bddd59d84626774a53687fb737806ae00e5c6e9e6
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>, \
Ian Leonard <antonlacon@gmail.com>
PKG_LICENSE:=LGPL-2.1-or-later GPL-2.0-or-later LGPL-3.0-or-later
PKG_LICENSE_FILES:=COPYING.GPLv2 COPYING.GPLv3 COPYING.LGPLv2.1 COPYING.LGPLv3
PKG_CPE_ID:=cpe:/a:ffmpeg:ffmpeg
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-x/ffmpeg-$(PKG_VERSION)
FFMPEG_REMUX_DECODERS:= \
mpeg1video \
mpeg2video \
mpeg4 \
mpegvideo \
h264 \
hevc \
vc1 \
FFMPEG_REMUX_MUXERS:= \
matroska \
h264 \
hevc \
mp4 \
mpeg1video \
mpeg2video \
mpegts \
ogg \
FFMPEG_REMUX_DEMUXERS:= \
avi \
h264 \
hevc \
matroska \
mov \
mpegps \
mpegts \
mpegvideo \
ogg \
rm \
vc1 \
wv \
FFMPEG_REMUX_PARSERS:= \
aac \
flac \
ac3 \
h264 \
hevc \
mpegaudio \
mpeg4video \
mpegvideo \
vc1 \
FFMPEG_REMUX_PROTOCOLS:= \
file pipe
include $(INCLUDE_DIR)/package.mk
define Package/ffmpeg-remux
TITLE:=FFmpeg remux
SECTION:=multimedia
CATEGORY:=Multimedia
URL:=https://ffmpeg.org/
DEPENDS+= +libpthread +zlib +libbz2
endef
define Package/ffmpeg-remux/description
FFmpeg remux only program
endef
# Strip off FPU notation
REAL_CPU_TYPE:=$(firstword $(subst +, ,$(CONFIG_CPU_TYPE)))
# Fixup cpu types recogized by ffmpeg configure
REAL_CPU_TYPE:=$(subst octeonplus,octeon+,$(REAL_CPU_TYPE))
FFMPEG_CONFIGURE:= \
CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS) $(FPIC)" \
LDFLAGS="$(TARGET_LDFLAGS)" \
./configure \
--enable-cross-compile \
--cross-prefix="$(TARGET_CROSS)" \
--arch="$(ARCH)" \
$(if $(REAL_CPU_TYPE),--cpu=$(call qstrip,$(REAL_CPU_TYPE)),) \
--target-os=linux \
--prefix="/usr" \
--pkg-config="pkg-config" \
--enable-shared \
--enable-pthreads \
--enable-zlib \
--disable-doc \
--disable-debug \
\
--disable-lzma \
--disable-vaapi \
--disable-vdpau \
--disable-outdevs
ifeq ($(CONFIG_SOFT_FLOAT),y)
FFMPEG_CONFIGURE+= \
--disable-altivec \
--disable-vsx \
--disable-power8 \
--disable-armv5te \
--disable-armv6 \
--disable-armv6t2 \
--disable-fast-unaligned \
--disable-runtime-cpudetect
else ifneq ($(findstring arm,$(CONFIG_ARCH))$(findstring aarch64,$(CONFIG_ARCH)),)
FFMPEG_CONFIGURE+= \
--disable-runtime-cpudetect
# XXX: GitHub issue 3320 ppc cpu with fpu but no altivec (WNDR4700)
else ifneq ($(findstring powerpc,$(CONFIG_ARCH)),)
FFMPEG_CONFIGURE+= \
--disable-altivec
endif
# selectively disable optimizations according to arch/cpu type
ifneq ($(findstring arm,$(CONFIG_ARCH)),)
FFMPEG_CONFIGURE+= --enable-lto
ifneq ($(findstring vfp,$(CONFIG_CPU_TYPE)),)
FFMPEG_CONFIGURE+= --enable-vfp
else
FFMPEG_CONFIGURE+= --disable-vfp
endif
ifneq ($(findstring neon,$(CONFIG_CPU_TYPE)),)
FFMPEG_CONFIGURE+= \
--enable-neon \
--enable-vfp
else
FFMPEG_CONFIGURE+= --disable-neon
endif
endif
ifneq ($(findstring aarch64,$(CONFIG_ARCH)),)
FFMPEG_CONFIGURE+= \
--enable-lto \
--enable-neon \
--enable-vfp
endif
ifeq ($(ARCH),x86_64)
FFMPEG_CONFIGURE+= --enable-lto
endif
ifeq ($(CONFIG_FFMPEG_X86ASM),y)
FFMPEG_CONFIGURE += --enable-x86asm
else
FFMPEG_CONFIGURE += --disable-x86asm
endif
FFMPEG_ENABLE= \
$(foreach c, $(2), \
--enable-$(1)="$(c)" \
)
FFMPEG_CONFIGURE+= \
--enable-hardcoded-tables \
--disable-static \
--libdir="/usr/lib/remux" \
--enable-rpath \
\
--disable-ffplay \
--disable-alsa \
--disable-iconv \
--disable-sndio \
--disable-schannel \
--disable-sdl2 \
--disable-securetransport \
--disable-xlib \
--disable-v4l2-m2m \
--disable-avdevice \
--disable-postproc \
--disable-swresample \
--disable-swscale \
--disable-everything \
$(call FFMPEG_ENABLE,decoder,$(FFMPEG_REMUX_DECODERS)) \
$(call FFMPEG_ENABLE,parser,$(FFMPEG_REMUX_PARSERS)) \
$(call FFMPEG_ENABLE,demuxer,$(FFMPEG_REMUX_DEMUXERS)) \
$(call FFMPEG_ENABLE,muxer,$(FFMPEG_REMUX_MUXERS)) \
$(call FFMPEG_ENABLE,protocol,$(FFMPEG_REMUX_PROTOCOLS))
ifneq ($(CONFIG_TARGET_x86),)
TARGET_CFLAGS+= -fomit-frame-pointer
endif
define Build/Configure
( cd $(PKG_BUILD_DIR); $(FFMPEG_CONFIGURE) )
endef
define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR) \
DESTDIR="$(PKG_INSTALL_DIR)" \
all install
endef
define Package/ffmpeg-remux/install
$(INSTALL_DIR) $(1)/usr/lib/remux
$(INSTALL_DIR) $(1)/usr/bin
$(CP) $(PKG_INSTALL_DIR)/usr/lib/remux/lib{avcodec,avfilter,avformat,avutil}.so.* $(1)/usr/lib/remux/
$(CP) $(PKG_INSTALL_DIR)/usr/bin/ffmpeg $(1)/usr/bin/remux
endef
$(eval $(call BuildPackage,ffmpeg-remux))