2017-09-27 30 views
0

librtmpをコンパイルしようとしています。そのため、ARMプロセッサ用にRTMPをサポートするFFmpegをビルドできます。librtmpをサポートするARM用FFmpegを構築しようとする問題

すでにツールチェーンがあり、FFmpegのソロビルドも成功しており、ARMプロセッサー内部からのテストも成功しました。

私の理解:この階層はFFmepgを構築するために必要とされる

- Ffmpeg 
-- Librtmp 
--- Openssl 
--- zlib 

これまでのところ、私はARMのためのopensslとARMのためのzlibをビルドしました。そして、私はそれが右のARM出力フォルダにあることがわかります。

前提条件:

export LD_LIBRARY_PATH=/opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr/lib/ 
export CCPREFIX="/opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr/bin/arm-unknown-linux-uclibcgnueabi-" 
export CFLAGS="-I/opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr/include" 
export LDFLAGS="-L/opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr/lib/" 

1-手順ZLIBを構築する:

export CC=arm-linux-gcc 
./configure --prefix=/opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr 
make 
make install 

2-ステップOpenSSLを構築する:

export cross=arm-linux- 
./Configure dist --prefix=/opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr 
make CC="${cross}gcc" AR="${cross}ar r" RANLIB="${cross}ranlib" 
make install 

3-手順はlibrtmpを構築する:

make CROSS_COMPILE=arm-linux- INC=-I/opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr/include LIB=-L/opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr/lib 

1,2上記の手順は、第三に、私はこれを取得、成功している:

[[email protected] rtmpdump]$ cd /opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr/lib 
[[email protected] lib]$ ls 
bin     libavcodec.a  libgmp.so.10.0.2 libz.so 
certs    libavdevice.a  libiberty.a  libz.so.1 
engines    libavfilter.a  libmpfr.la  libz.so.1.2.11 
gcc     libavformat.a  libmpfr.so  man 
include    libavutil.a  libmpfr.so.4  misc 
ldscripts   libcrypto.a  libmpfr.so.4.0.1 openssl.cnf 
lib     libfakeroot-0.so libpostproc.a  pkgconfig 
libaacplus.a   libfakeroot.la libssl.a   private 
libaacplus.la  libfakeroot.so libswresample.a share 
libaacplus.so  libgmp.la   libswscale.a 
libaacplus.so.2  libgmp.so   libx264.a 
libaacplus.so.2.0.2 libgmp.so.10  libz.a 
[[email protected] lib]$ 

任意のアイデアどのように:

make CROSS_COMPILE=arm-linux- INC=-I/opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr/include LIB=-L/opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr/lib 
make[1]: Entering directory '/home/user/Downloads/ip_code/rtmpdump/librtmp' 
arm-linux-gcc -shared -Wl,-soname,librtmp.so.1 -o librtmp.so.1 rtmp.o log.o amf.o hashswf.o parseurl.o -lssl -lcrypto -lz 
/opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr/bin/../lib/gcc/arm-unknown-linux-uclibcgnueabi/4.4.0/../../../../arm-unknown-linux-uclibcgnueabi/bin/ld: cannot find -lssl 
/opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr/bin/../lib/gcc/arm-unknown-linux-uclibcgnueabi/4.4.0/../../../../arm-unknown-linux-uclibcgnueabi/bin/ld: cannot find -lcrypto 
/opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr/bin/../lib/gcc/arm-unknown-linux-uclibcgnueabi/4.4.0/../../../../arm-unknown-linux-uclibcgnueabi/bin/ld: cannot find -lz 
collect2: ld returned 1 exit status 
Makefile:92: recipe for target 'librtmp.so.1' failed 
make[1]: *** [librtmp.so.1] Error 1 
make[1]: Leaving directory '/home/user/Downloads/ip_code/rtmpdump/librtmp' 
Makefile:76: recipe for target 'librtmp/librtmp.a' failed 
make: *** [librtmp/librtmp.a] Error 2 

が、出力フォルダに、私は右のファイルがある見ることができます

コンパイル? ./configureを時のrtmpdumpのは明らかにいくつかの他のOSの要件です...私は昨日rtmpdumpの/はlibrtmpせずにFFmpegをコンパイルし、「有効なプロトコル」で、私は:

+0

ライブラリは '.a'ですが、コマンドラインには' -shared'があります。ビルドマシンでARM SSLの '.so'ファイルを共有できますか? –

+0

そこには表示されません。これをコンパイルするだけで、このオプションでConfigureを呼び出しました:./Configure dist --prefix =/opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr、makeとmake install。これを行った後も、ARMの/opt/..../libフォルダにファイルが表示されません。そして、rtmpdumpのMAKEFILEで-sharedオプションを見つけようとしましたが、そこには何も言及されていません。 rtmpdump/librtmpに-sharedオプションをつけて強制的にビルドすることが何になっているのだろうか。 – bcop

答えて

0

ただ、情報をお寄せいただきありがとうございますがRTMP/RTMPSなども見ることができます...

非常に驚いたことに、ターゲットとなるARMデバイスでコンパイルされたFFmpegを実行しました。問題なく実行されます.ffmpeg(ARM用)私はrtmpdumpと格闘していました。

Enabled protocols: 
async    httpproxy   rtmpte 
cache    https    rtmpts 
concat    icecast   rtp 
crypto    md5    srtp 
data    mmsh    subfile 
ffrtmpcrypt  mmst    tcp 
ffrtmphttp   pipe    tee 
file    prompeg   tls_openssl 
ftp    rtmp    udp 
gopher    rtmpe    udplite 
hls    rtmps    unix 
http    rtmpt 

問題が解決しました。

関連する問題