Victor Ponomarenko
Victor Ponomarenko

Reputation: 490

Couldn't open https stream - protocol not found (ffmpeg with openssl)

I received from compiled ffmpeg with openssl next message: Protocol not found. I'm testing on hls over https.

The ffmpeg is 3.3 and openssl is 1.0.0a versions.

I have next configure script:

./configure \
--target-os=linux \
--incdir=$BUILD_DIR/include/$ABI \
--libdir=$BUILD_DIR/lib/$ABI \
--prefix=$BUILD_DIR/lib/$ABI \
--enable-cross-compile \
--extra-libs="-lgcc" \
--arch=$ARCH \
--cc=$PREBUILT/bin/$HOST-gcc \
--cross-prefix=$PREBUILT/bin/$HOST- \
--nm=$PREBUILT/bin/$HOST-nm \
--sysroot=$PLATFORM \
--extra-cflags="$OPTIMIZE_CFLAGS -I${OPENSSL_INCLUDE_DIR}" \
--extra-cxxflags="I${OPENSSL_INCLUDE_DIR}" \
--extra-ldflags="-Wl,-rpath-link=${PLATFORM}usr/lib -L${PLATFORM}usr/lib -nostdlib -lc -lm -ldl -llog -lz -L${OPENSSL_BUILD_DIR}/${ABI}  $openssl_addi_ldflags -lssl -lcrypto" \
--disable-static \
--disable-ffplay \
--disable-ffmpeg \
--disable-ffprobe \
--disable-ffserver \
--disable-doc \
--disable-symver \
--disable-postproc \
--disable-gpl \
--disable-encoders \
--disable-muxers \
--disable-bsfs \
--disable-protocols \
--disable-indevs \
--disable-outdevs \
--disable-devices \
--enable-shared \
--enable-small \
--enable-encoder=png \
--enable-openssl \
--enable-runtime-cpudetect \
--enable-protocol=file,ftp,http,https,httpproxy,hls,mmsh,mmst,pipe,rtmp,rtmps,rtmpt,rtmpts,rtp,sctp,srtp,tcp,udp \
--pkg-config=$(which pkg-config) \
$ADDITIONAL_CONFIGURE_FLAG || die "Couldn't configure ffmpeg!"

Before I configured it I received errors like openssl not found. I fixed that, but i try to load stream which works over https, I receives Protocol not found. Also, I think this is weird, after configuration https is missed in enabled protocols list.

Enabled protocols:
ffrtmphttp        hls               mmsh              rtmp          srtp
file              http              mmst              rtmpt         tcp
ftp               httpproxy         pipe              rtp           udp

Update 23.04.2017

My openssl build script:

# environment variables
top_root=$PWD
src_root=${top_root}/src
patch_root=${top_root}/patches
dist_root=${top_root}/libs/openssl
dist_bin_root=${dist_root}/bin
dist_include_root=${dist_root}/include
dist_lib_root=${dist_root}/lib
build_log=${top_root}/openssl_build.log

# create our folder structure
cd ${top_root}
test -d ${src_root} || mkdir -p ${src_root}
test -d ${dist_root} || mkdir -p ${dist_root}
test -d ${dist_bin_root} || mkdir -p ${dist_bin_root}
test -d ${dist_include_root} || mkdir -p ${dist_include_root}
test -d ${dist_lib_root} || mkdir -p ${dist_lib_root}
touch ${build_log}

rm -f ${build_log}

echo "Building openssl-android ..."

test -d ${src_root}/openssl-android || \
    git clone https://github.com/guardianproject/openssl-android.git ${src_root}/openssl-android >> ${build_log} 2>&1 || \
    die "Couldn't clone openssl-android repository!"
cd ${src_root}/openssl-android

${NDK}/ndk-build >> ${build_log} 2>&1 || die "Couldn't build openssl-android!"

# copy the versioned libraries
#cp -r ${src_root}/openssl-android/libs/armeabi/lib*.so --parents ${dist_lib_root}/.
rsync -a --include '*/' --include '*.so' --exclude '*' ${src_root}/openssl-android/libs/ ${dist_lib_root}/
# copy the executables
#cp -r ${src_root}/openssl-android/libs/armeabi/openssl ${dist_bin_root}/. # work only for one abi folder
rsync -a --include '*/openssl' --exclude '*.so' ${src_root}/openssl-android/libs/ ${dist_bin_root}/
#cp -r ${src_root}/openssl-android/libs/armeabi/ssltest ${dist_bin_root}/. # work only for one abi folder
rsync -a --include '*/ssltest' --exclude '*.so' ${src_root}/openssl-android/libs/ ${dist_bin_root}/
# copy the headers
cp -r ${src_root}/openssl-android/include/* ${dist_include_root}/.

cd ${top_root}

Will thankful for any help.

Upvotes: 0

Views: 4292

Answers (2)

Victor Ponomarenko
Victor Ponomarenko

Reputation: 490

When I removed next line

--disable-protocols \

It began work. This is weird thing coz in my script there is one more line that will enable all required for my purposes protocols:

--enable-protocol=file,ftp,http,https,httpproxy,hls,mmsh,mmst,pipe,rtmp,rtmps,rtmpt,rtmpts,rtp,sctp,srtp,tcp,udp \

Also, I've updated openssl lib version to 1.0.2j. Anyway, for me this is the solution. Thanks @Mulvya for help.

Upvotes: 0

Gyan
Gyan

Reputation: 93319

OpenSSL needs --enable-nonfree in order to be compiled. GnuTLS offers https support with LGPL license.

Upvotes: 1

Related Questions