init
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
# Contributor: Anton Dzyk <anton.dzyk@yandex.ru>
|
||||
# Maintainer: Ivan Krutov <vania-pooh@aerokube.com>
|
||||
pkgname=ffmpeg-x11grab
|
||||
pkgsource=ffmpeg
|
||||
pkgver=4.3
|
||||
pkgrel=1
|
||||
pkgdesc="FFMPEG version optimized for x11grab to x264"
|
||||
url="https://ffmpeg.org"
|
||||
arch="all"
|
||||
license="LGPL-2.1-or-later GPL-2.0-or-later"
|
||||
makedepends="gnutls-dev lame-dev libvorbis-dev xvidcore-dev zlib-dev libvdpau-dev
|
||||
imlib2-dev x264-dev libtheora-dev coreutils bzip2-dev perl-dev libvpx-dev
|
||||
libvpx-dev sdl2-dev libxfixes-dev libva-dev v4l-utils-dev yasm opus-dev libass-dev pulseaudio-dev"
|
||||
source="https://ffmpeg.org/releases/ffmpeg-$pkgver.tar.xz
|
||||
0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch
|
||||
"
|
||||
builddir="$srcdir/$pkgsource-$pkgver"
|
||||
|
||||
build() {
|
||||
local _dbg="--disable-debug"
|
||||
local _asm=""
|
||||
[ -n "$DEBUG" ] && _dbg="--enable-debug"
|
||||
|
||||
case "$CARCH" in
|
||||
x86 | arm*) _asm="--disable-asm" ;;
|
||||
esac
|
||||
|
||||
cd "$builddir"
|
||||
./configure \
|
||||
--prefix=/usr \
|
||||
--enable-avfilter \
|
||||
--enable-gpl \
|
||||
--enable-libx264 \
|
||||
--enable-libpulse \
|
||||
--enable-static \
|
||||
--enable-small \
|
||||
--disable-ffplay \
|
||||
--disable-ffprobe \
|
||||
--disable-doc \
|
||||
--disable-htmlpages \
|
||||
--disable-manpages \
|
||||
--disable-podpages \
|
||||
--disable-txtpages \
|
||||
--disable-w32threads \
|
||||
--disable-alsa \
|
||||
--disable-audiotoolbox \
|
||||
--disable-cuda \
|
||||
--disable-cuvid \
|
||||
--disable-d3d11va \
|
||||
--disable-dxva2 \
|
||||
--disable-nvenc \
|
||||
--disable-vaapi \
|
||||
--disable-vdpau \
|
||||
--disable-videotoolbox \
|
||||
--disable-librtmp \
|
||||
--disable-devices \
|
||||
--enable-indev=xcbgrab \
|
||||
--enable-indev=pulse \
|
||||
$_asm $_dbg
|
||||
make
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "$builddir"
|
||||
make DESTDIR="$pkgdir" install
|
||||
}
|
||||
|
||||
libs() {
|
||||
pkgdesc="Libraries for ffmpeg"
|
||||
replaces="ffmpeg"
|
||||
mkdir -p "$subpkgdir"/usr
|
||||
mv "$pkgdir"/usr/lib "$subpkgdir"/usr
|
||||
}
|
||||
|
||||
sha512sums="f031eb6c4423887af323ab7d1f431234d4e30993a52db45dccf427b41eb442a3bd020dcbc13e83cbf813fad0f36c849cb651203570148387c864507aa19f313a ffmpeg-4.3.tar.xz
|
||||
1047a23eda51b576ac200d5106a1cd318d1d5291643b3a69e025c0a7b6f3dbc9f6eb0e1e6faa231b7e38c8dd4e49a54f7431f87a93664da35825cc2e9e8aedf4 0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch"
|
||||
@@ -0,0 +1,21 @@
|
||||
FROM alpine:3.12
|
||||
|
||||
RUN apk add -U alpine-sdk && adduser -g "" -D -G abuild selenoid
|
||||
USER selenoid
|
||||
RUN git clone git://git.alpinelinux.org/aports /home/selenoid/aports
|
||||
ADD APKBUILD /home/selenoid/aports/community/ffmpeg/
|
||||
RUN cd /home/selenoid/aports/community/ffmpeg/ && \
|
||||
abuild checksum && \
|
||||
abuild unpack && \
|
||||
abuild deps && \
|
||||
abuild build
|
||||
USER root
|
||||
|
||||
FROM alpine:3.12
|
||||
|
||||
RUN apk add -U x264-libs sdl2 libxcb libbz2 xset pulseaudio-utils && \
|
||||
rm -rf /var/cache/apk/*
|
||||
COPY --from=0 /home/selenoid/aports/community/ffmpeg/src/ffmpeg-4.3/ffmpeg /usr/bin/ffmpeg
|
||||
|
||||
COPY entrypoint.sh /
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
Executable
+42
@@ -0,0 +1,42 @@
|
||||
#!/bin/sh
|
||||
VIDEO_SIZE=${VIDEO_SIZE:-"1920x1080"}
|
||||
BROWSER_CONTAINER_NAME=${BROWSER_CONTAINER_NAME:-"browser"}
|
||||
DISPLAY=${DISPLAY:-"99"}
|
||||
FILE_NAME=${FILE_NAME:-"video.mp4"}
|
||||
FRAME_RATE=${FRAME_RATE:-"12"}
|
||||
CODEC=${CODEC:-"libx264"}
|
||||
PRESET=${PRESET:-""}
|
||||
if [ "$CODEC" == "libx264" -a -n "$PRESET" ]; then
|
||||
PRESET="-preset $PRESET"
|
||||
fi
|
||||
INPUT_OPTIONS=${INPUT_OPTIONS:-""}
|
||||
HIDE_CURSOR=${HIDE_CURSOR:-""}
|
||||
if [ -n "$HIDE_CURSOR" ]; then
|
||||
INPUT_OPTIONS="$INPUT_OPTIONS -draw_mouse 0"
|
||||
fi
|
||||
|
||||
retcode=1
|
||||
max_attempts=300
|
||||
attempts=0
|
||||
echo 'Waiting for display to open...'
|
||||
until [ $retcode -eq 0 -o $attempts -eq $max_attempts ]; do
|
||||
xset -display ${BROWSER_CONTAINER_NAME}:${DISPLAY} b off > /dev/null 2>&1
|
||||
retcode=$?
|
||||
if [ $retcode -ne 0 ]; then
|
||||
echo 'Sleeping before next attempt...'
|
||||
sleep 0.1
|
||||
fi
|
||||
attempts=$((attempts+1))
|
||||
done
|
||||
|
||||
mkdir -p ~/.config/pulse
|
||||
|
||||
echo -n 'gIvST5iz2S0J1+JlXC1lD3HWvg61vDTV1xbmiGxZnjB6E3psXsjWUVQS4SRrch6rygQgtpw7qmghDFTaekt8qWiCjGvB0LNzQbvhfs1SFYDMakmIXuoqYoWFqTJ+GOXYByxpgCMylMKwpOoANEDePUCj36nwGaJNTNSjL8WBv+Bf3rJXqWnJ/43a0hUhmBBt28Dhiz6Yqowa83Y4iDRNJbxih6rB1vRNDKqRr/J9XJV+dOlM0dI+K6Vf5Ag+2LGZ3rc5sPVqgHgKK0mcNcsn+yCmO+XLQHD1K+QgL8RITs7nNeF1ikYPVgEYnc0CGzHTMvFR7JLgwL2gTXulCdwPbg=='| base64 -d>~/.config/pulse/cookie
|
||||
|
||||
export PULSE_SERVER=${BROWSER_CONTAINER_NAME}
|
||||
|
||||
if pactl info >/dev/null 2>&1; then
|
||||
exec ffmpeg -f pulse -i default -y -f x11grab -video_size ${VIDEO_SIZE} -r ${FRAME_RATE} ${INPUT_OPTIONS} -i ${BROWSER_CONTAINER_NAME}:${DISPLAY} -codec:v ${CODEC} ${PRESET} -pix_fmt yuv420p -filter:v "pad=ceil(iw/2)*2:ceil(ih/2)*2" "/data/$FILE_NAME"
|
||||
else
|
||||
exec ffmpeg -y -f x11grab -video_size ${VIDEO_SIZE} -r ${FRAME_RATE} ${INPUT_OPTIONS} -i ${BROWSER_CONTAINER_NAME}:${DISPLAY} -codec:v ${CODEC} ${PRESET} -pix_fmt yuv420p -filter:v "pad=ceil(iw/2)*2:ceil(ih/2)*2" "/data/$FILE_NAME"
|
||||
fi
|
||||
Reference in New Issue
Block a user