
Recherche avancée
Médias (1)
-
Collections - Formulaire de création rapide
19 février 2013, par
Mis à jour : Février 2013
Langue : français
Type : Image
Autres articles (78)
-
MediaSPIP v0.2
21 juin 2013, parMediaSPIP 0.2 est la première version de MediaSPIP stable.
Sa date de sortie officielle est le 21 juin 2013 et est annoncée ici.
Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
Comme pour la version précédente, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...) -
Organiser par catégorie
17 mai 2013, parDans MédiaSPIP, une rubrique a 2 noms : catégorie et rubrique.
Les différents documents stockés dans MédiaSPIP peuvent être rangés dans différentes catégories. On peut créer une catégorie en cliquant sur "publier une catégorie" dans le menu publier en haut à droite ( après authentification ). Une catégorie peut être rangée dans une autre catégorie aussi ce qui fait qu’on peut construire une arborescence de catégories.
Lors de la publication prochaine d’un document, la nouvelle catégorie créée sera proposée (...) -
Récupération d’informations sur le site maître à l’installation d’une instance
26 novembre 2010, parUtilité
Sur le site principal, une instance de mutualisation est définie par plusieurs choses : Les données dans la table spip_mutus ; Son logo ; Son auteur principal (id_admin dans la table spip_mutus correspondant à un id_auteur de la table spip_auteurs)qui sera le seul à pouvoir créer définitivement l’instance de mutualisation ;
Il peut donc être tout à fait judicieux de vouloir récupérer certaines de ces informations afin de compléter l’installation d’une instance pour, par exemple : récupérer le (...)
Sur d’autres sites (6130)
-
Revision 34710 : Amélioration de la fonction d’installation ... très chouette en SPIP 2.1 ...
24 janvier 2010, par kent1@… — LogAmélioration de la fonction d’installation ... très chouette en SPIP 2.1 (bis ...)
-
ffmpeg undefined reference to sws_getContext
23 septembre 2021, par Wenfei ZhuI am learning to use ffmpeg libraries, and have successfully compiled and run a program that demuxes and decodes a video. However, when I was trying to use the swscale library, I got a linking error "undefined reference to sws_getContext". There are similar problems on the Internet but none of them solves my problem.


The full error message is


/usr/bin/ld: CMakeFiles/ffmpeg_test.dir/main.cpp.o: in function `main':
main.cpp:(.text+0x44f): undefined reference to `sws_getContext'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/ffmpeg_test.dir/build.make:93: ffmpeg_test] Error 1
make[1]: *** [CMakeFiles/Makefile2:76: CMakeFiles/ffmpeg_test.dir/all] Error 2
make: *** [Makefile:84: all] Error 2



Here is my Dockerfile, source file and CMakeList.


# FFMPEG Image
# ref:https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu

FROM ubuntu:20.04

ARG http_proxy=''
ARG https_proxy=''
ENV HTTP_PROXY=${http_proxy}
ENV HTTPS_PROXY=${https_proxy}

RUN apt-get update \
 && DEBIAN_FRONTEND="noninteractive" \
 apt-get install -y --no-install-recommends \
 autoconf \
 automake \
 build-essential \
 cmake \
 git \
 libass-dev \
 libfreetype6-dev \
 libgnutls28-dev \
 # libsdl2-dev \
 libtool \
 # libva-dev \
 # libvdpau-dev \
 libvorbis-dev \
 # libxcb1-dev \
 # libxcb-shm0-dev \
 # libxcb-xfixes0-dev \
 meson \
 ninja-build \
 pkg-config \
 texinfo \
 wget \
 yasm \
 zlib1g-dev \
 libunistring-dev \
 python3.8-dev \
 ca-certificates

ARG FFMPEG_ROOT=/root/ffmpeg
RUN mkdir ${FFMPEG_ROOT}
WORKDIR ${FFMPEG_ROOT}

RUN mkdir sources && mkdir build && mkdir bin

# NASM
RUN cd sources \
 && wget https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.bz2 \
 && tar xjvf nasm-2.15.05.tar.bz2 \
 && cd nasm-2.15.05 \
 && ./autogen.sh \
 && PATH="${FFMPEG_ROOT}/bin:$PATH" \
 ./configure \
 --prefix="${FFMPEG_ROOT}/build" \
 --bindir="${FFMPEG_ROOT}/bin" \
 --enable-shared \
 --enable-pic \
 && make -j$(nproc) \
 && make install

# H.264 video encoder (GPL License!!! --enable-gpl --enable-libx264)
RUN cd sources \
 && git -C x264 pull 2> /dev/null || git clone --depth 1 https://code.videolan.org/videolan/x264.git \
 && cd x264 \
 && PATH="${FFMPEG_ROOT}/bin:$PATH" \
 PKG_CONFIG_PATH="${FFMPEG_ROOT}/build/lib/pkgconfig" \
 ./configure \
 --prefix="${FFMPEG_ROOT}/build" \
 --bindir="${FFMPEG_ROOT}/bin" \
 --enable-shared \
 --enable-pic \
 --disable-cli \
 && PATH="${FFMPEG_ROOT}/bin:$PATH" make -j$(nproc) \
 && make install

# H.265/HEVC video encoder (GPL License!!! --enable-gpl --enable-libx265)
RUN apt-get install -y --no-install-recommends libnuma-dev \
 && cd sources \
 && git -C x265_git pull 2> /dev/null || git clone https://bitbucket.org/multicoreware/x265_git \
 && cd x265_git/build/linux \
 && PATH="${FFMPEG_ROOT}/bin:$PATH" \
 cmake \
 -G "Unix Makefiles" \
 -DCMAKE_INSTALL_PREFIX="${FFMPEG_ROOT}/build" \
 -DENABLE_SHARED=on \
 -DENABLE_CLI=off \
 ../../source \
 && PATH="${FFMPEG_ROOT}/bin:$PATH" make -j$(nproc) \
 && make install

# VP8/VP9 video encoder/decoder (--enable-libvpx)
RUN cd sources \
 && git -C libvpx pull 2> /dev/null || git clone --depth 1 https://chromium.googlesource.com/webm/libvpx.git \
 && cd libvpx \
 && PATH="${FFMPEG_ROOT}/bin:$PATH" \
 ./configure \
 --prefix="${FFMPEG_ROOT}/build" \
 --disable-debug \
 --disable-examples \
 --disable-docs \
 --disable-unit-tests \
 --enable-vp9-highbitdepth \
 --as=yasm \
 --enable-pic \
 --enable-shared \
 && PATH="${FFMPEG_ROOT}/bin:$PATH" make -j$(nproc) \
 && make install

# # AAC audio encoder (NON-FREE!!! --enable-gpl --enable-nonfree --enable-libfdk-aac)
# RUN cd sources \
# && git -C fdk-aac pull 2> /dev/null || git clone --depth 1 https://github.com/mstorsjo/fdk-aac \
# && cd fdk-aac \
# && autoreconf -fiv \
# && ./configure \
# --prefix="${FFMPEG_ROOT}/build" \
# --disable-shared \
# && make -j$(nproc) \
# && make install

# MP3 audio encoder (--enable-libmp3lame)
RUN cd sources \
 && wget -O lame-3.100.tar.gz https://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz \
 && tar xzvf lame-3.100.tar.gz \
 && cd lame-3.100 \
 && PATH="${FFMPEG_ROOT}/bin:$PATH" \
 ./configure \
 --prefix="${FFMPEG_ROOT}/build" \
 --bindir="${FFMPEG_ROOT}/bin" \
 --enable-shared \
 --enable-pic \
 --enable-nasm \
 && PATH="${FFMPEG_ROOT}/bin:$PATH" make -j$(nproc) \
 && make install

# Opus audio decoder and encoder (--enable-libopus)
RUN cd sources \
 && git -C opus pull 2> /dev/null || git clone --depth 1 https://github.com/xiph/opus.git \
 && cd opus \
 && ./autogen.sh \
 && ./configure \
 --prefix="${FFMPEG_ROOT}/build" \
 --enable-shared \
 && make -j$(nproc) \
 && make install

# AV1 video encoder/decoder
# encoder (--enable-libsvtav1)
RUN cd sources \
 && git -C SVT-AV1 pull 2> /dev/null || git clone https://gitlab.com/AOMediaCodec/SVT-AV1.git \
 && mkdir -p SVT-AV1/build \
 && cd SVT-AV1/build \
 && PATH="${FFMPEG_ROOT}/bin:$PATH" \
 cmake \
 -G "Unix Makefiles" \
 -DCMAKE_INSTALL_PREFIX="${FFMPEG_ROOT}/build" \
 -DCMAKE_BUILD_TYPE=Release \
 -DBUILD_DEC=OFF \
 -DBUILD_SHARED_LIBS=ON \
 .. \
 && PATH="${FFMPEG_ROOT}/bin:$PATH" make -j$(nproc)\
 && make install
# decoder (--enable-libdav1d)
RUN cd sources \
 && git -C dav1d pull 2> /dev/null || git clone --depth 1 https://code.videolan.org/videolan/dav1d.git \
 && mkdir -p dav1d/build \
 && cd dav1d/build \
 && PATH="${FFMPEG_ROOT}/bin:$PATH" \
 meson setup \
 -Denable_tools=false \
 -Denable_tests=false \
 --default-library=shared \
 .. \
 --prefix="${FFMPEG_ROOT}/build" \
 --libdir="${FFMPEG_ROOT}/build/lib" \
 && ninja -j$(nproc) \
 && ninja install

# Library for calculating the VMAF video quality metric (--enable-libvmaf --ld="g++")
RUN cd sources \
 && wget https://github.com/Netflix/vmaf/archive/v2.1.1.tar.gz \
 && tar xvf v2.1.1.tar.gz \
 && mkdir -p vmaf-2.1.1/libvmaf/build \
 && cd vmaf-2.1.1/libvmaf/build \
 && PATH="${FFMPEG_ROOT}/bin:$PATH" \
 meson setup \
 -Denable_tests=false \
 -Denable_docs=false \
 --buildtype=release \
 --default-library=shared \
 .. \
 --prefix "${FFMPEG_ROOT}/build" \
 --bindir="${FFMPEG_ROOT}/build/bin" \
 --libdir="${FFMPEG_ROOT}/build/lib" \
 && ninja -j$(nproc) \
 && ninja install

# FFMPEG
RUN cd sources \
 && wget -O ffmpeg-snapshot.tar.bz2 https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 \
 && tar xjvf ffmpeg-snapshot.tar.bz2 \
 && cd ffmpeg \
 && PATH="${FFMPEG_ROOT}/bin:$PATH" \
 PKG_CONFIG_PATH="${FFMPEG_ROOT}/build/lib/pkgconfig" \
 ./configure \
 --prefix="${FFMPEG_ROOT}/build" \
 --pkg-config-flags="--static" \
 --extra-cflags="-I${FFMPEG_ROOT}/build/include" \
 --extra-ldflags="-L${FFMPEG_ROOT}/build/lib" \
 --extra-libs="-lpthread -lm" \
 --ld="g++" \
 --bindir="${FFMPEG_ROOT}/bin" \
 --disable-debug \
 --disable-doc \
 --disable-ffplay \
 --enable-shared \
 --enable-pic \
 --enable-gpl \
 --enable-gnutls \
 # --enable-libaom \
 --enable-libass \
 # --enable-libfdk-aac \
 --enable-libfreetype \
 --enable-libmp3lame \
 --enable-libopus \
 --enable-libsvtav1 \
 --enable-libdav1d \
 --enable-libvorbis \
 --enable-libvpx \
 --enable-libx264 \
 --enable-libx265 \
 # --enable-nonfree \
 && PATH="${FFMPEG_ROOT}/bin:$PATH" make -j$(nproc) \
 && make install \
 && hash -r

# opencv
RUN apt-get update \
 & apt-get install -y --no-install-recommends libopencv-dev




#include <iostream>

extern "C" {
#include <libavutil></libavutil>avutil.h>
#include <libavcodec></libavcodec>avcodec.h>
#include <libavformat></libavformat>avformat.h>
#include <libswscale></libswscale>swscale.h>
}

#include <opencv2></opencv2>core.hpp>

// fix c++ av_err2str problem
// ref: https://github.com/joncampbell123/composite-video-simulator/issues/5
#ifdef av_err2str
#undef av_err2str
#include <string>
av_always_inline std::string av_err2string(int errnum) {
 char str[AV_ERROR_MAX_STRING_SIZE];
 return av_make_error_string(str, AV_ERROR_MAX_STRING_SIZE, errnum);
}
#define av_err2str(err) av_err2string(err).c_str()
#endif // av_err2str


static int decode_packet(AVPacket *, AVCodecContext *, AVFrame *, AVStream *);


int main(int argc, const char *argv[]) {
 std::cout << "hello world" << std::endl;
 AVFormatContext *pFormatContext = avformat_alloc_context();

 if (avformat_open_input(&pFormatContext, argv[1], NULL, NULL) != 0) {
 std::cout << "ERROR could not open the file\n";
 return -1;
 }

 printf("File format %s, duration %.2fs, bit_rate %ld\n", pFormatContext->iformat->long_name, pFormatContext->duration / 1e6, pFormatContext->bit_rate);

 if (avformat_find_stream_info(pFormatContext, NULL) < 0) {
 std::cout << "ERROR could not get the stream info\n";
 return -1;
 }

 int video_stream_index = -1;

 printf("Number of streams %d\n", pFormatContext->nb_streams);

 AVCodecParameters *pVideoCodecParameters;
 const AVCodec *pVideoCodec;
 AVStream *pVideoStream;

 for (int i = 0; i < pFormatContext->nb_streams; i++)
 {
 AVCodecParameters *pLocalCodecParameters = pFormatContext->streams[i]->codecpar;
 const AVCodec *pLocalCodec = NULL;
 pLocalCodec = avcodec_find_decoder(pLocalCodecParameters->codec_id);

 // print its name and bitrate
 printf("Codec %s, bit_rate %ld\n", pLocalCodec->long_name, pLocalCodecParameters->bit_rate);

 if (pLocalCodecParameters->codec_type == AVMEDIA_TYPE_VIDEO) {
 if (video_stream_index == -1) {
 video_stream_index = i;
 pVideoCodecParameters = pLocalCodecParameters;
 pVideoCodec = pLocalCodec;
 }
 pVideoStream = pFormatContext->streams[i];
 AVRational *fps = &pVideoStream->avg_frame_rate;
 AVRational *rfps = &pVideoStream->r_frame_rate;
 AVRational *time_base = &pVideoStream->time_base;
 printf("Video Codec: resolution %d x %d, fps %d/%d, frames %ld, time base %d/%d, rfps %d/%d\n", 
 pLocalCodecParameters->width, pLocalCodecParameters->height, 
 fps->num, fps->den, pVideoStream->nb_frames, time_base->num, time_base->den,
 rfps->num, rfps->den);
 } else if (pLocalCodecParameters->codec_type == AVMEDIA_TYPE_AUDIO) {
 printf("Audio Codec: %d channels, sample rate %d\n", pLocalCodecParameters->channels, pLocalCodecParameters->sample_rate);
 }
 
 if (pLocalCodec==NULL) {
 printf("ERROR unsupported codec!\n");
 // In this example if the codec is not found we just skip it
 continue;
 }
 }

 if (video_stream_index == -1) {
 printf("File %s does not contain a video stream!\n", argv[1]);
 return -1;
 }

 AVCodecContext *pCodecContext = avcodec_alloc_context3(pVideoCodec);
 if (!pCodecContext)
 {
 printf("failed to allocated memory for AVCodecContext\n");
 return -1;
 }

 if (avcodec_parameters_to_context(pCodecContext, pVideoCodecParameters) < 0)
 {
 printf("failed to copy codec params to codec context\n");
 return -1;
 }

 if (avcodec_open2(pCodecContext, pVideoCodec, NULL) < 0)
 {
 printf("failed to open codec through avcodec_open2\n");
 return -1;
 }

 // https://ffmpeg.org/doxygen/trunk/structAVPacket.html
 AVPacket *pPacket = av_packet_alloc();
 if (!pPacket)
 {
 printf("failed to allocated memory for AVPacket\n");
 return -1;
 }
 
 // https://ffmpeg.org/doxygen/trunk/structAVFrame.html
 AVFrame *pFrame = av_frame_alloc();
 if (!pFrame)
 {
 printf("failed to allocated memory for AVFrame\n");
 return -1;
 }

 SwsContext *pImgConvertContext = sws_getContext(
 pCodecContext->width,
 pCodecContext->height,
 pCodecContext->pix_fmt,
 pCodecContext->width,
 pCodecContext->height,
 AV_PIX_FMT_BGR24,
 SWS_BICUBIC,
 NULL,
 NULL,
 NULL
 );

 int response = 0;
 int how_many_packets_to_process = 8;

 // fill the Packet with data from the Stream
 // https://ffmpeg.org/doxygen/trunk/group__lavf__decoding.html#ga4fdb3084415a82e3810de6ee60e46a61
 while (av_read_frame(pFormatContext, pPacket) >= 0)
 {
 // if it's the video stream
 if (pPacket->stream_index == video_stream_index) {
 printf("AVPacket->pts %" PRId64, pPacket->pts);
 std::cout << std::endl;
 response = decode_packet(pPacket, pCodecContext, pFrame, pVideoStream);
 if (response < 0)
 break;
 // stop it, otherwise we'll be saving hundreds of frames
 if (--how_many_packets_to_process <= 0) break;
 }
 // https://ffmpeg.org/doxygen/trunk/group__lavc__packet.html#ga63d5a489b419bd5d45cfd09091cbcbc2
 av_packet_unref(pPacket);
 }

 avformat_close_input(&pFormatContext);
 av_packet_free(&pPacket);
 av_frame_free(&pFrame);
 avcodec_free_context(&pCodecContext);

 std::cout << "bye world" << std::endl;
 return 0;
}

static int decode_packet(AVPacket *pPacket, AVCodecContext *pCodecContext, AVFrame *pFrame, AVStream *pStream)
{
 // Supply raw packet data as input to a decoder
 // https://ffmpeg.org/doxygen/trunk/group__lavc__decoding.html#ga58bc4bf1e0ac59e27362597e467efff3
 int response = avcodec_send_packet(pCodecContext, pPacket);
 // printf("response %d\n", response);

 if (response < 0) {
 printf("Error while sending a packet to the decoder: %s\n", av_err2str(response));
 return response;
 }

 while (response >= 0)
 {
 // Return decoded output data (into a frame) from a decoder
 // https://ffmpeg.org/doxygen/trunk/group__lavc__decoding.html#ga11e6542c4e66d3028668788a1a74217c
 response = avcodec_receive_frame(pCodecContext, pFrame);
 if (response == AVERROR(EAGAIN) || response == AVERROR_EOF) {
 break;
 } else if (response < 0) {
 printf("Error while receiving a frame from the decoder: %s\n", av_err2str(response));
 return response;
 }

 if (response >= 0) {
 float time_base = pStream->time_base.num / float(pStream->time_base.den);
 printf(
 "Frame %d (type=%c, size=%d bytes, format=%d) pts %ld timestampe %.2f key_frame %d [DTS %d]\n",
 pCodecContext->frame_number,
 av_get_picture_type_char(pFrame->pict_type),
 pFrame->pkt_size,
 pFrame->format,
 pFrame->pts,
 pFrame->pts * time_base,
 pFrame->key_frame,
 pFrame->coded_picture_number
 );

 // char frame_filename[1024];
 // snprintf(frame_filename, sizeof(frame_filename), "%s-%d.pgm", "frame", pCodecContext->frame_number);
 // Check if the frame is a planar YUV 4:2:0, 12bpp
 // That is the format of the provided .mp4 file
 // RGB formats will definitely not give a gray image
 // Other YUV image may do so, but untested, so give a warning
 // if (pFrame->format != AV_PIX_FMT_YUV420P)
 // {
 // printf("Warning: the generated file may not be a grayscale image, but could e.g. be just the R component if the video format is RGB");
 // }
 // save a grayscale frame into a .pgm file
 // save_gray_frame(pFrame->data[0], pFrame->linesize[0], pFrame->width, pFrame->height, frame_filename);
 }
 }
 return 0;
}
</string></iostream>


cmake_minimum_required(VERSION 3.10)

# set the project name
project(ffmpeg_test)

# specify the C++ standard
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)

# add the executable
add_executable(ffmpeg_test main.cpp)

# link ffmpeg
set(FFMPEG_ROOT "/root/ffmpeg/build")

target_include_directories(ffmpeg_test PUBLIC "${FFMPEG_ROOT}/include")
target_link_libraries(ffmpeg_test 
 "${FFMPEG_ROOT}/lib/libavutil.so"
 "${FFMPEG_ROOT}/lib/libpostproc.so"
 "${FFMPEG_ROOT}/lib/libswresample.so"
 "${FFMPEG_ROOT}/lib/libswscale.so"
 "${FFMPEG_ROOT}/lib/libavfilter.so"
 "${FFMPEG_ROOT}/lib/libavdevice.so"
 "${FFMPEG_ROOT}/lib/libavformat.so"
 "${FFMPEG_ROOT}/lib/libavcodec.so"
)

# link opencv
target_include_directories(ffmpeg_test PUBLIC "/usr/include/opencv4")
target_link_libraries(ffmpeg_test 
 "/usr/lib/x86_64-linux-gnu/libopencv_core.so"
)
# find_library(OpenCV REQUIRED)
# message(STATUS ${OpenCV_VERSION})
# message(STATUS ${OpenCV_LIBS})
# message(STATUS ${OpenCV_INCLUDE_DIRS})




-
Generating video from images and audio by FFmpeg
24 mars 2020, par CodyI am new to FFmpeg and video/audio encoding. I try to use Fluent ffmpeg to generate a MP4 video from images and audio.
There are 2 inputs only :
- JPG images with filename NOT in numbering sequence (e.g. foo.jpg, bar.jpg)
- .wav audio
If the audio duration is longer video length, just discard the excessive part of audio at the end.
And all the images have to be shown in same duration.(i.e. The video should be inn/d
FPS forn
images and video withd
second)Since the image input are not in number sequence, I use concat demuxer as input :
let VIDEO_DURATION = 8;
let ffmpeg = await FfmpegUtil.createCommand();
let imageFiles: string[] = ["foo.jpg", "bar.jpg", ...]; //assume there are 67 image files
let demuxerFile = await FfmpegUtil.createConcatDemuxerFile(imageFiles);
let audioFile: string = "path/to/audio.wav";
ffmpeg.input(demuxerFile)
.inputOption(
"-f", "concat",
"-safe", "0",
)
.input(audioFile)
.outputOption(
"-r", `${imageFiles.length}/${VIDEO_DURATION}`,
)
.duration(VIDEO_DURATION)
.save("path/to/output.mp4")
;it will spawn a ffmpeg command :
ffmpeg
-f concat
-safe 0
-i path/to/demuxerFile.txt
-i path/to/audio.wav
-y
-r 67/8
-t 8
path/to/output.mp4However the output file cannot be played.
I also tried
"-framerate", ${imageFiles.length}/${VIDEO_DURATION}
in.outputOption()
, it still output a file cannot be played and I found the frame rate always be 25 in its file property.Update 1 (added spawned command & ffmpeg console log) :
spawned ffmpeg command & console log (
"-r", `${imageFiles.length}/${VIDEO_DURATION}`
asoutputOption
) :ffmpeg -f concat -safe 0 -i path/to/demuxerFile.txt -i path/to/audio.wav -y -r 67/8 -t 8 path/to/output_r.mp4
ffmpeg version git-2020-01-26-5e62100 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 9.2.1 (GCC) 20200122
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
libavutil 56. 38.100 / 56. 38.100
libavcodec 58. 67.100 / 58. 67.100
libavformat 58. 36.100 / 58. 36.100
libavdevice 58. 9.103 / 58. 9.103
libavfilter 7. 71.100 / 7. 71.100
libswscale 5. 6.100 / 5. 6.100
libswresample 3. 6.100 / 3. 6.100
libpostproc 55. 6.100 / 55. 6.100
Input #0, concat, from 'path/to/demuxerFile.txt':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: mjpeg (Baseline), yuvj444p(pc, bt470bg/unknown/unknown), 4677x4677 [SAR 256:256 DAR 1:1], 25 tbr, 25 tbn, 25 tbc
Guessed Channel Layout for Input Stream #1.0 : stereo
Input #1, wav, from 'path/to/audio.wav':
Metadata:
artist : TextAloud: IVONA Kimberly22
date : 2018
genre : Speech
title : 38750336.mp3
album : Created: 7/26/2018 4:56:13 PM
encoder : Lavf58.16.100
encoded_by : Lame MP3
Duration: 00:00:15.57, bitrate: 705 kb/s
Stream #1:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 22050 Hz, stereo, s16, 705 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (libx264))
Stream #1:0 -> #0:1 (pcm_s16le (native) -> aac (native))
Press [q] to stop, [?] for help
[libx264 @ 000001e395041400] using SAR=1/1
[libx264 @ 000001e395041400] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 000001e395041400] profile High 4:4:4 Predictive, level 6.0, 4:4:4, 8-bit
[libx264 @ 000001e395041400] 264 - core 159 - H.264/MPEG-4 AVC codec - Copyleft 2003-2019 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=4 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=8 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'path/to/output_r.mp4':
Metadata:
encoder : Lavf58.36.100
Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuvj444p(pc, progressive), 4677x4677 [SAR 256:256 DAR 1:1], q=-1--1, 8.38 fps, 17152 tbn, 8.38 tbc
Metadata:
encoder : Lavc58.67.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, stereo, fltp, 128 kb/s
Metadata:
encoder : Lavc58.67.100 aac
frame= 3 fps=0.0 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 5 fps=4.2 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A dup=0 drop=4 speed= 0x
frame= 6 fps=3.4 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A dup=0 drop=7 speed= 0x
frame= 8 fps=3.4 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A dup=0 drop=10 speed= 0x
frame= 10 fps=3.5 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A dup=0 drop=14 speed= 0x
frame= 11 fps=3.2 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A dup=0 drop=16 speed= 0x
frame= 13 fps=3.2 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A dup=0 drop=20 speed= 0x
frame= 14 fps=3.0 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A dup=0 drop=22 speed= 0x
frame= 16 fps=3.1 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A dup=0 drop=26 speed= 0x
frame= 17 fps=2.9 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A dup=0 drop=28 speed= 0x
frame= 18 fps=2.8 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A dup=0 drop=31 speed= 0x
frame= 20 fps=2.9 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A dup=0 drop=34 speed= 0x
frame= 21 fps=2.8 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A dup=0 drop=36 speed= 0x
frame= 23 fps=2.9 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A dup=0 drop=40 speed= 0x
frame= 24 fps=2.8 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A dup=0 drop=42 speed= 0x
frame= 24 fps=0.7 q=-1.0 Lsize= 752kB time=00:00:08.03 bitrate= 766.4kbits/s dup=0 drop=43 speed=0.22x
video:624kB audio:125kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.359236%
[libx264 @ 000001e395041400] frame I:1 Avg QP:12.79 size:257554
[libx264 @ 000001e395041400] frame P:15 Avg QP:13.10 size: 20487
[libx264 @ 000001e395041400] frame B:8 Avg QP:13.10 size: 9231
[libx264 @ 000001e395041400] consecutive B-frames: 45.8% 25.0% 12.5% 16.7%
[libx264 @ 000001e395041400] mb I I16..4: 18.4% 79.2% 2.4%
[libx264 @ 000001e395041400] mb P I16..4: 1.0% 3.3% 0.4% P16..4: 1.0% 0.2% 0.2% 0.0% 0.0% skip:93.9%
[libx264 @ 000001e395041400] mb B I16..4: 0.1% 0.2% 0.1% B16..8: 1.8% 0.1% 0.0% direct: 2.9% skip:94.7% L0:58.1% L1:40.2% BI: 1.7%
[libx264 @ 000001e395041400] 8x8 transform intra:75.0% inter:82.7%
[libx264 @ 000001e395041400] coded y,u,v intra: 6.1% 3.5% 4.4% inter: 0.2% 1.2% 0.5%
[libx264 @ 000001e395041400] i16 v,h,dc,p: 80% 16% 3% 2%
[libx264 @ 000001e395041400] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 46% 8% 44% 0% 0% 0% 0% 0% 0%
[libx264 @ 000001e395041400] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 27% 25% 3% 3% 3% 4% 3% 3%
[libx264 @ 000001e395041400] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 000001e395041400] ref P L0: 75.6% 3.3% 14.8% 6.3%
[libx264 @ 000001e395041400] ref B L0: 88.6% 10.7% 0.7%
[libx264 @ 000001e395041400] ref B L1: 98.7% 1.3%
[libx264 @ 000001e395041400] kb/s:1783.06
[aac @ 000001e3951e7f80] Qavg: 55135.730spawned ffmpeg command & console log (
"-framerate", `${imageFiles.length}/${VIDEO_DURATION}`
asoutputOption
) :ffmpeg -f concat -safe 0 -i path/to/demuxerFile.txt -i path/to/audio.wav -y -framerate 67/8 -t 8 path/to/output_framerate.mp4
ffmpeg version git-2020-01-26-5e62100 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 9.2.1 (GCC) 20200122
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
libavutil 56. 38.100 / 56. 38.100
libavcodec 58. 67.100 / 58. 67.100
libavformat 58. 36.100 / 58. 36.100
libavdevice 58. 9.103 / 58. 9.103
libavfilter 7. 71.100 / 7. 71.100
libswscale 5. 6.100 / 5. 6.100
libswresample 3. 6.100 / 3. 6.100
libpostproc 55. 6.100 / 55. 6.100
Input #0, concat, from 'path/to/demuxerFile.txt':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: mjpeg (Baseline), yuvj444p(pc, bt470bg/unknown/unknown), 4677x4677 [SAR 256:256 DAR 1:1], 25 tbr, 25 tbn, 25 tbc
Guessed Channel Layout for Input Stream #1.0 : stereo
Input #1, wav, from 'path/to/audio.wav':
Metadata:
artist : TextAloud: IVONA Kimberly22
date : 2018
genre : Speech
title : 38750336.mp3
album : Created: 7/26/2018 4:56:13 PM
encoder : Lavf58.16.100
encoded_by : Lame MP3
Duration: 00:00:15.57, bitrate: 705 kb/s
Stream #1:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 22050 Hz, stereo, s16, 705 kb/s
Stream mapping:
Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (libx264))
Stream #1:0 -> #0:1 (pcm_s16le (native) -> aac (native))
Press [q] to stop, [?] for help
[libx264 @ 000002460bda4740] using SAR=1/1
[libx264 @ 000002460bda4740] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 000002460bda4740] profile High 4:4:4 Predictive, level 6.0, 4:4:4, 8-bit
[libx264 @ 000002460bda4740] 264 - core 159 - H.264/MPEG-4 AVC codec - Copyleft 2003-2019 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=4 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'path/to/output_framerate.mp4':
Metadata:
encoder : Lavf58.36.100
Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuvj444p(pc, progressive), 4677x4677 [SAR 256:256 DAR 1:1], q=-1--1, 25 fps, 12800 tbn, 25 tbc
Metadata:
encoder : Lavc58.67.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, stereo, fltp, 128 kb/s
Metadata:
encoder : Lavc58.67.100 aac
frame= 3 fps=0.0 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 6 fps=5.0 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 9 fps=5.0 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 12 fps=5.0 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 14 fps=4.6 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 16 fps=4.4 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 18 fps=3.9 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 20 fps=3.9 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 22 fps=3.8 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 23 fps=3.6 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 25 fps=3.6 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 27 fps=3.3 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 28 fps=3.1 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 30 fps=3.1 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 33 fps=3.2 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 36 fps=3.3 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 38 fps=3.1 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 39 fps=3.0 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 40 fps=2.6 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 41 fps=2.4 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 42 fps=2.0 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 43 fps=1.9 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 44 fps=1.9 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 45 fps=1.8 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 46 fps=1.8 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 47 fps=1.4 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 49 fps=1.5 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 50 fps=1.5 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 51 fps=1.5 q=28.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 51 fps=1.3 q=28.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x
frame= 52 fps=1.3 q=28.0 size= 0kB time=00:00:00.04 bitrate= 8.3kbits/s speed=0.00114x
frame= 53 fps=1.3 q=28.0 size= 0kB time=00:00:00.04 bitrate= 8.3kbits/s speed=0.00111x
frame= 54 fps=1.2 q=28.0 size= 0kB time=00:00:00.04 bitrate= 8.3kbits/s speed=0.00101x
frame= 55 fps=1.2 q=28.0 size= 0kB time=00:00:00.13 bitrate= 2.8kbits/s speed=0.00297x
frame= 56 fps=1.1 q=28.0 size= 0kB time=00:00:00.18 bitrate= 2.1kbits/s speed=0.00377x
frame= 57 fps=1.1 q=28.0 size= 256kB time=00:00:00.23 bitrate=9033.3kbits/s speed=0.00461x
frame= 58 fps=1.1 q=28.0 size= 256kB time=00:00:00.27 bitrate=7527.8kbits/s speed=0.00514x
frame= 59 fps=1.0 q=28.0 size= 256kB time=00:00:00.32 bitrate=6452.4kbits/s speed=0.00571x
frame= 60 fps=1.0 q=28.0 size= 256kB time=00:00:00.37 bitrate=5645.8kbits/s speed=0.00643x
frame= 62 fps=1.0 q=28.0 size= 256kB time=00:00:00.37 bitrate=5645.8kbits/s speed=0.00605x
frame= 62 fps=1.0 q=28.0 size= 256kB time=00:00:00.41 bitrate=5018.5kbits/s speed=0.00668x
frame= 63 fps=1.0 q=28.0 size= 256kB time=00:00:00.46 bitrate=4516.7kbits/s speed=0.00727x
frame= 64 fps=1.0 q=28.0 size= 256kB time=00:00:00.51 bitrate=4106.1kbits/s speed=0.00778x
frame= 65 fps=1.0 q=28.0 size= 256kB time=00:00:00.55 bitrate=3763.9kbits/s speed=0.00827x
frame= 66 fps=1.0 q=28.0 size= 256kB time=00:00:00.60 bitrate=3474.4kbits/s speed=0.00884x
frame= 67 fps=1.0 q=28.0 size= 256kB time=00:00:00.65 bitrate=3226.2kbits/s speed=0.00943x
frame= 67 fps=0.6 q=-1.0 Lsize= 872kB time=00:00:08.03 bitrate= 888.9kbits/s speed=0.0752x
video:744kB audio:125kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.391708%
[libx264 @ 000002460bda4740] frame I:1 Avg QP:15.80 size:216204
[libx264 @ 000002460bda4740] frame P:29 Avg QP:15.19 size: 10747
[libx264 @ 000002460bda4740] frame B:37 Avg QP:17.07 size: 6300
[libx264 @ 000002460bda4740] consecutive B-frames: 17.9% 14.9% 31.3% 35.8%
[libx264 @ 000002460bda4740] mb I I16..4: 11.4% 86.0% 2.6%
[libx264 @ 000002460bda4740] mb P I16..4: 0.5% 1.9% 0.2% P16..4: 0.7% 0.2% 0.1% 0.0% 0.0% skip:96.5%
[libx264 @ 000002460bda4740] mb B I16..4: 0.1% 0.2% 0.0% B16..8: 1.3% 0.2% 0.0% direct: 0.7% skip:97.5% L0:57.4% L1:40.7% BI: 1.9%
[libx264 @ 000002460bda4740] 8x8 transform intra:79.7% inter:31.4%
[libx264 @ 000002460bda4740] coded y,u,v intra: 5.7% 2.9% 3.7% inter: 0.1% 0.5% 0.2%
[libx264 @ 000002460bda4740] i16 v,h,dc,p: 70% 23% 4% 2%
[libx264 @ 000002460bda4740] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 45% 8% 45% 0% 0% 0% 0% 0% 0%
[libx264 @ 000002460bda4740] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 26% 25% 3% 3% 4% 4% 3% 2%
[libx264 @ 000002460bda4740] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 000002460bda4740] ref P L0: 72.6% 3.0% 16.6% 7.7%
[libx264 @ 000002460bda4740] ref B L0: 75.7% 20.6% 3.7%
[libx264 @ 000002460bda4740] ref B L1: 97.7% 2.3%
[libx264 @ 000002460bda4740] kb/s:2271.59
[aac @ 000002460bda8580] Qavg: 55135.730