
Recherche avancée
Médias (3)
-
The Slip - Artworks
26 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Texte
-
Podcasting Legal guide
16 mai 2011, par
Mis à jour : Mai 2011
Langue : English
Type : Texte
-
Creativecommons informational flyer
16 mai 2011, par
Mis à jour : Juillet 2013
Langue : English
Type : Texte
Autres articles (36)
-
Encoding and processing into web-friendly formats
13 avril 2011, parMediaSPIP automatically converts uploaded files to internet-compatible formats.
Video files are encoded in MP4, Ogv and WebM (supported by HTML5) and MP4 (supported by Flash).
Audio files are encoded in MP3 and Ogg (supported by HTML5) and MP3 (supported by Flash).
Where possible, text is analyzed in order to retrieve the data needed for search engine detection, and then exported as a series of image files.
All uploaded files are stored online in their original format, so you can (...) -
Supporting all media types
13 avril 2011, parUnlike most software and media-sharing platforms, MediaSPIP aims to manage as many different media types as possible. The following are just a few examples from an ever-expanding list of supported formats : images : png, gif, jpg, bmp and more audio : MP3, Ogg, Wav and more video : AVI, MP4, OGV, mpg, mov, wmv and more text, code and other data : OpenOffice, Microsoft Office (Word, PowerPoint, Excel), web (html, CSS), LaTeX, Google Earth and (...)
-
Contribute to a better visual interface
13 avril 2011MediaSPIP is based on a system of themes and templates. Templates define the placement of information on the page, and can be adapted to a wide range of uses. Themes define the overall graphic appearance of the site.
Anyone can submit a new graphic theme or template and make it available to the MediaSPIP community.
Sur d’autres sites (6519)
-
How to get currecnt AVFrame sequential number after av_seek_frame ?
15 janvier 2023, par Sirop4ikI am new in decoder and FFmpeg. What I need is to implement the logic that can read frames with some step (ex:20), in other words, I have a file and I need to read frames 0, 20, 40, 60...


what I do is



AVFrame * m_pAVFrame = nullptr;
int firstFrameIdx = 0;

while(true)
{

if(firstFrameIdx > 0)
{
int64_t seekTarget = FrameToPts(m_pAVStream, firstFrameIdx);
nRet = av_seek_frame(m_pAVFormatCtx, m_streamIdx, seekTarget, AVSEEK_FLAG_FRAME);
}

nRet = av_read_frame(m_pAVFormatCtx, m_pAVPkt);
ret = avcodec_send_packet(m_pAVCodecCtx, m_pAVPkt);
ret = avcodec_receive_frame(m_pAVCodecCtx, m_pAVFrame);

firstFrameIdx+=20;
}




But problem is that
av_seek_frame
moves the pointer to the Iframe, lets say the video file has keyframes each 15(of course it could be a different number) like 0, 15, 30... So it means that if I try to seek to frame 20 actually I get to frame 15.

I see that
AVFrame
has a propertycoded_picture_number
that could be useful in my case, I tried to put these returned values to the vector and I see that these values irrelevant



what I expected to see there is
0, 15, 30, 45...


It'll be useful if I for example can make a seek then get a frame to ask the order number (ex:15) then I can understand that Iframe is 15 and in order to reach frame 20 I need to read and skip 5 frames so as a result, I get to frame 20, but as you see above after the seek I ask the order number and get weird values like
0, 2, 1, 3...
there is nothing to do with it...

I feel like there is some basic knowledge that I miss, could someone explain how to make a seek logic and get to the right frame ?


UPDATE


Init logic


bool FFmpegDecoder::Init(unsigned char const * pData, int dataSize, int reqId, bool bUseHWAccel, FFmpegDecoderCallback * pCB)
{
 Deinit();

 // From memory:
 if (pData == nullptr || dataSize == 0)
 {
 printf("FFmpegDecoder::Init FAILED: neither filename nor memory data were given !\n");
 return false;
 }
 m_pIoCtx = std::make_shared<aviocontextmem>(pData, dataSize);

 if (m_pIoCtx->IsValid() == false)
 {
 printf("FFmpegDecoder::Init FAILED: m_pIoCtx is nullptr !\n");
 return false;
 }

 m_reqId = reqId;
 m_bUseHWAccel = bUseHWAccel;
 m_pCB = pCB;
 m_pData = pData;
 m_dataSize = dataSize;

 m_bRequestedAbort = false;

 m_pAVPkt = av_packet_alloc();
 av_init_packet(m_pAVPkt);

 m_pAVFrame = av_frame_alloc();
 m_pAVFrameRGB = av_frame_alloc();

 if (m_bUseHWAccel)
 {
 m_pSwAVFrameForHw = av_frame_alloc();
 }

 m_pAVFormatCtx = avformat_alloc_context();
 m_pIoCtx->initAVFormatContext(m_pAVFormatCtx);

 if (avformat_open_input(&m_pAVFormatCtx, "", nullptr, nullptr) != 0)
 {
 printf("FFmpegDecoder::InitFFmpeg: error in avformat_open_input\n");
 return false;
 }

 if (avformat_find_stream_info(m_pAVFormatCtx, nullptr) < 0)
 {
 printf("FFmpegDecoder::InitFFmpeg: error in avformat_find_stream_info\n");
 return false;
 }


 //av_dump_format(ctx_format, 0, "", false);
 for (int i = 0; i < (int)m_pAVFormatCtx->nb_streams; i++)
 {
 if (m_pAVFormatCtx->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO)
 {
 m_streamIdx = i;
 m_pAVStream = m_pAVFormatCtx->streams[i];
 break;
 }
 }
 if (m_pAVStream == nullptr)
 {
 printf("FFmpegDecoder::InitFFmpeg: failed to find video stream\n");
 return false;
 }

 m_pAVCodec = avcodec_find_decoder(m_pAVStream->codecpar->codec_id);
 if (!m_pAVCodec)
 {
 printf("FFmpegDecoder::InitFFmpeg: error in avcodec_find_decoder\n");
 return false;
 }

 m_pAVCodecCtx = avcodec_alloc_context3(m_pAVCodec);
 if (!m_pAVCodecCtx)
 {
 printf("FFmpegDecoder::InitFFmpeg: error in avcodec_alloc_context3\n");
 return false;
 }

 if (avcodec_parameters_to_context(m_pAVCodecCtx, m_pAVStream->codecpar) < 0)
 {
 printf("FFmpegDecoder::InitFFmpeg: error in avcodec_parameters_to_context\n");
 return false;
 }

 if (m_bUseHWAccel)
 {
 AVHWDeviceType hwDevType = AV_HWDEVICE_TYPE_DXVA2;
 g_hwPixFormat = find_fmt_by_hw_type(hwDevType);
 m_pAVCodecCtx->get_format = get_hw_format;
 av_opt_set_int(m_pAVCodecCtx, "refcounted_frames", 1, 0);
 if (av_hwdevice_ctx_create(&m_pBufferRefForHw, hwDevType, NULL, NULL, 0) < 0)
 {
 printf("FFmpegDecoder::InitFFmpeg: error in av_hwdevice_ctx_create\n");
 return false;
 }
 m_pAVCodecCtx->hw_device_ctx = av_buffer_ref(m_pBufferRefForHw);
 }

 if (avcodec_open2(m_pAVCodecCtx, m_pAVCodec, nullptr) < 0)
 {
 printf("FFmpegDecoder::InitFFmpeg: error in avcodec_open2\n");
 return false;
 }

 m_pAVFrameRGB->format = AV_PIX_FMT_BGR24;
 m_pAVFrameRGB->width = m_pAVCodecCtx->width;
 m_pAVFrameRGB->height = m_pAVCodecCtx->height;
 if (av_frame_get_buffer(m_pAVFrameRGB, 32) != 0)
 {
 printf("FFmpegDecoder::InitFFmpeg: error in av_frame_get_buffer\n");
 return false;
 }

 m_streamRotationDegrees = GetAVStreamRotation(m_pAVStream);
 m_estimatedFramesCount = 0;
 assert(m_pAVFormatCtx->nb_streams > 0);
 if (m_pAVFormatCtx->nb_streams > 0)
 {
 m_estimatedFramesCount = m_pAVFormatCtx->streams[0]->nb_frames;
 }

 //InitConvertColorSpace
 // Init converter from YUV420p to BGR:
 if (m_bUseHWAccel)
 {
 m_pSwsCtxConvertImg = sws_getContext(m_pAVCodecCtx->width, m_pAVCodecCtx->height, AV_PIX_FMT_NV12, m_pAVCodecCtx->width, m_pAVCodecCtx->height, AV_PIX_FMT_RGB24, SWS_FAST_BILINEAR, NULL, NULL, NULL);
 }
 else
 {
 m_pSwsCtxConvertImg = sws_getContext(m_pAVCodecCtx->width, m_pAVCodecCtx->height, m_pAVCodecCtx->pix_fmt, m_pAVCodecCtx->width, m_pAVCodecCtx->height, AV_PIX_FMT_RGB24, SWS_FAST_BILINEAR, NULL, NULL, NULL);
 }
 if (!m_pSwsCtxConvertImg)
 {
 printf("FFmpegDecoder::InitFFmpeg: error in sws_getContext\n");
 return false;
 }

 m_bInitOK = true;
 return true;
}
</aviocontextmem>


Decoding logic with last changes


void FFmpegDecoder::DecodeWithStep(int step)
{
 step = 20;
 int currentFramePos = 0;
 int number_of_errors = 0;
 const int MAX_ERROR_NUM = 10;

 while (true)
 {
 if (step > 0)
 {
 int seekPos = currentFramePos + step;
 int64_t seekTarget = FrameToPts(m_pAVStream, seekPos);

 if (av_seek_frame(m_pAVFormatCtx, m_streamIdx, seekTarget, AVSEEK_FLAG_FRAME) < 0)
 {
 number_of_errors++;
 }
 else
 {
 currentFramePos = seekPos;
 m_is_seeked = true;
 }
 }

 if (av_read_frame(m_pAVFormatCtx, m_pAVPkt) == 0)
 {
 if (m_pAVPkt->stream_index == m_streamIdx) //to make sure that I dont get packets from other streams
 {
 if (m_is_seeked)
 {
 avcodec_flush_buffers(m_pAVCodecCtx);
 m_is_seeked = false;
 }

 if (avcodec_send_packet(m_pAVCodecCtx, m_pAVPkt) == 0)
 {
 printf("----- BATCH\n");

 while (avcodec_receive_frame(m_pAVCodecCtx, m_pAVFrame) == 0)
 {
 ProcessFrame(m_pAVFrame);
 av_frame_unref(m_pAVFrame);
 currentFramePos++;
 printf("----- cur position (%d) \n", currentFramePos);
 }
 }

 av_packet_unref(m_pAVPkt);
 }
 }
 else
 {
 number_of_errors++;
 }

 if (number_of_errors == MAX_ERROR_NUM)
 {
 printf("EXIT\n");
 break;
 }
 }
}



UPDATE


Init logic


bool FFmpegDecoder::Init(unsigned char const * pData, int dataSize, int reqId, bool bUseHWAccel, FFmpegDecoderCallback * pCB)
{
 Deinit();

 // From memory:
 if (pData == nullptr || dataSize == 0)
 {
 printf("FFmpegDecoder::Init FAILED: neither filename nor memory data were given !\n");
 return false;
 }
 m_pIoCtx = std::make_shared<aviocontextmem>(pData, dataSize);

 if (m_pIoCtx->IsValid() == false)
 {
 printf("FFmpegDecoder::Init FAILED: m_pIoCtx is nullptr !\n");
 return false;
 }

 m_reqId = reqId;
 m_bUseHWAccel = bUseHWAccel;
 m_pCB = pCB;
 m_pData = pData;
 m_dataSize = dataSize;

 m_bRequestedAbort = false;

 m_pAVPkt = av_packet_alloc();
 av_init_packet(m_pAVPkt);

 m_pAVFrame = av_frame_alloc();
 m_pAVFrameRGB = av_frame_alloc();

 if (m_bUseHWAccel)
 {
 m_pSwAVFrameForHw = av_frame_alloc();
 }

 m_pAVFormatCtx = avformat_alloc_context();
 m_pIoCtx->initAVFormatContext(m_pAVFormatCtx);

 if (avformat_open_input(&m_pAVFormatCtx, "", nullptr, nullptr) != 0)
 {
 printf("FFmpegDecoder::InitFFmpeg: error in avformat_open_input\n");
 return false;
 }

 if (avformat_find_stream_info(m_pAVFormatCtx, nullptr) < 0)
 {
 printf("FFmpegDecoder::InitFFmpeg: error in avformat_find_stream_info\n");
 return false;
 }


 //av_dump_format(ctx_format, 0, "", false);
 for (int i = 0; i < (int)m_pAVFormatCtx->nb_streams; i++)
 {
 if (m_pAVFormatCtx->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO)
 {
 m_streamIdx = i;
 m_pAVStream = m_pAVFormatCtx->streams[i];
 break;
 }
 }
 if (m_pAVStream == nullptr)
 {
 printf("FFmpegDecoder::InitFFmpeg: failed to find video stream\n");
 return false;
 }

 m_pAVCodec = avcodec_find_decoder(m_pAVStream->codecpar->codec_id);
 if (!m_pAVCodec)
 {
 printf("FFmpegDecoder::InitFFmpeg: error in avcodec_find_decoder\n");
 return false;
 }

 m_pAVCodecCtx = avcodec_alloc_context3(m_pAVCodec);
 if (!m_pAVCodecCtx)
 {
 printf("FFmpegDecoder::InitFFmpeg: error in avcodec_alloc_context3\n");
 return false;
 }

 if (avcodec_parameters_to_context(m_pAVCodecCtx, m_pAVStream->codecpar) < 0)
 {
 printf("FFmpegDecoder::InitFFmpeg: error in avcodec_parameters_to_context\n");
 return false;
 }

 if (m_bUseHWAccel)
 {
 AVHWDeviceType hwDevType = AV_HWDEVICE_TYPE_DXVA2;
 g_hwPixFormat = find_fmt_by_hw_type(hwDevType);
 m_pAVCodecCtx->get_format = get_hw_format;
 av_opt_set_int(m_pAVCodecCtx, "refcounted_frames", 1, 0);
 if (av_hwdevice_ctx_create(&m_pBufferRefForHw, hwDevType, NULL, NULL, 0) < 0)
 {
 printf("FFmpegDecoder::InitFFmpeg: error in av_hwdevice_ctx_create\n");
 return false;
 }
 m_pAVCodecCtx->hw_device_ctx = av_buffer_ref(m_pBufferRefForHw);
 }

 if (avcodec_open2(m_pAVCodecCtx, m_pAVCodec, nullptr) < 0)
 {
 printf("FFmpegDecoder::InitFFmpeg: error in avcodec_open2\n");
 return false;
 }

 m_pAVFrameRGB->format = AV_PIX_FMT_BGR24;
 m_pAVFrameRGB->width = m_pAVCodecCtx->width;
 m_pAVFrameRGB->height = m_pAVCodecCtx->height;
 if (av_frame_get_buffer(m_pAVFrameRGB, 32) != 0)
 {
 printf("FFmpegDecoder::InitFFmpeg: error in av_frame_get_buffer\n");
 return false;
 }

 m_streamRotationDegrees = GetAVStreamRotation(m_pAVStream);
 m_estimatedFramesCount = 0;
 assert(m_pAVFormatCtx->nb_streams > 0);
 if (m_pAVFormatCtx->nb_streams > 0)
 {
 m_estimatedFramesCount = m_pAVFormatCtx->streams[0]->nb_frames;
 }

 //InitConvertColorSpace
 // Init converter from YUV420p to BGR:
 if (m_bUseHWAccel)
 {
 m_pSwsCtxConvertImg = sws_getContext(m_pAVCodecCtx->width, m_pAVCodecCtx->height, AV_PIX_FMT_NV12, m_pAVCodecCtx->width, m_pAVCodecCtx->height, AV_PIX_FMT_RGB24, SWS_FAST_BILINEAR, NULL, NULL, NULL);
 }
 else
 {
 m_pSwsCtxConvertImg = sws_getContext(m_pAVCodecCtx->width, m_pAVCodecCtx->height, m_pAVCodecCtx->pix_fmt, m_pAVCodecCtx->width, m_pAVCodecCtx->height, AV_PIX_FMT_RGB24, SWS_FAST_BILINEAR, NULL, NULL, NULL);
 }
 if (!m_pSwsCtxConvertImg)
 {
 printf("FFmpegDecoder::InitFFmpeg: error in sws_getContext\n");
 return false;
 }

 m_bInitOK = true;
 return true;
}
</aviocontextmem>


void FFmpegDecoder::DecodeWithStep(int step)
{
 step = 20;
 int currentFramePos = 0;
 int number_of_errors = 0;
 const int MAX_ERROR_NUM = 10;
 int seekPos = 0;

 while (true)
 {
 if (step > 1)
 {
 seekPos = currentFramePos + step;
 int64_t seekTarget = FrameToPts(m_pAVStream, seekPos);

 if (av_seek_frame(m_pAVFormatCtx, m_streamIdx, seekTarget, AVSEEK_FLAG_FRAME) < 0)
 {
 number_of_errors++;
 }
 else
 {
 m_is_seeked = true;
 }
 }

 while (true)
 {
 if (av_read_frame(m_pAVFormatCtx, m_pAVPkt) == 0)
 {
 if (m_pAVPkt->stream_index == m_streamIdx) //to make sure that I dont get packets from other streams
 {
 if (m_is_seeked)
 {
 avcodec_flush_buffers(m_pAVCodecCtx);
 m_is_seeked = false;
 }

 if (avcodec_send_packet(m_pAVCodecCtx, m_pAVPkt) == 0)
 {
 int ret = 0;
 while (ret >= 0)
 {
 ret = avcodec_receive_frame(m_pAVCodecCtx, m_pAVFrame);

 if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF)
 {
 av_frame_unref(m_pAVFrame);
 break;
 }

 currentFramePos = m_pAVFrame->display_picture_number; //In order to get position of currect frame (seek move poiter to the key frame)

 if (currentFramePos < seekPos) //Some frames need to be skiped in order to reach needed frame
 {
 printf("----- SKIP : cur position (%d) \n", currentFramePos);
 av_frame_unref(m_pAVFrame);
 continue;
 }

 ProcessFrame(m_pAVFrame); //needed frame was processed
 av_frame_unref(m_pAVFrame);
 printf("----- cur position (%d) \n", currentFramePos);
 break;
 }
 }

 av_packet_unref(m_pAVPkt);
 }
 else
 {
 av_packet_unref(m_pAVPkt); //we got a frame from the wrong stream
 }
 }
 else
 {
 number_of_errors++;
 }

 if (number_of_errors == MAX_ERROR_NUM)
 {
 printf("EXIT1\n");
 break;
 }
 }

 if (number_of_errors == MAX_ERROR_NUM)
 {
 printf("EXIT2\n");
 break;
 }
 }
}



int64_t FrameToPts(AVStream* pavStream, int frame)
{
 return (int64_t(frame) * pavStream->r_frame_rate.den * pavStream->time_base.den) /
 (int64_t(pavStream->r_frame_rate.num) * pavStream->time_base.num);
}



-
Announcing Matomo 4 : More security, privacy and better performance
-
Manipulating one video into multi outputs with FFmpeg results in no audio in the last output
27 octobre 2015, par my name isUsing FFmpeg, I’m trying to do some filtering operations on one input video to scale it (out1), scale and trim it (out2).
This is the command I’m using :ffmpeg -y \
-i "Robotica_1080.mkv" \
-filter_complex "[0:v]split=2[v1][v2]; \
[v1]scale=640:360,setpts=PTS-STARTPTS[vout1]; \
[v2]trim=10:15,scale=640:360,setpts=PTS-STARTPTS[vout2]; \
[0:a]asplit=2[a1][a2]; \
[a1]anull,asetpts=PTS-STARTPTS[aout1]; \
[a2]atrim=10:15,asetpts=PTS-STARTPTS[aout2]; \
[vout1][aout1]concat=n=1:v=1:a=1[out1]; \
[vout2][aout2]concat=n=1:v=1:a=1[out2]" \
-map "[out1]" "1.mp4" \
-map "[out2]" "2.mp4"1.mp4 is ok while 2.mp4 lasts 5 seconds as expected but without audio at all (the QuickTime inspector doesn’t write the audio codec)
I tried to remove the trim/atrim filters, so the filter_complex parameter looked like this :
-filter_complex "[0:v]split=2[v1][v2]; \
[v1]scale=640:360[vout1]; \
[v2]scale=640:360[vout2]; \
[0:a]asplit=2[a1][a2]; \
[a1]anull[aout1]; \
[a2]anull[aout2]; \
[vout1][aout1]concat=n=1:v=1:a=1[out1]; \
[vout2][aout2]concat=n=1:v=1:a=1[out2]" \but still no audio on 2.mp4
Can anyone give me a hint ?
—EDIT—
This is the output from first ffmpeg command :Mac-mini:~ Luca$ /Applications/XAMPP/xamppfiles/htdocs/MediaGallery/ffmpeg/ffmpeg -y \
> -i "/Users/Luca/Desktop/_TEMP UPLOAD/Video/Robotica_1080.mkv" \
> -filter_complex "[0:v]split=2[v1][v2]; \
> [v1]scale=640:360,setpts=PTS-STARTPTS[vout1]; \
> [v2]trim=10:15,scale=640:360,setpts=PTS-STARTPTS[vout2]; \
> [0:a]asplit=2[a1][a2]; \
> [a1]anull,asetpts=PTS-STARTPTS[aout1]; \
> [a2]atrim=10:15,asetpts=PTS-STARTPTS[aout2]; \
> [vout1][aout1]concat=n=1:v=1:a=1[out1]; \
> [vout2][aout2]concat=n=1:v=1:a=1[out2]" \
> -map "[out1]" "/Users/Luca/Downloads/1.mp4" \
> -map "[out2]" "/Users/Luca/Downloads/2.mp4"
ffmpeg version N-72460-gc5a07f1-tessus Copyright (c) 2000-2015 the FFmpeg developers
built with Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --as=yasm --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libass --enable-libbluray --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzmq --enable-version3 --disable-ffplay --disable-indev=qtkit --disable-indev=x11grab_xcb
libavutil 54. 23.101 / 54. 23.101
libavcodec 56. 40.100 / 56. 40.100
libavformat 56. 33.101 / 56. 33.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 16.101 / 5. 16.101
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, matroska,webm, from '/Users/Luca/Desktop/_TEMP UPLOAD/Video/Robotica_1080.mkv':
Metadata:
encoder : libDivXMediaFormat 4.0.0.0578
Duration: 00:00:20.04, start: 0.000000, bitrate: 4282 kb/s
Stream #0:0(eng): Video: hevc (Main), yuvj420p(pc), 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 1k tbn, 25 tbc (default)
Stream #0:1(en): Audio: aac (LC), 44100 Hz, stereo, fltp (default)
[swscaler @ 0x7fb4d181c400] deprecated pixel format used, make sure you did set range correctly
[swscaler @ 0x7fb4d185be00] deprecated pixel format used, make sure you did set range correctly
No pixel format specified, yuvj420p for H.264 encoding chosen.
Use -pix_fmt yuv420p for compatibility with outdated media players.
Last message repeated 1 times
[libx264 @ 0x7fb4d183f400] using SAR=1/1
[libx264 @ 0x7fb4d183f400] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.1 Cache64
[libx264 @ 0x7fb4d183f400] profile High, level 3.0
[libx264 @ 0x7fb4d183f400] 264 - core 142 - H.264/MPEG-4 AVC codec - Copyleft 2003-2014 - 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=-2 threads=3 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
[libx264 @ 0x7fb4d184e400] using SAR=1/1
[libx264 @ 0x7fb4d184e400] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.1 Cache64
[libx264 @ 0x7fb4d184e400] profile High, level 3.0
[libx264 @ 0x7fb4d184e400] 264 - core 142 - H.264/MPEG-4 AVC codec - Copyleft 2003-2014 - 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=-2 threads=3 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 '/Users/Luca/Downloads/1.mp4':
Metadata:
encoder : Lavf56.33.101
Stream #0:0: Audio: aac (libvo_aacenc) ([64][0][0][0] / 0x0040), 44100 Hz, stereo, s16, 128 kb/s (default)
Metadata:
encoder : Lavc56.40.100 libvo_aacenc
Stream #0:1: Audio: aac (libvo_aacenc) ([64][0][0][0] / 0x0040), 44100 Hz, stereo, s16, 128 kb/s
Metadata:
encoder : Lavc56.40.100 libvo_aacenc
Stream #0:2: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuvj420p(pc), 640x360 [SAR 1:1 DAR 16:9], q=-1--1, 25 fps, 12800 tbn, 25 tbc (default)
Metadata:
encoder : Lavc56.40.100 libx264
Output #1, mp4, to '/Users/Luca/Downloads/2.mp4':
Metadata:
encoder : Lavf56.33.101
Stream #1:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuvj420p(pc), 640x360 [SAR 1:1 DAR 16:9], q=-1--1, 25 fps, 12800 tbn, 25 tbc (default)
Metadata:
encoder : Lavc56.40.100 libx264
Stream mapping:
Stream #0:0 (hevc) -> split
Stream #0:1 (aac) -> asplit
concat:out:a0 -> Stream #0:0 (libvo_aacenc)
concat:out:a0 -> Stream #0:1 (libvo_aacenc)
concat:out:v0 -> Stream #0:2 (libx264)
concat:out:v0 -> Stream #1:0 (libx264)
Press [q] to stop, [?] for help
frame= 501 fps= 26 q=-1.0 Lq=-1.0 size= 1512kB time=00:00:19.97 bitrate= 620.1kbits/s
video:1385kB audio:392kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[libx264 @ 0x7fb4d183f400] frame I:3 Avg QP:19.30 size: 3879
[libx264 @ 0x7fb4d183f400] frame P:321 Avg QP:24.53 size: 3024
[libx264 @ 0x7fb4d183f400] frame B:177 Avg QP:26.20 size: 825
[libx264 @ 0x7fb4d183f400] consecutive B-frames: 40.7% 34.7% 5.4% 19.2%
[libx264 @ 0x7fb4d183f400] mb I I16..4: 24.8% 65.9% 9.3%
[libx264 @ 0x7fb4d183f400] mb P I16..4: 7.5% 10.5% 2.5% P16..4: 22.9% 7.4% 2.7% 0.0% 0.0% skip:46.5%
[libx264 @ 0x7fb4d183f400] mb B I16..4: 0.4% 0.6% 0.3% B16..8: 17.2% 2.9% 0.7% direct: 0.9% skip:77.1% L0:37.2% L1:51.8% BI:11.0%
[libx264 @ 0x7fb4d183f400] 8x8 transform intra:51.6% inter:69.2%
[libx264 @ 0x7fb4d183f400] coded y,uvDC,uvAC intra: 40.2% 24.2% 1.1% inter: 8.5% 4.0% 0.0%
[libx264 @ 0x7fb4d183f400] i16 v,h,dc,p: 9% 65% 1% 25%
[libx264 @ 0x7fb4d183f400] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 20% 29% 16% 4% 6% 6% 7% 6% 6%
[libx264 @ 0x7fb4d183f400] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 22% 34% 12% 3% 7% 6% 7% 4% 4%
[libx264 @ 0x7fb4d183f400] i8c dc,h,v,p: 63% 25% 11% 1%
[libx264 @ 0x7fb4d183f400] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x7fb4d183f400] ref P L0: 69.3% 11.5% 12.5% 6.7%
[libx264 @ 0x7fb4d183f400] ref B L0: 82.4% 16.7% 0.8%
[libx264 @ 0x7fb4d183f400] ref B L1: 98.6% 1.4%
[libx264 @ 0x7fb4d183f400] kb/s:450.44
[libx264 @ 0x7fb4d184e400] frame I:1 Avg QP:22.23 size: 6699
[libx264 @ 0x7fb4d184e400] frame P:78 Avg QP:24.94 size: 2998
[libx264 @ 0x7fb4d184e400] frame B:46 Avg QP:27.93 size: 1036
[libx264 @ 0x7fb4d184e400] consecutive B-frames: 32.0% 56.0% 2.4% 9.6%
[libx264 @ 0x7fb4d184e400] mb I I16..4: 53.5% 26.6% 19.9%
[libx264 @ 0x7fb4d184e400] mb P I16..4: 9.8% 7.6% 3.1% P16..4: 25.0% 8.0% 2.8% 0.0% 0.0% skip:43.8%
[libx264 @ 0x7fb4d184e400] mb B I16..4: 0.8% 0.5% 0.4% B16..8: 22.4% 3.5% 0.8% direct: 1.1% skip:70.4% L0:41.1% L1:48.0% BI:10.9%
[libx264 @ 0x7fb4d184e400] 8x8 transform intra:36.1% inter:66.1%
[libx264 @ 0x7fb4d184e400] coded y,uvDC,uvAC intra: 33.5% 24.6% 1.8% inter: 8.5% 3.8% 0.0%
[libx264 @ 0x7fb4d184e400] i16 v,h,dc,p: 4% 82% 1% 13%
[libx264 @ 0x7fb4d184e400] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 17% 40% 18% 3% 4% 4% 7% 3% 5%
[libx264 @ 0x7fb4d184e400] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 23% 40% 13% 3% 5% 5% 6% 3% 4%
[libx264 @ 0x7fb4d184e400] i8c dc,h,v,p: 54% 36% 8% 2%
[libx264 @ 0x7fb4d184e400] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x7fb4d184e400] ref P L0: 60.6% 10.5% 17.5% 11.4%
[libx264 @ 0x7fb4d184e400] ref B L0: 77.6% 22.0% 0.4%
[libx264 @ 0x7fb4d184e400] ref B L1: 99.1% 0.9%
[libx264 @ 0x7fb4d184e400] kb/s:461.15