gelöst. http://qiita.com/tf_qiita/items/60d6d21ffb23656949d2
Als die Videodatei in S3 platziert wurde, habe ich Python auf Lamb2 mit Lambda und getreten Ich habe ein Programm erstellt, das ffmpeg über ffmpy startet und Videos verarbeitet. Da ffmpy nicht normal importiert werden kann, werde ich es in den Informationsaustausch eintragen, wenn es mit der aktuellen Situation gelöst ist.
Der Ausführungscode befindet sich wie unten gezeigt im Home-Verzeichnis von ec2-user.
/home/ec2-user/hoge/
├── MAIN1_KICKED_BY_LAMBDA.py #Hauptmethode
├── fuga
│ └── hogefuga.py #Videobearbeitungsmodul
...
Die folgenden Einstellungen wurden für den Root-Benutzer vorgenommen.
pip install ffmpy
--Installieren Sie ffmpeg (Skript unten)ffmpegcpl.sh
#!/bin/sh
sudo yum -y install autoconf automake cmake freetype-devel gcc gcc-c++ git libtool make mercurial nasm pkgconfig zlib-devel
mkdir ~/ffmpeg_sources
#Yasm
cd ~/ffmpeg_sources
git clone --depth 1 git://github.com/yasm/yasm.git
cd yasm
autoreconf -fiv
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make
make install
make distclean
#libx264
cd ~/ffmpeg_sources
git clone --depth 1 git://git.videolan.org/x264
cd x264
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static
make
make install
make distclean
#libx265
cd ~/ffmpeg_sources
hg clone https://bitbucket.org/multicoreware/x265
cd ~/ffmpeg_sources/x265/build/linux
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../source
make
make install
#libfdk_aac
cd ~/ffmpeg_sources
git clone --depth 1 git://git.code.sf.net/p/opencore-amr/fdk-aac
cd fdk-aac
autoreconf -fiv
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install
make distclean
#libmp3lame
cd ~/ffmpeg_sources
curl -L -O http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
tar xzvf lame-3.99.5.tar.gz
cd lame-3.99.5
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-nasm
make
make install
make distclean
#libopus
cd ~/ffmpeg_sources
git clone http://git.opus-codec.org/opus.git
cd opus
autoreconf -fiv
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install
make distclean
#libogg
cd ~/ffmpeg_sources
curl -O http://downloads.xiph.org/releases/ogg/libogg-1.3.2.tar.gz
tar xzvf libogg-1.3.2.tar.gz
cd libogg-1.3.2
./configure --prefix="$HOME/ffmpeg_build" --disable-shared
make
make install
make distclean
#libvorbis
cd ~/ffmpeg_sources
curl -O http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.4.tar.gz
tar xzvf libvorbis-1.3.4.tar.gz
cd libvorbis-1.3.4
LDFLAGS="-L$HOME/ffmeg_build/lib" CPPFLAGS="-I$HOME/ffmpeg_build/include" ./configure --prefix="$HOME/ffmpeg_build" --with-ogg="$HOME/ffmpeg_build" --disable-shared
make
make install
make distclean
#libvpx
cd ~/ffmpeg_sources
git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git
cd libvpx
./configure --prefix="$HOME/ffmpeg_build" --disable-examples
make
make install
make clean
#FFmpeg
cd ~/ffmpeg_sources
git clone http://source.ffmpeg.org/git/ffmpeg.git
cd ffmpeg
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" --bindir="$HOME/bin" --pkg-config-flags="--static" --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265
make
make install
make distclean
hash -r
Bitte veröffentlichen Sie den auszuführenden Code nicht. .. .. Das Protokoll, wenn es von Lambda ausgeführt wird, sieht wie folgt aus, und es scheint, dass es durch Betrachten von pyenv (nicht vorhanden) von ec2-user gelöscht wird.
Traceback (most recent call last):
File "/home/ec2-user/hoge/MAIN1_KICKED_BY_LAMBDA.py", line 88, in <module>
hogefuga.exeExtractWav(TMP_DIRECTORY2 + '/', nameonly)
File "/home/ec2-user/hoge/fuga/hogefuga.py", line 175, in exeExtractWav
extractWav(filename)
File "/home/ec2-user/hoge/fuga/hogefuga.py", line 162, in extractWav
ff.run()
File "/home/ec2-user/.pyenv/versions/anaconda3-4.3.1/lib/python3.6/site-packages/ffmpy.py", line 99, in run
raise FFExecutableNotFoundError("Executable '{0}' not found".format(self.executable))
ffmpy.FFExecutableNotFoundError: Executable 'ffmpeg' not found
Wenn ich mich mit SSH verbinde und es direkt als root ausführe, sehe ich pyenv auf der root-Seite und es wird ohne Probleme ausgeführt. Gibt es die folgenden zwei Lösungen?
--Konstruieren Sie die pyenv- und ffmpeg-Umgebungen auch in der ec2-Benutzerumgebung.
Erstens wird es nicht aktualisiert, es sei denn, die Ursache für die Pfadänderung zwischen direkter Ausführung und Lambda-Ausführung ist geklärt.
(2017.05.23 17:12 Nachtrag)
--Konstruieren Sie die pyenv- und ffmpeg-Umgebungen auch in der ec2-Benutzerumgebung.
Ich habe beide ausprobiert, aber am Ende den folgenden Fehler erhalten.
----------ERROR-------
failed to run commands: exit status 1
Traceback (most recent call last):
File "MAIN1_KICKED_BY_LAMBDA.py", line 17, in <module>
import formatchg
File "/root/fuga/hoge/fugahoge.py", line 10, in <module>
from ffmpy import FFmpeg
ImportError: No module named ffmpy