Installing ffmpeg and ffprobe on macOS manually
To manually install ffmpeg and ffprobe for use with Audio Orchestrator, follow these instructions.
Audio Orchestrator is an experimental tool from the BBC for creating multi-device audio experiences. Like many other programs, it uses ffmpeg and ffprobe under the hood. You do not need it just to run ffmpeg and ffprobe . Only follow the instructions below if you want to use Audio Orchestrator but a standard ffmpeg installation is not possible. We generally recommend using Homebrew (i.e., brew install ffmpeg , which includes ffprobe ) instead.
If you still need to install Audio Orchestrator itself, follow the macOS installation instructions first.
- Download ffmpeg and ffprobe.
- Go to https://ffmpeg.org/download.html and click the Apple logo in the «Get packages & executable files» section.
- Click «Static builds for macOS 64-bit».
- You’ll see two options for downloading ffmpeg. Choose the one with the shorter filename; this will look like ffmpeg-.7z , where is something like 4.3.1 .
- Underneath this heading, click «Download as ZIP».
- Scroll down the page until you see ffprobe. Choosing the shorter filename, under ffprobe-.7z , click «Download the file as ZIP».
- If a popup appears after clicking the download link, press «allow» or «save».
- Open your Downloads folder, and double-click ffmpeg-.zip . This will extract it using the Archive Utility and create an executable ffmpeg file in Downloads.
- Repeat this step for ffprobe .
- You should now have two executables, called ffmpeg and ffprobe .
- Open your home folder.
- Your home folder has the same name as your user account. The easiest way to find it is to open Finder, and use the keyboard shortcut command + shift + H or in the menu bar select Go > Home.
- You should see folders such as Desktop, Applications, and Downloads in this folder.
- Create a new folder called audio-orchestrator-ffmpeg in your home folder.
- Go to File > New folder or use the shortcut command + shift + N , type or enter the folder name, and press return to confirm.
- Open your new audio-orchestrator-ffmpeg folder by double-clicking it.
- Create a new folder called bin in audio-orchestrator-ffmpeg .
- Move the ffmpeg and ffprobe files from Downloads into this bin folder.
- You should now have two files, ffmpeg and ffprobe , in your ~/audio-orchestrator-ffmpeg/bin/ folder.

ffmpeg and ffprobe executables with the required folder structure
- Double-click the file called ffmpeg .
- You should see an error message «ffmpeg can’t be opened because it is from an unidentified developer». Click «OK».
- Go to System Preferences > Security and Privacy and click on the General tab.
- At the bottom of the window you will see a message saying that ffmpeg was blocked. Click «Open Anyway».
- If you do not see this message in the General tab, double-click ffmpeg again.
- You may have to click the «unlock» button and enter your password to be able to click «Open Anyway».
- If you see another popup that says “ffmpeg is from an unidentified developer. Are you sure you want to open it?”, click «Open». If you don’t get this popup, just go to the same file and double-click it again.
- When you double-click the file, a Terminal window may open. Keep the terminal open until you see a message confirming you can close it.
- Repeat authorisation steps (a) to (f) for the file called ffprobe .
iridiumtechru.github.io:$ cd ~
Сборка ffmpeg с libx264 (windows, ios, osx, android)
17 Apr 2018
Как собрать библиотеку с поддержкой кодека h264 на большинстве платформ.
Зачем?
Библиотеку ffmpeg я использую для воспроизведения потока с камер. Понадобилось сделать SIP телефонию с поддержкой h264. Для этого нужно было пересобрать все имеющиеся библиотеки. Все файлы для сборки либо потерялись, либо были нерабочими. Пришлось пройти этот ад снова.
Исходники
FFmpeg
Я использовал версию 2.8, которая лежала у меня с незапамятных времен. Можно использовать версию старше.
- http:
- git clone -b release/2.8 https://github.com/FFmpeg/FFmpeg.git
x264
- ftp
- git clone http://git.videolan.org/git/x264.git
Cборка x264
Первым делом собираем libx264. Если не требуется переходим сразу к сборке FFmpeg
Windows
- Ставим VS Studio 2015 или выше. Минимальная версия VS2013 u2.
- Ставим MSYS2.
- Открываем консоль разработчика. Пуск/Visual Studio (Version)/Developer Command Promt. В ней будут доступны пути до компилятора и компоновщика.
- Из открытой консоли открываем консоль MSYS2.
- C:\msys64\msys2_shell.cmd -mingw64 -full-path
- mingw32 или mingw64 в зависимости от архитектуры
- full-path — позволяет увидеть путь до компилятора (можно раскомментировать строчку set MSYS2_PATH_TYPE=inherit в msys2_shell.cmd)
- Переходим в папку с исходниками libx264.
CC=cl ./configure --enable-static --prefix=$PWD>/installed make make installiOS
- Переходим в папку с исходниками libx264. Это будет корень LIBX264_ROOT.
- Сборка будет происходить в папке [LIBX264_ROOT]/Projects/iOS/. Создаем папку mkdir -p Projects/iOS .
- Переходим в папку проекта.
- Создаем build_x264.sh. Копируем в него скрипт.
- Запускаем сборку библиотек: sh ./build_x264.sh .
- Файлы будут лежать в [LIBX264_ROOT]/Projects/iOS/Temp.
- Запускаем сборку FAT-либок. sh ./build_x264.sh lipo
- FAT-либка будут лежать в [LIBX264_ROOT]/lib/ios.
build_x264.sh
#!/bin/sh CONFIGURE_FLAGS="--enable-static --enable-pic --disable-cli" ARCHS="arm64 armv7 armv7s" #x86_64 i386 # folders CWD=$(pwd) TEMP_DIR=$CWD/Temp mkdir -p $TEMP_DIR # Go to ROOT cd ../.. WORK_DIR=$(pwd) # output dir FAT=$WORK_DIR/lib/ios mkdir -p $FAT COMPILE="y" LIPO="y" #echo "temp dir=$TEMP_DIR" #echo "work dir=$WORK_DIR" # make this files executable chmod +x $WORK_DIR/version.sh chmod +x $WORK_DIR/tools/gas-preprocessor.pl chmod +x $WORK_DIR/config.sub chmod +x $WORK_DIR/config.guess if [ "$*" ] then if [ "$*" = "lipo" ] then # skip compile COMPILE= else ARCHS="$*" if [ $# -eq 1 ] then # skip lipo LIPO= fi fi fi if [ "$COMPILE" ] then #CWD=$PWD for ARCH in $ARCHS do echo "building $ARCH. " mkdir -p "$TEMP_DIR/$ARCH" CFLAGS="-arch $ARCH" ASFLAGS= if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ] then PLATFORM="iPhoneSimulator" CPU= if [ "$ARCH" = "x86_64" ] then CFLAGS="$CFLAGS -mios-simulator-version-min=7.0" HOST= else CFLAGS="$CFLAGS -mios-simulator-version-min=5.0" HOST="--host=i386-apple-darwin" fi else PLATFORM="iPhoneOS" if [ $ARCH = "arm64" ] then HOST="--host=aarch64-apple-darwin" XARCH="-arch aarch64" else HOST="--host=arm-apple-darwin" XARCH="-arch arm" fi CFLAGS="$CFLAGS -fembed-bitcode -mios-version-min=7.0" ASFLAGS="$CFLAGS" fi XCRUN_SDK=`echo $PLATFORM | tr '[:upper:]' '[:lower:]'` CC="xcrun -sdk $XCRUN_SDK clang" if [ $PLATFORM = "iPhoneOS" ] then export AS="$WORK_DIR/tools/gas-preprocessor.pl $XARCH -- $CC" else export -n AS fi CXXFLAGS="$CFLAGS" LDFLAGS="$CFLAGS" CC=$CC ./configure \ $CONFIGURE_FLAGS \ $HOST \ --extra-cflags="$CFLAGS" \ --extra-asflags="$ASFLAGS" \ --extra-ldflags="$LDFLAGS" \ --prefix="$TEMP_DIR/$ARCH" || exit 1 make clean make -j3 install || exit 1 done fi if [ "$LIPO" ] then echo "building fat binaries. " set - $ARCHS THIN=$TEMP_DIR echo "$THIN" cd $THIN/$1/lib for LIB in *.a do cd $WORK_DIR echo lipo -create `find $THIN -name $LIB` -output $FAT/$LIB 1>&2 lipo -create `find $THIN -name $LIB` -output $FAT/$LIB done cd $WORK_DIR #cp -rf $THIN/$1/include $WORK_DIR fiOSX
- Алгоритм сборки для OSX совпадает с iOS. Немного отличается скрипт и рабочая папка [LIBX264_ROOT]/Projects/OSX/
- На моей машине для i386 сразу создавалась FAT-либка. Я просто копировал ее в [LIBX264_ROOT]/lib/osx/
build_x264.sh
#!/bin/sh CONFIGURE_FLAGS="--enable-static --enable-pic --disable-cli --disable-asm" ARCHS="x86_64 i386" # # directiries CWD=$(pwd) TEMP_DIR=$CWD/Temp mkdir -p $TEMP_DIR cd ../.. WORK_DIR=$(pwd) FAT=$WORK_DIR/lib/osx mkdir -p $FAT COMPILE="y" LIPO="y" echo "temp dir=$TEMP_DIR" echo "work dir=$WORK_DIR" chmod +x $WORK_DIR/version.sh chmod +x $WORK_DIR/tools/gas-preprocessor.pl chmod +x $WORK_DIR/config.sub chmod +x $WORK_DIR/config.guess if [ "$*" ] then if [ "$*" = "lipo" ] then # skip compile COMPILE= else ARCHS="$*" if [ $# -eq 1 ] then # skip lipo LIPO= fi fi fi if [ "$COMPILE" ] then #CWD=$PWD for ARCH in $ARCHS do echo "building $ARCH. " mkdir -p "$TEMP_DIR/$ARCH" CFLAGS="-arch $ARCH" ASFLAGS= PLATFORM="macosx" XCRUN_SDK=`echo $PLATFORM | tr '[:upper:]' '[:lower:]'` CC="xcrun -sdk $XCRUN_SDK clang" CXXFLAGS="$CFLAGS" LDFLAGS="$CFLAGS" CC=$CC ./configure \ $CONFIGURE_FLAGS \ $HOST \ --extra-cflags="$CFLAGS" \ --extra-asflags="$ASFLAGS" \ --extra-ldflags="$LDFLAGS" \ --prefix="$TEMP_DIR/$ARCH" || exit 1 make clean make -j3 install || exit 1 done fi # TODO i386 makes fat lib. need only cp Temp/i386/lib/*.a $WORK_DIR/lib/osx if [ "$LIPO" ] then echo "building fat binaries. " cp Temp/i386/lib/*.a $WORK_DIR/lib/osx #set - $ARCHS #THIN=$TEMP_DIR #echo "$THIN" #cd $THIN/$1/lib #for LIB in *.a #do # cd $WORK_DIR # echo lipo -create `find $THIN -name $LIB` -output $FAT/$LIB 1>&2 # lipo -create `find $THIN -name $LIB` -output $FAT/$LIB #done #cd $WORK_DIR #cp -rf $THIN/$1/include $WORK_DIR fiAndroid
- Ставим Cygwin ( Mingw,MSYS2 ).
- Ставим Android NDK. Раньше качался отдельно, сейчас только через SDK Manager в Android Studio.
- Открываем консоль Cygwin.
- Переходим в папку с исходниками cd /cygdrive/// .
- Создаем папку mkdir -p Projects/Android .
- cd Projects/Android
- Создаем build_x264.sh. Копируем в него скрипт.
- Правим переменные NDK, SYSROOT, TOOLCHAIN, ARCH.
- Запускаем сборку библиотек: sh ./build_x264.sh .
build_x264.sh
#!/bin/sh NDK=C:/Users/UserName/AppData/Local/Android/sdk/ndk-bundle SYSROOT=$NDK/platforms/android-16/arch-arm/ TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64 ARCH=armeabi-v7a WORK_DIR=$(pwd) TEMP_DIR=$WORK_DIR/temp ROOT_DIR=$WORK_DIR/../.. PREFIX=$TEMP_DIR/$ARCH delete() < echo "================== Deleting libs" rm ./lib/android/*.a >copy_libs() < echo "================== Copy libs" OUT_DIR=$ROOT_DIR/lib/android/$ARCH mkdir -p $OUT_DIR cp $PREFIX/lib/*.a $OUT_DIR >build_armv7() < ./configure \ --prefix=$PREFIX \ --enable-static \ --enable-pic \ --host=arm-linux \ --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \ --sysroot=$SYSROOT make clean make make install >cd ../.. echo $(pwd) build_armv7 copy_libsCборка FFmpeg
Windows
- Ставим VS Studio 2015 или выше. Минимальная версия VS2013 u2.
- Ставим MSYS2.
- Открываем консоль разработчика. Пуск/Visual Studio (Version)/Developer Command Promt. В ней будут доступны пути до компилятора и компоновщика.
- Из открытой консоли открываем консоль MSYS2.
- C:\msys64\msys2_shell.cmd -mingw64 -full-path
- mingw32 или mingw64 в зависимости от архитектуры
- full-path — позволяет увидеть путь до компилятора (можно раскомментировать строчку set MSYS2_PATH_TYPE=inherit в msys2_shell.cmd)
- Переходим в папку с исходниками ffmpeg.
./configure --toolchain=msvc --disable-shared --disable-doc --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --disable-avdevice --disable-symver --enable-libx264 --enable-gpl --prefix=$PWD>/installed --extra-cflags="-IC:\\x264\\installed\\include" --extra-ldflags="-LC:\\x264\\installed\\lib"- –disable-shared — статические библиотеки, –disable-static — динамические.
- –disable-asm — если будет ругаться на ассемблерные вставки. Я собирал без него на vs2015. Если использовать vs2010, то придется потанцевать с yasm(nasm), c99conv, c99wrap.
- –arch=x86_64 — если требуется собрать x64 архитектуру. Должен быть MSYS64 и libx264 с x64 архитектурой.
- –prefix — укажет папку куда выполнится make install.
- –extra-ldflags — не работает на win7. ругается на линковку libx264.a. Нужно перенести libx264 в корень ffmpeg, либо в temp папку, которую создает configure в корне при выполнении.
make make install- если не использовать –prefix собраные либы будут лежать в подпапках рядом с исходниками.
iOS
- Переходим в папку с исходниками ffmpeg. Это будет корень FFMPEG_ROOT.
- Сборка будет происходить в папке [FFMPEG_ROOT]/Projects/iOS/. Создаем папку mkdir -p Projects/iOS .
- Переходим в папку проекта.
- Создаем build_ffmpeg.sh. Копируем в него скрипт.
- Правим пути до libx264 (если требуется).
- Запускаем сборку библиотек: sh ./build_ffmpeg.sh .
- Файлы будут лежать в [FFMPEG_ROOT]/Projects/iOS/Temp.
- Запускаем сборку FAT-либок. sh ./build_ffmpeg.sh lipo
- FAT-либка будут лежать в [build_ffmpeg]/lib/ios.
build_ffmpeg.sh
#!/bin/sh # ffmpeg_build.sh FFMPEG_SOURCE=ffmpeg-2.8 ARCHS="arm64 armv7s armv7" #x86_64 i386 CONFIGURE_FLAGS="--enable-cross-compile\ --disable-debug\ --disable-programs \ --disable-doc\ --disable-bzlib \ --enable-pic" # folders CWD=$(pwd) TEMP_DIR=$CWD/Temp mkdir -p $TEMP_DIR cd ../.. WORK_DIR=$(pwd) FAT=$WORK_DIR/lib/ios mkdir -p $FAT chmod +x ./configure chmod +x ./version.sh # absolute path to x264 library X264="$WORK_DIR/../x264/Project/iOS/Temp" echo "temp dir=$TEMP_DIR" echo "work dir=$WORK_DIR" echo "x264 dir=$X264" if [ "$X264" ] then CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-gpl --enable-libx264" fi #echo "$CONFIGURE_FLAGS" COMPILE="y" LIPO="y" DEPLOYMENT_TARGET="7.0" if [ "$*" ] then if [ "$*" = "lipo" ] then # skip compile COMPILE= else ARCHS="$*" if [ $# -eq 1 ] then # skip lipo LIPO= fi fi fi if [ "$COMPILE" ] then # install dependences if [ ! `which yasm` ] then echo 'Yasm not found' if [ ! `which brew` ] then echo 'Homebrew not found. Trying to install. ' ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" \ || exit 1 fi echo 'Trying to install Yasm. ' brew install yasm || exit 1 fi if [ ! `which gas-preprocessor.pl` ] then echo 'gas-preprocessor.pl not found. Trying to install. ' (curl -L https://github.com/libav/gas-preprocessor/raw/master/gas-preprocessor.pl \ -o /usr/local/bin/gas-preprocessor.pl \ && chmod +x /usr/local/bin/gas-preprocessor.pl) \ || exit 1 fi # arch loop for ARCH in $ARCHS do echo "building $ARCH. " mkdir -p "$TEMP_DIR/$ARCH" #cd "$TEMP_DIR/$ARCH" CFLAGS="-arch $ARCH" if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ] then PLATFORM="iPhoneSimulator" CFLAGS="$CFLAGS -mios-simulator-version-min=$DEPLOYMENT_TARGET" else PLATFORM="iPhoneOS" CFLAGS="$CFLAGS -mios-version-min=$DEPLOYMENT_TARGET -fembed-bitcode" if [ "$ARCH" = "arm64" ] then EXPORT="GASPP_FIX_XCODE5=1" fi fi XCRUN_SDK=`echo $PLATFORM | tr '[:upper:]' '[:lower:]'` CC="xcrun -sdk $XCRUN_SDK clang" # force "configure" to use "gas-preprocessor.pl" (FFmpeg 3.3) if [ "$ARCH" = "arm64" ] then AS="gas-preprocessor.pl -arch aarch64 -- $CC" else AS="$CC" fi CXXFLAGS="$CFLAGS" LDFLAGS="$CFLAGS" if [ "$X264" ] then CFLAGS="$CFLAGS -I$X264/$ARCH/include" LDFLAGS="$LDFLAGS -L$X264/$ARCH/lib" fi if [ "$FDK_AAC" ] then CFLAGS="$CFLAGS -I$FDK_AAC/include" LDFLAGS="$LDFLAGS -L$FDK_AAC/lib" fi # build ./configure \ --target-os=darwin \ --arch=$ARCH \ --cc="$CC" \ --as="$AS" \ $CONFIGURE_FLAGS \ --extra-cflags="$CFLAGS" \ --extra-ldflags="$LDFLAGS" \ --prefix="$TEMP_DIR/$ARCH" \ || exit 1 make clean make -j3 install || exit 1 done fi if [ "$LIPO" ] then echo "building fat binaries. " #mkdir -p $FAT set - $ARCHS #CWD=`pwd` #cd $THIN/$1/lib #echo "==== $1" THIN=$TEMP_DIR echo "$THIN" cd $THIN/$1/lib/ for LIB in *.a do cd $WORK_DIR echo lipo -create `find $THIN -name $LIB` -output $FAT/$LIB 1>&2 lipo -create `find $THIN -name $LIB` -output $FAT/$LIB || exit 1 done cd $WORK_DIR cp -rf $THIN/$1/include $WORK_DIR fiOSX
- Переходим в папку с исходниками ffmpeg. Это будет корень FFMPEG_ROOT.
- Сборка будет происходить в папке [FFMPEG_ROOT]/Projects/OSX/. Создаем папку mkdir -p Projects/OSX .
- Переходим в папку проекта.
- Создаем build_ffmpeg.sh. Копируем в него скрипт.
- Правим пути до libx264 (если требуется).
- Запускаем сборку библиотек: sh ./build_ffmpeg.sh .
- Файлы будут лежать в [FFMPEG_ROOT]/Projects/OSX/Temp.
- Запускаем сборку FAT-либок. sh ./build_ffmpeg.sh lipo
- FAT-либка будут лежать в [build_ffmpeg]/lib/osx.
build_ffmpeg.sh
#!/bin/sh FFMPEG_SOURCE=ffmpeg-2.8 ARCHS="x86_64 i386" # CONFIGURE_FLAGS="--enable-cross-compile\ --disable-debug\ --disable-programs \ --disable-doc\ --disable-bzlib \ --disable-asm \ --disable-vda \ --enable-pic" # folders CWD=$(pwd) TEMP_DIR=$CWD/Temp mkdir -p $TEMP_DIR cd ../.. WORK_DIR=$(pwd) FAT=$WORK_DIR/lib/osx mkdir -p $FAT chmod +x ./configure chmod +x ./version.sh # absolute path to x264 library X264="$WORK_DIR/../x264/Project/OSX/Temp" echo "temp dir=$TEMP_DIR" echo "work dir=$WORK_DIR" echo "x264 dir=$X264" if [ "$X264" ] then CONFIGURE_FLAGS="$CONFIGURE_FLAGS --enable-gpl --enable-libx264" fi #echo "$CONFIGURE_FLAGS" COMPILE="y" LIPO="y" DEPLOYMENT_TARGET="7.0" if [ "$*" ] then if [ "$*" = "lipo" ] then # skip compile COMPILE= else ARCHS="$*" if [ $# -eq 1 ] then # skip lipo LIPO= fi fi fi if [ "$COMPILE" ] then # install dependences if [ ! `which yasm` ] then echo 'Yasm not found' if [ ! `which brew` ] then echo 'Homebrew not found. Trying to install. ' ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" \ || exit 1 fi echo 'Trying to install Yasm. ' brew install yasm || exit 1 fi if [ ! `which gas-preprocessor.pl` ] then echo 'gas-preprocessor.pl not found. Trying to install. ' (curl -L https://github.com/libav/gas-preprocessor/raw/master/gas-preprocessor.pl \ -o /usr/local/bin/gas-preprocessor.pl \ && chmod +x /usr/local/bin/gas-preprocessor.pl) \ || exit 1 fi # arch loop for ARCH in $ARCHS do echo "building $ARCH. " mkdir -p "$TEMP_DIR/$ARCH" CFLAGS="-arch $ARCH" PLATFORM="macosx" XCRUN_SDK=`echo $PLATFORM | tr '[:upper:]' '[:lower:]'` CC="xcrun -sdk $XCRUN_SDK clang" CXXFLAGS="$CFLAGS" LDFLAGS="$CFLAGS" if [ "$X264" ] then CFLAGS="$CFLAGS -I$X264/$ARCH/include" LDFLAGS="$LDFLAGS -L$X264/$ARCH/lib" fi if [ "$FDK_AAC" ] then CFLAGS="$CFLAGS -I$FDK_AAC/include" LDFLAGS="$LDFLAGS -L$FDK_AAC/lib" fi # ./configure \ --target-os=darwin \ --arch=$ARCH \ --cc="$CC" \ --as="$AS" \ $CONFIGURE_FLAGS \ --extra-cflags="$CFLAGS" \ --extra-ldflags="$LDFLAGS" \ --prefix="$TEMP_DIR/$ARCH" \ || exit 1 make clean make -j3 install || exit 1 done fi if [ "$LIPO" ] then echo "building fat binaries. " #mkdir -p $FAT set - $ARCHS THIN=$TEMP_DIR echo "$THIN" cd $THIN/$1/lib/ for LIB in *.a do cd $WORK_DIR echo lipo -create `find $THIN -name $LIB` -output $FAT/$LIB 1>&2 lipo -create `find $THIN -name $LIB` -output $FAT/$LIB || exit 1 done cd $WORK_DIR cp -rf $THIN/$1/include $WORK_DIR fiAndroid
- Ставим Cygwin ( Mingw,MSYS2 ).
- Ставим Android NDK. Раньше качался отдельно, сейчас только через SDK Manager в Android Studio.
- Открываем консоль Cygwin.
- Переходим в папку с исходниками cd /cygdrive/// .
- Создаем папку mkdir -p Projects/Android .
- cd Projects/Android
- Создаем build_ffmpeg.sh. Копируем в него скрипт.
- Правим переменные NDK, SYSROOT, TOOLCHAIN, ARCH.
- Запускаем сборку библиотек: sh ./build_ffmpeg.sh .
build_ffmpeg.sh
#!/bin/sh FFMPEG_SOURCE=ffmpeg-2.8 # start cygwin # cd /cygdrive///libs/$FFMPEG_SOURCE/Projects/Android # ./ NDK=C:/Users/UserName/AppData/Local/Android/sdk/ndk-bundle SYSROOT=$NDK/platforms/android-16/arch-arm/ TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64 ARCH=armv7-a FARCH=armeabi-v7a WORK_DIR=$(pwd) #TEMP_DIR=$WORK_DIR/temp TEMP_DIR=D:/Work/iridium/trunk/Android/libs/ffmpeg-2.8/Projects/Android/temp ROOT_DIR=$WORK_DIR/../.. PREFIX=$TEMP_DIR/$FARCH export TMPDIR=D:/tmp X264_DIR=D:/Work/iridium/trunk/Android/libs/x264/Projects/Android/temp/armeabi-v7a X264_CFLAGS="-I$X264_DIR/include" X264_LDFLAGS="-L$X264_DIR/lib" delete() < echo "================== Deleting libs" rm ./lib/android/*.a >copy_libs() < echo "================== Copy libs" #cp lib/osx/x86_32/usr/local/lib/*.a lib/android OUT_DIR=$ROOT_DIR/lib/android/$FARCH mkdir -p $OUT_DIR cp $PREFIX/lib/*.a $OUT_DIR >build_armv7() < ./configure \ --prefix=$PREFIX \ --enable-static \ --disable-shared \ --disable-doc \ --disable-programs \ --disable-avdevice \ --disable-bzlib \ --disable-doc \ --disable-symver \ --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \ --target-os=linux \ --arch=arm \ --cpu=cortex-a8 \ --enable-cross-compile \ --sysroot=$SYSROOT \ --enable-gpl \ --enable-libx264 \ --extra-cflags="-Os -fpic -march=$ARCH -mfloat-abi=softfp -mfpu=vfpv3 -marm $X264_CFLAGS" \ --extra-ldflags="$X264_LDFLAGS" \ $ADDITIONAL_CONFIGURE_FLAG || exit 1 make clean make make install >cd ../.. build_armv7FFmpeg + iPhone
Всем доброго времени суток.
Кто делал конвертацию видео для стриминга на мобильные устройства — не подскажете работающую строку для ffmpeg-а? В интернете полно вариантов — но все они отличаются, и какой из них реально работает — не знаю.
Конечная цель — получить один файл, который можно будет смотреть и на iPhone, и на iPad без сильных потерь качества.- Вопрос задан более трёх лет назад
- 5293 просмотра
Комментировать
Решения вопроса 0
Ответы на вопрос 3ffmpeg -i file1.avi -vcodec libx264 -vpre libx264-ipod640 -b 500k -bt 500k -acodec libfaac -ab 96k -ac 2 -s 800×480 -threads 8 -g 24 -r 24 out.mp4
и мету вперед
qt-faststart out.mp4 outq.mp4
либо
mp4box -add out.mp4 outq.mp4Ответ написан более трёх лет назад
Нравится 9 5 комментариев
AusTiN @AusTiN Автор вопроса
Пробую! Спасибо. Отпишусь, как закончится конвертация:)
AusTiN @AusTiN Автор вопроса
Взлетело, спасибо 🙂 Но качество хотелось бы повыше — видны артефакты на изображении…
500k увеличивайте до приемливого для себяА универсальный способ вогнать субтитры еще не придумали? Конвертация srt/ass очень часто валится с ошибкой.
А как вогнать? Наложить на видео поверх чтоли? Мне кажется в этом мало смысла, лучше плеер поискать который отдельный srt файл применит.
Никто вам не напишет хорошей строки, потому, что половина человек не знает, что значит какая опция, другая половина слушает MP3 в 192 Кб/с и смотрит фильмы с любительской озвучкой или русскими субтитрами и ее это устраивает.
И вы будете на хорошем высокодетальном экране смотреть на джипеговские квадратики. А бедный Стив Джобс — вертеться в гробу.
Единственный способ — узнать значение всех опций программы и сделать тесты с разным качеством и кодеками, после чего выбрать подходящее.
Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать
Кратко о себеЯ лично делаю так под айпад (ну не по новый), под айфон тоже должно быть хорошо видно, но не пробовал
ffmpeg -i $i.mkv -acodec aac -strict experimental -ab 128k -ac 2 -vcodec libx264 -b 1200k -s 1280×720 -r 30 -threads 0 $i.mp4Ответ написан более трёх лет назад
Нравится 1 2 комментария
AusTiN @AusTiN Автор вопроса
Почему используете экспериментальный кодек aac (а не libfaac, как рекомендует сам ffmpeg)?
Как на мой взгляд — чуть шустрее
Ваш ответ на вопросВойдите, чтобы написать ответ

- Linux
- +1 ещё
Что это такое и как защититься?
- 1 подписчик
- 2 часа назад
- 47 просмотров
Инструкция по установке и работе с программой FFMPEG на Windows
Программа FFMPEG предназначена для конвертирования видео и аудио файлов через специальные команды в командной строке Вашего компьютера/ноутбука, благодаря которым возможно самостоятельно:
1. Изменить формат и качество записи;
2. Изменить разрешение и битрейт для видео и аудио;
3. Нарезать фрагменты записи на отдельные записи;
4. Замедлить и ускорить воспроизведение видео и аудио;
5. Склеить видео и аудио в единый файл;
6. Удалить аудио из видео, а также извлечь аудио из видео.(Более подробную информацию см. в шаге №5).
С ЧЕГО НАЧАТЬ?
Шаг №1. Скачиваем программу на Windows
Для начала Вам необходимо перейти на официальный сайт разработчиков и скачать файл программы. Ссылка на скачивание программы: https://yadi.sk/d/_ybZxA8VN2pBmQ
Шаг №2. Установка программы
Этот шаг требует особого внимания, так как работа с FFMPEG происходит через командную строку, поэтому разберём по пунктам алгоритм установки FFMPEG:
1. Вы скачали архивный файл и Вам необходимо его открыть;
2. Открываем скачанный архивный файл и находим папку «bin», внутри которой располагается файл-приложение «ffmpeg.exe»;Примечание! Если у Вас нет архиватора для открытия файла, то можно скачать архиватор WinRar на официальном сайте разработчиков.
Ссылка на скачивание: https://winrar-pro-download.com

3. Извлекаем файл «ffmpeg.exe» в заранее созданную папку «ffmpeg» на корневом диске (как правило, это диск «C»);


4. Далее заходим в проводник (иконка «лупа») и находим «Мой компьютер». Нажимаем на него правой кнопкой мыши и выбираем «свойства», после чего появится следующее окно:


5. Нажимаем на «Дополнительные параметры системы» и заходим в «переменные среды»;

6. Находим в окошке «системные примененные» пункт «Path», нажимаем «изменить»;

7. В появившемся окне нажимаем на кнопку «создать» и указываем путь к файлу ffmpeg. Для этого переходим в папку с ffmpeg и кликаем на строчку, выделенную красным (см. на картинке), после чего нажмите сочетание клавиш Ctrl+C;


8. После того, как нажали клавишу «Создать» (1), вставляем скопированное в строку (2) и нажимаем на «Ок» (3).

Шаг №3. Запускаем программу
1) Если вы используете ОС Windows10, то вам достаточно нажать на значок «поиск»(лупа) и ввести английскими буквами «cmd»:

(Прим. Если же Вы используете более ранние версии Windows (7,8), то Вам нужно зайти в меню «пуск» и строка «поиск» будет в самом низу).
2) Далее, заходим в командную строку и проверяем – работает ли программа. Для этого вводим: ffmpeg, после чего нажимаем кнопку Enter. Если Вы всё сделали правильно, у Вас будет примерно следующий отклик в командной строке:

(Прим. Если же у Вас появляются строки красного цвета, то вероятно – Вы сделали что-то не так. Попробуйте повторить алгоритм по новой).
Шаг №4. Используемые файлы
Для начала работы с видео-файлом необходимо, чтобы файл находился в директории доступных дисков. Например: имеется видео-файл «Testovii File.mp4». Я расположил его прямо на диск D.

Таким же образом разместите остальные файлы, с которыми вы собираетесь работать в ffmpeg.
Либо, если не хотите перетаскивать файл, вам нужно будет скопировать путь к файлу(об этом позже).
(Прим. Рекомендуется использовать английские буквы в названии файлов, с которыми собираетесь работать)
Теперь с файлами можно работать.
Запускаем командную строку. Как правило, по умолчанию в командной строке указан путь к корневой папке, например:

Чтобы начать обрабатывать файл, необходимо указать тот диск, где расположен нужный файл. В нашем случае, это Диск D. Для смены диска, в строке прописываем команду: D:
После чего нажимаем Enter и видим, что теперь у нас отображается Диск D:


Теперь мы можем начать работать с файлами. Любая команда начинается со слова ffmpeg в строке:

Далее будет представлен ряд простых команд, где input.mp4 – название исходного видео-файла; input.mp3 – название исходного аудио-файла; output.format – название полученного файла; а ключ «–i» -это то, что необходимо прописывать перед обрабатываемым файлом (input.mp4/input.mp3).
Шаг №5. Основные команды
1) Для того, чтобы перевести видео в другой видеоформат:
ffmpeg –i Z\input.avi output.mp4
(Прим. – Z\ — путь к файлу input.avi, пример: выбираем нужный файл в папке (1), кликаем на него, затем кликаем на строку с его расположение (2), и копируем правой кнопкой мышки; также следует помнить, что при попытке форматирования из более легкого файла(Mp4) в более тяжелый(avi) – полученный файл будет в более плохом качестве)
2) Для того, чтобы перевести видео в аудио:
ffmpeg –i Z\input.mp4 output.mp3
(Прим. – Если появляется красная строка при нажатии ENTER, то попробуйте поместить input.mp4 в Кавычки – «input.mp4»)
3) Для того, чтобы вырезать фрагмент из видео:
Способ : 1 – обрезать концовку.
ffmpeg -i input.mp4 –t 00:00:00 output.mp4
(Прим. -t 00:00:00 – указывается время продолжительности видео от начала)
Способ : 2 – вырезать кусок из любой точки.
ffmpeg -ss 00:00:00 -i input.mp4 -t 00:00:00 output.mp4
(Прим. –ss 00:00:00 – указывается время начала желаемого куска; -t 00:00:00 – указывается время продолжительности желаемого куска;
Если появляется красная строка, то попробуйте поместить input.mp4 в Кавычки – «input.mp4»)
P.S Применимо как к видео, так и к аудио файлам!
4) Команда для склеивания пустого видео файла и аудио файла:
ffmpeg -i input.mp3 -i input.mp4 output.mp4
(Прим. Если вы используете разные по длительности файлы, то у них вседа будет совпадать начало, а длительность конечного файла будет равна самому длинному исходному файлу, пример:
Аудиофайл.mp3 – длительность 00:05:00 + Видеофайл.mp4 – длительность 00:03:00 = финальный файл.mp4 – длительность 00:05:00)
5) Команда для удаления аудио из видео:
ffmpeg -i input.avi -vcodec copy –an output.avi
6) Команда для ускорения/замедления видео:
ffmpeg –i input.avi -vf setpts=X*PTS output.avi
(Прим. X больше 1 – замедление; X меньше 1 — ускорение)
7) Команда для ускорения/замедления аудио:
Ffmpeg –I input.mp3 -filter:a «atempo=X» –vn output.mp3
(Прим. X значение больше нуля – ускорение; X значение меньше нуля (0.5;0.8) – замедление)
8) Команда для ускорения/замедления файла с аудио и видео:
ffmpeg -i input.mp4 -filter_complex «[0:v]setpts=X*PTS[v];[0:a]atempo=Y[a]» -map «[v]» -map «[a]» output.mp4
(Прим. X больше 1 – замедление; X меньше 1 – ускорение;
Y значение больше нуля – ускорение; Y значение меньше нуля (0.5;0.8) – замедление)
9) Для того, чтобы изменить параметр «качество»:
ffmpeg -i input.avi -q X output.avi
(Прим. X от 23 до 50, где 50 – минимальное качество; данная опция помогает уменьшить размер файла)
ffmpeg -i input.mp4 -crf X output.mp4
10) Для того, чтобы изменить Битрейт:
Для аудио: ffmpeg -i input.mp4 -b:a 128k output.mp4
(Прим. Где 128k– цифра, обозначающая размер битрейта)
Для видео: ffmpeg -i input.mp4″ -b:v 1000k output.mp4
11) Для того, чтобы изменить разрешение видео:
ffmpeg -i input.mp4 -s X output.mp4
(Прим. X – разрешение, например: «-s 800×600»)
Для общего сжатия видео:
13) ffmpeg -i input.mp4 -codec:a copy -vcodec libx264 -preset fast -crf 32 output.mp4
В этой статье были рассмотрены:
— Способ установки ffmpeg для Windows
— Была представлена выжимка из самых распространённых команд, которая позволит использовать программу «ffmpeg» для решения, пусть не самых сложных, но всё-же возникающих задач.
Команды в программе ffmpeg не ограничиваются тем списком, что был представлен в данной статье. Как было сказано выше, в интернете существует более 200 страниц со всевозможными командами, призванными проводить манипуляции с видео\аудио-файлами, которыми, как правило, пользуются продвинутые пользователи.
Мы же предоставили краткий мануал по основным возможностям, и надеемся, что этот материал окажется полезным для наших пользователей!