
Recherche avancée
Médias (1)
-
Rennes Emotion Map 2010-11
19 octobre 2011, par
Mis à jour : Juillet 2013
Langue : français
Type : Texte
Autres articles (44)
-
Publier sur MédiaSpip
13 juin 2013Puis-je poster des contenus à partir d’une tablette Ipad ?
Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir -
HTML5 audio and video support
13 avril 2011, parMediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
For older browsers the Flowplayer flash fallback is used.
MediaSPIP allows for media playback on major mobile platforms with the above (...) -
Support audio et vidéo HTML5
10 avril 2011MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...)
Sur d’autres sites (8057)
-
LibVLC DXVA2 Windows C++ Hardware Acceleration
15 novembre 2016, par Sergiu VladI want to decode a h264 RTSP stream using DXVA2 Accelerated decoder. In VLC it does work but in my code have the following output :
avcodec generic warning: threaded frame decoding is not compatible with DXVA2, disabled
avcodec generic debug: available hardware decoder output format 61 (dxva2_vld)
avcodec generic debug: available hardware decoder output format 128 (d3d11va_vld)
avcodec generic debug: available software decoder output format 12 (yuvj420p)
core generic debug: looking for hw decoder module matching "any": 1 candidates
core generic debug: no hw decoder modules matchedIs this a problem with NV12 conversion ? Is there a way to force DXVA2 ?
Thanks
CODE :
#include
#include
#include
#include
#include
#include <iostream>
#include
#include <ctime>
#include <vlc></vlc>vlc.h>
// RTSP address
const char* rtspAddress = "rtsp://admin:admin@192.168.0.245/live_st1";
// Video resolution WxH
cv::Size rtspRes(1920, 1080);
struct VideoDataStruct
{
int param;
};
int done = 0;
libvlc_media_player_t *mp;
unsigned int videoBufferSize = 0;
uint8_t *videoBuffer = 0;
void cbVideoPrerender(void *p_video_data, uint8_t **pp_pixel_buffer, int size)
{
if (size > videoBufferSize || !videoBuffer)
{
printf("Reallocate raw video buffer %d bytes\n", size);
free(videoBuffer);
videoBuffer = (uint8_t *)malloc(size);
videoBufferSize = size;
}
// videoBuffer = (uint8_t *)malloc(size);
*pp_pixel_buffer = videoBuffer;
}
void cbVideoPostrender(void *p_video_data, uint8_t *p_pixel_buffer, int width, int height, int pixel_pitch, int size, int64_t pts)
{
// Unlocking
//CloseHandle(hMutex);
}
//static void handleEvent(const libvlc_event_t* pEvt, void* pUserData)
//{
// libvlc_time_t time;
// switch (pEvt->type)
// {
// case libvlc_MediaPlayerTimeChanged:
// time = libvlc_media_player_get_time(mp);
// printf("MediaPlayerTimeChanged %lld ms\n", (long long)time);
// break;
// case libvlc_MediaPlayerEndReached:
// printf("MediaPlayerEndReached\n");
// done = 1;
// break;
// default:
// printf("%s\n", libvlc_event_type_name(pEvt->type));
// }
//}
clock_t startTime[8];
int framesReceivedThisSecond[8];
int main()
{
// VLC pointers
libvlc_instance_t *inst;
libvlc_media_t *m;
void *pUserData = 0;
VideoDataStruct dataStruct;
// VLC options
char smem_options[1000];
// RV24
sprintf(smem_options
, "#transcode{vcodec=RV24}:smem{"
"video-prerender-callback=%lld,"
"video-postrender-callback=%lld,"
"video-data=%lld,"
"no-time-sync},"
, (long long int)(intptr_t)(void*)&cbVideoPrerender
, (long long int)(intptr_t)(void*)&cbVideoPostrender
, (long long int)(intptr_t)(void*)&dataStruct
);
const char * const vlc_args[] = {
"-I", "dummy", // Don't use any interface
"--ignore-config", // Don't use VLC's config
"--extraintf=logger", // Log anything
"--verbose=4", // Be verbose
// "--ffmpeg-hw",
// "-vvv",
"--ffmpeg-hw",
"--avcodec-hw=any",
"--sout", smem_options // Stream to memory
};
// Launch VLC
inst = libvlc_new(sizeof(vlc_args) / sizeof(vlc_args[0]), vlc_args);
// Create a new item
m = libvlc_media_new_location(inst, rtspAddress);
// Create a media player playing environement
mp = libvlc_media_player_new_from_media(m);
// libvlc_event_manager_t* eventManager = libvlc_media_player_event_manager(mp);
// libvlc_event_attach(eventManager, libvlc_MediaPlayerTimeChanged, handleEvent, pUserData);
// libvlc_event_attach(eventManager, libvlc_MediaPlayerEndReached, handleEvent, pUserData);
// libvlc_event_attach(eventManager, libvlc_MediaPlayerPositionChanged, handleEvent, pUserData);
//libvlc_video_set_format(mp, "RV24", 240, 320, 240 * 3 );
// play the media_player
libvlc_media_player_play(mp);
// Create a window for displaying the video
std::string winName("Demo Video");
cv::namedWindow(winName, cv::WINDOW_AUTOSIZE);
cv::Mat frame;
int key = 0;
// Endless loop, press Esc to quit
while (key != 27)
{
// Check for invalid input
if (videoBuffer)
{
// CV_8UC3 = 8 bits, 3 chanels
frame = cv::Mat(rtspRes, CV_8UC3, videoBuffer);
}
if (frame.rows == 0 || frame.cols == 0)
continue;
int stream_number=0;
framesReceivedThisSecond[stream_number]++;
long duration = ( std::clock() - startTime[stream_number] );
if(duration>1000)
{
std::cout<<"\n"<<"FPS "<code></ctime></iostream>FULL LOG :
core libvlc debug: Copyright © 1996-2016 the VideoLAN team
core libvlc debug: revision 2.2.3-37-g888b7e89
core libvlc debug: configured with ../extras/package/win32/../../../configure '--enable-update-check' '--enable-lua' '--enable-faad' '--enable-flac' '--enable-theora' '--enable-twolame' '--enable-quicktime' '--enable-avcodec' '--enable-merge-ffmpeg' '--enable-dca' '--enable-mpc' '--enable-libass' '--enable-x264' '--enable-schroedinger' '--enable-realrtsp' '--enable-live555' '--enable-dvdread' '--enable-shout' '--enable-goom' '--enable-caca' '--disable-sdl' '--enable-qt' '--enable-skins2' '--enable-sse' '--enable-mmx' '--enable-libcddb' '--enable-zvbi' '--disable-telx' '--enable-nls' '--host=i686-w64-mingw32' '--build=x86_64-pc-linux-gnu' 'build_alias=x86_64-pc-linux-gnu' 'host_alias=i686-w64-mingw32' 'PKG_CONFIG_PATH=/opt/intel/opencl:' 'PKG_CONFIG_LIBDIR=/home/svlad/DEV/vlc/contrib/i686-w64-mingw32/lib/pkgconfig'
core libvlc debug: using multimedia timers as clock source
core libvlc debug: min period: 1 ms, max period: 1000000 ms
core libvlc debug: searching plug-in modules
core libvlc debug: loading plugins cache file C:\DEV\VLCStreamProcessor\build-untitled-Desktop_Qt_5_5_1_MSVC2013_32bit-Debug\debug\plugins\plugins.dat
core libvlc debug: recursively browsing `C:\DEV\VLCStreamProcessor\build-untitled-Desktop_Qt_5_5_1_MSVC2013_32bit-Debug\debug\plugins'
core libvlc debug: saving plugins cache C:\DEV\VLCStreamProcessor\build-untitled-Desktop_Qt_5_5_1_MSVC2013_32bit-Debug\debug\plugins\plugins.dat
core libvlc debug: plug-ins loaded: 418 modules
core libvlc debug: translation test: code is "C"
core libvlc debug: CPU has capabilities MMX MMXEXT SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 FPU
core playlist debug: creating audio output
core audio output debug: looking for audio output module matching "any": 6 candidates
directsound audio output debug: found 2 devices
core audio output debug: using audio output module "directsound"
core playlist debug: keeping audio output
core interface debug: looking for interface module matching "logger,none": 16 candidates
logger interface: VLC media player - 2.2.4 Weatherwax
logger interface: Copyright © 1996-2016 the VideoLAN team
logger interface:
Warning: if you cannot access the GUI anymore, open a command-line window, go to the directory where you installed VLC and run "vlc -I qt"
logger interface: using logger.
logger interface warning: no log filename provided, using `vlc-log.txt'
logger interface debug: opening logfile `vlc-log.txt'
core libvlc debug: VLC media player - 2.2.4 Weatherwax
core libvlc debug: Copyright © 1996-2016 the VideoLAN team
core libvlc debug: revision 2.2.3-37-g888b7e89
core libvlc debug: configured with ../extras/package/win32/../../../configure '--enable-update-check' '--enable-lua' '--enable-faad' '--enable-flac' '--enable-theora' '--enable-twolame' '--enable-quicktime' '--enable-avcodec' '--enable-merge-ffmpeg' '--enable-dca' '--enable-mpc' '--enable-libass' '--enable-x264' '--enable-schroedinger' '--enable-realrtsp' '--enable-live555' '--enable-dvdread' '--enable-shout' '--enable-goom' '--enable-caca' '--disable-sdl' '--enable-qt' '--enable-skins2' '--enable-sse' '--enable-mmx' '--enable-libcddb' '--enable-zvbi' '--disable-telx' '--enable-nls' '--host=i686-w64-mingw32' '--build=x86_64-pc-linux-gnu' 'build_alias=x86_64-pc-linux-gnu' 'host_alias=i686-w64-mingw32' 'PKG_CONFIG_PATH=/opt/intel/opencl:' 'PKG_CONFIG_LIBDIR=/home/svlad/DEV/vlc/contrib/i686-w64-mingw32/lib/pkgconfig'
core interface debug: using interface module "logger"
core generic debug: creating audio output
core audio output debug: looking for audio output module matching "any": 6 candidates
directsound audio output debug: found 2 devices
core audio output debug: using audio output module "directsound"
core generic debug: keeping audio output
core input debug: Creating an input for 'rtsp://192.168.0.245/live_st1'
core stream output debug: using sout chain=`transcode{vcodec=RV24}:smem{video-prerender-callback=15667245,video-postrender-callback=15667630,video-data=3471900,no-time-sync},'
core stream output debug: stream=`smem'
core stream out debug: looking for sout stream module matching "smem": 22 candidates
core stream out debug: set config option: sout-smem-video-prerender-callback to 15667245
core stream out debug: set config option: sout-smem-video-postrender-callback to 15667630
core stream out debug: set config option: sout-smem-video-data to 3471900
core stream out debug: set config option: sout-smem-time-sync to (null)
core stream out debug: using sout stream module "stream_out_smem"
core stream output debug: stream=`transcode'
core stream out debug: looking for sout stream module matching "transcode": 22 candidates
core stream out debug: set config option: sout-transcode-vcodec to RV24
stream_out_transcode stream out debug: Checking video codec mapping for RV24 got RV24
stream_out_transcode stream out debug: codec video=RV24 0x0 scaling: 0.000000 0kb/s
core stream out debug: using sout stream module "stream_out_transcode"
core input debug: using timeshift granularity of 50 MiB, in path 'C:\Users\BCDVideo\AppData\Local\Temp'
core input debug: `rtsp://admin:admin@192.168.0.245/live_st1' gives access `rtsp' demux `' path `admin:admin@192.168.0.245/live_st1'
core input debug: specified demux `any'
core input debug: creating demux: access='rtsp' demux='any' location='admin:admin@192.168.0.245/live_st1' file='\\admin:admin@192.168.0.245\live_st1'
core demux debug: looking for access_demux module matching "rtsp": 12 candidates
live555 demux debug: version 2016.01.12
live555 demux debug: RTP subsession 'video/H264'
core input debug: selecting program id=0
live555 demux debug: setup start: 0.000000 stop:0.000000
live555 demux debug: We have a timeout of 60 seconds
live555 demux debug: spawned timeout thread
live555 demux debug: play start: 0.000000 stop:0.000000
core demux debug: using access_demux module "live555"
core decoder debug: looking for packetizer module matching "any": 23 candidates
packetizer_h264 decoder debug: found NAL_SPS (sps_id=0)
packetizer_h264 decoder debug: found NAL_PPS (pps_id=0 sps_id=0)
core decoder debug: using packetizer module "packetizer_h264"
core input debug: starting in sync mode
core demux meta debug: looking for meta reader module matching "any": 2 candidates
lua demux meta debug: Trying Lua scripts in C:\Users\BCDVideo\AppData\Roaming\vlc\lua\meta\reader
lua demux meta debug: Trying Lua scripts in C:\DEV\VLCStreamProcessor\build-untitled-Desktop_Qt_5_5_1_MSVC2013_32bit-Debug\debug\lua\meta\reader
core demux meta debug: no meta reader modules matched
core input debug: `rtsp://admin:admin@192.168.0.245/live_st1' successfully opened
core input debug: switching to async mode
core input debug: Buffering 0%
core input debug: Buffering 3%
core input debug: Buffering 10%
core stream output debug: adding a new sout input (sout_input:00c21c50)
core input debug: Buffering 13%
stream_out_transcode stream out debug: creating video transcoding from fcc=`h264' to fcc=`RV24'
core input debug: Buffering 16%
core generic debug: looking for decoder module matching "any": 43 candidates
core input debug: Buffering 20%
core input debug: Buffering 23%
avcodec generic debug: CPU flags: 0x0107d3db
core input debug: Buffering 30%
avcodec generic debug: trying to use direct rendering
core input debug: Buffering 33%
avcodec generic debug: allowing 4 thread(s) for decoding
core input debug: Buffering 36%
avcodec generic warning: threaded frame decoding is not compatible with DXVA2, disabled
core input debug: Buffering 40%
avcodec generic debug: avcodec codec (H264 - MPEG-4 AVC (part 10)) started
core input debug: Buffering 43%
avcodec generic debug: using slice thread mode with 4 threads
core input debug: Buffering 50%
core generic debug: using decoder module "avcodec"
core input debug: Buffering 53%
core encoder debug: looking for encoder module matching "any": 20 candidates
core input debug: Buffering 56%
core input debug: Buffering 60%
avcodec encoder debug: CPU flags: 0x0107d3db
core input debug: Buffering 63%
avcodec encoder debug: Time base for probing setted to 1/1000000
core input debug: Buffering 70%
avcodec encoder debug: Time base set to 1/1000000
core input debug: Buffering 73%
avcodec encoder debug: found encoder Raw video
core input debug: Buffering 76%
core encoder debug: using encoder module "avcodec"
core input debug: Buffering 80%
core encoder debug: removing module "avcodec"
core input debug: Buffering 83%
core input debug: Buffering 90%
core input debug: Buffering 93%
core input debug: Buffering 96%
core input debug: Stream buffering done (1002 ms in 834 ms)
core input debug: Decoder wait done in 0 ms
avcodec generic debug: available hardware decoder output format 61 (dxva2_vld)
avcodec generic debug: available hardware decoder output format 128 (d3d11va_vld)
avcodec generic debug: available software decoder output format 12 (yuvj420p)
core generic debug: looking for hw decoder module matching "any": 1 candidates
core generic debug: no hw decoder modules matched
avcodec generic warning: plane 0 not aligned
avcodec generic warning: disabling direct rendering
stream_out_transcode stream out debug: decoder aspect is 1.761468:1
stream_out_transcode stream out debug: source pixel aspect is 0.990826:1
stream_out_transcode stream out debug: scaled pixel aspect is 0.990826:1
stream_out_transcode stream out debug: source 1920x1080, destination 1920x1080
stream_out_transcode stream out debug: source fps 30/1, destination 30/1
stream_out_transcode stream out: input interval 33333 (base 1)
stream_out_transcode stream out: output interval 33333 (base 1)
stream_out_transcode stream out debug: encoder aspect is 1920:1090
core filter debug: looking for video filter2 module matching "any": 58 candidates
swscale filter debug: 1920x1080 (1920x1090) chroma: J420 -> 1920x1080 (1920x1090) chroma: RV24 with scaling using Bicubic (good quality)
core filter debug: using video filter2 module "swscale"
core stream out debug: Filter 'Swscale' (0089a2cc) appended to chain
stream_out_transcode stream out debug: destination (after video filters) 1920x1090
core encoder debug: looking for encoder module matching "any": 20 candidates
avcodec encoder debug: CPU flags: 0x0107d3db
avcodec encoder debug: Time base for probing setted to 1/30
avcodec encoder debug: Time base set to 1/30
avcodec encoder debug: found encoder Raw video
core encoder debug: using encoder module "avcodec"
stream_out_transcode stream out warning: Reseting video sync
stream_out_transcode stream out warning: Reseting video sync
stream_out_transcode stream out warning: Reseting video sync
stream_out_transcode stream out warning: Reseting video sync
avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518755, last: 1518769)
avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518756, last: 1518769)
avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518757, last: 1518769)
avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518758, last: 1518769)
avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518759, last: 1518769)
avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518760, last: 1518769)
avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518761, last: 1518769)
avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518762, last: 1518769)
avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518763, last: 1518769)
avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518764, last: 1518769)
stream_out_transcode stream out warning: Reseting video sync
stream_out_transcode stream out warning: Reseting video sync
avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518784, last: 1518795)
live555 demux debug: tk->rtpSource->hasBeenSynchronizedUsingRTCP()
core input error: ES_OUT_RESET_PCR called
avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518785, last: 1518795)
core input debug: Buffering 0%
core input debug: Buffering 3%
core input debug: Buffering 6%
core input debug: Buffering 10%
core input debug: Buffering 13%
core input debug: Buffering 20%
core input debug: Buffering 23%
core input debug: Buffering 26%
core input debug: Buffering 30%
core input debug: Buffering 33%
core input debug: Buffering 40%
core input debug: Buffering 43%
core input debug: Buffering 46%
core input debug: Buffering 50%
core input debug: Buffering 53%
core input debug: Buffering 60%
core input debug: Buffering 63%
core input debug: Buffering 66%
core input debug: Buffering 70%
core input debug: Buffering 73%
core input debug: Buffering 80%
core input debug: Buffering 83%
core input debug: Buffering 86%
core input debug: Buffering 90%
core input debug: Buffering 93%
core input debug: Stream buffering done (1002 ms in 817 ms)
core input debug: Decoder wait done in 0 ms
stream_out_transcode stream out warning: Reseting video sync
stream_out_transcode stream out warning: Reseting video sync
stream_out_transcode stream out warning: Reseting video sync
stream_out_transcode stream out warning: Reseting video sync
avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518834, last: 1518837)
avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518835, last: 1518837)
avcodec encoder warning: almost fed libavcodec with a frame in the past (current: 1518836, last: 1518837)
avcodec encoder warning: almost fed libavcodec with two frames with the same PTS (1518837)
stream_out_transcode stream out warning: Reseting video sync
stream_out_transcode stream out warning: Reseting video sync -
libavcodec : ffprobe on file encoded with FFV1 codec reports "read_quant_table error"
20 novembre 2016, par Ali AlidoustI’m using the following code to encode a series of frames into an mkv or avi file with FFV1 encoding :
HRESULT Session::createContext(LPCSTR filename, UINT width, UINT height, UINT fps_num, UINT fps_den) {
LOG("Exporting to file: ", filename);
AVCodecID codecId = AV_CODEC_ID_FFV1;
this->pixelFormat = AV_PIX_FMT_YUV420P;
this->codec = avcodec_find_encoder(codecId);
RET_IF_NULL(this->codec, "Could not create codec", E_FAIL);
this->oformat = av_guess_format(NULL, filename, NULL);
RET_IF_NULL(this->oformat, "Could not create format", E_FAIL);
this->oformat->video_codec = codecId;
this->width = width;
this->height = height;
this->codecContext = avcodec_alloc_context3(this->codec);
RET_IF_NULL(this->codecContext, "Could not allocate context for the codec", E_FAIL);
this->codecContext->codec = this->codec;
this->codecContext->codec_id = codecId;
this->codecContext->pix_fmt = pixelFormat;
this->codecContext->width = this->width;
this->codecContext->height = this->height;
this->codecContext->time_base.num = fps_den;
this->codecContext->time_base.den = fps_num;
this->codecContext->gop_size = 1;
RET_IF_FAILED_AV(avformat_alloc_output_context2(&fmtContext, this->oformat, NULL, NULL), "Could not allocate format context", E_FAIL);
RET_IF_NULL(this->fmtContext, "Could not allocate format context", E_FAIL);
this->fmtContext->oformat = this->oformat;
this->fmtContext->video_codec_id = codecId;
this->stream = avformat_new_stream(this->fmtContext, this->codec);
RET_IF_NULL(this->stream, "Could not create new stream", E_FAIL);
this->stream->time_base = this->codecContext->time_base;
RET_IF_FAILED_AV(avcodec_parameters_from_context(this->stream->codecpar, this->codecContext), "Could not convert AVCodecContext to AVParameters", E_FAIL);
if (this->fmtContext->oformat->flags & AVFMT_GLOBALHEADER)
{
this->codecContext->flags |= CODEC_FLAG_GLOBAL_HEADER;
}
av_opt_set_int(this->codecContext->priv_data, "coder", 0, 0);
av_opt_set_int(this->codecContext->priv_data, "context", 1, 0);
av_opt_set_int(this->codecContext->priv_data, "slicecrc", 1, 0);
//av_opt_set_int(this->codecContext->priv_data, "slicecrc", 1, 0);
//av_opt_set_int(this->codecContext->priv_data, "pix_fmt", pixelFormat, 0);
RET_IF_FAILED_AV(avcodec_open2(this->codecContext, this->codec, NULL), "Could not open codec", E_FAIL);
RET_IF_FAILED_AV(avio_open(&this->fmtContext->pb, filename, AVIO_FLAG_WRITE), "Could not open output file", E_FAIL);
RET_IF_NULL(this->fmtContext->pb, "Could not open output file", E_FAIL);
RET_IF_FAILED_AV(avformat_write_header(this->fmtContext, NULL), "Could not write header", E_FAIL);
frame = av_frame_alloc();
RET_IF_NULL(frame, "Could not allocate frame", E_FAIL);
frame->format = this->codecContext->pix_fmt;
frame->width = width;
frame->height = height;
return S_OK;
}
HRESULT Session::writeFrame(IMFSample * pSample) {
IMFMediaBuffer *mediaBuffer = NULL;
BYTE *pDataNV12 = NULL;
DWORD length;
RET_IF_FAILED(pSample->ConvertToContiguousBuffer(&mediaBuffer), "Could not convert IMFSample to contagiuous buffer", E_FAIL);
RET_IF_FAILED(mediaBuffer->GetCurrentLength(&length), "Could not get buffer length", E_FAIL);
RET_IF_FAILED(mediaBuffer->Lock(&pDataNV12, NULL, NULL), "Could not lock the buffer", E_FAIL);
BYTE *pDataYUV420P = new BYTE[length];
this->convertNV12toYUV420P(pDataNV12, pDataYUV420P, this->width, this->height);
RET_IF_FAILED(av_image_fill_arrays(frame->data, frame->linesize, pDataYUV420P, pixelFormat, this->width, this->height, 1), "Could not fill the frame with data from the buffer", E_FAIL);
LOG_IF_FAILED(mediaBuffer->Unlock(), "Could not unlock the buffer");
frame->pts = av_rescale_q(this->pts++, this->codecContext->time_base, this->stream->time_base);
AVPacket pkt;
av_init_packet(&pkt);
pkt.data = NULL;
pkt.size = 0;
RET_IF_FAILED_AV(avcodec_send_frame(this->codecContext, frame), "Could not send the frame to the encoder", E_FAIL);
delete[] pDataYUV420P;
if (SUCCEEDED(avcodec_receive_packet(this->codecContext, &pkt))) {
RET_IF_FAILED_AV(av_interleaved_write_frame(this->fmtContext, &pkt), "Could not write the received packet.", E_FAIL);
}
av_packet_unref(&pkt);
return S_OK;
}
HRESULT Session::endSession() {
LOG("Ending session...");
LOG("Closing files...")
LOG_IF_FAILED_AV(av_write_trailer(this->fmtContext), "Could not finalize the output file.");
LOG_IF_FAILED_AV(avio_close(this->fmtContext->pb), "Could not close the output file.");
LOG_IF_FAILED_AV(avcodec_close(this->codecContext), "Could not close the codec.");
av_free(this->codecContext);
LOG("Done.")
return S_OK;
}The problem is that the generated file is not playable in either VLC or MPC-HC. However, MPC-HC reports following info in file properties :
General
Unique ID : 202978442142665779317960161865934977227 (0x98B439D9BE859109BD5EC00A62A238CB)
Complete name : T:\Test.mkv
Format : Matroska
Format version : Version 4 / Version 2
File size : 24.6 MiB
Duration : 147ms
Overall bit rate : 1 401 Mbps
Writing application : Lavf57.57.100
Writing library : Lavf57.57.100
Video
ID : 1
Format : FFV1
Format version : Version 0
Codec ID : V_MS/VFW/FOURCC / FFV1
Duration : 147ms
Width : 1 280 pixels
Height : 720 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 1 000.000 fps
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Compression mode : Lossless
Default : Yes
Forced : No
DURATION : 00:00:00.147000000
coder_type : Golomb RiceSomething to note is that it reports 1000 FPS which is weird since I’ve set
AVCodecContext::time_base
in the code.UPDATE 1 :
I managed to set the correct fps by setting
time_base
property of the stream :this->stream->time_base.den = fps_num;
this->stream->time_base.num = fps_den;VLC plays the output file but it shows VLC logo instead of the video, as if there is no video stream in the file.
UPDATE 2 :
Cleaned up the code. Now if I set
codecId = AV_CODEC_ID_MPEG2VIDEO
the output file is valid and is played in both VLC and MPC-HC. Usingffprobe
on the file with FFV1 encoding yields the following result :C:\root\apps\ffmpeg>ffprobe.exe t:\test.avi
ffprobe version 3.2 Copyright (c) 2007-2016 the FFmpeg developers
built with gcc 5.4.0 (GCC)
configuration: --disable-static --enable-shared --enable-gpl --enable-version3 --disable-w32threads --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-libebur128 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib
libavutil 55. 34.100 / 55. 34.100
libavcodec 57. 64.100 / 57. 64.100
libavformat 57. 56.100 / 57. 56.100
libavdevice 57. 1.100 / 57. 1.100
libavfilter 6. 65.100 / 6. 65.100
libswscale 4. 2.100 / 4. 2.100
libswresample 2. 3.100 / 2. 3.100
libpostproc 54. 1.100 / 54. 1.100
[ffv1 @ 00000000006b83a0] read_quant_table error
Input #0, avi, from 't:\test.avi':
Metadata:
encoder : Lavf57.56.100
Duration: 00:00:04.94, start: 0.000000, bitrate: 107005 kb/s
Stream #0:0: Video: ffv1 (FFV1 / 0x31564646), yuv420p, 1280x720, 107717 kb/s, 29.97 fps, 29.97 tbr, 29.97 tbn, 29.97 tbc -
FFMPEG "buffer queue overflow, dropping" with trim and atrim filters
11 décembre 2016, par Prasanna MahendiranIn FFMPEG I am actually trimming and concating a 24 FPS video. When I apply a complex filter
ffmpeg -i sample.mp4 -filter_complex \
"[0:v]setpts = PTS-STARTPTS[bv];
[bv]split=6[v0][v1][v2][v3][v4][v5];
[v0]trim=start_frame=1:end_frame=142,loop=1:1:1,setpts=N/FRAME_RATE/TB[0v];
[v1]trim=start_frame=846:end_frame=878,loop=1:1:1,setpts=N/FRAME_RATE/TB[1v];
[v2]trim=start_frame=57:end_frame=114,loop=1:1:1,setpts=N/FRAME_RATE/TB[2v];
[v3]trim=start_frame=865:end_frame=885,loop=1:1:1,setpts=N/FRAME_RATE/TB[3v];
[v4]trim=start_frame=70:end_frame=155,loop=1:1:1,setpts=N/FRAME_RATE/TB[4v];
[v5]trim=start_frame=155:end_frame=909,loop=1:1:1,setpts=N/FRAME_RATE/TB[5v];
[0:a]asplit=6[a0][a1][a2][a3][a4][a5];
[a0]atrim=0.041666666666666664:5.917,asetpts=N/SR/TB[0a];
[a1]atrim=35.256:36.603,asetpts=N/SR/TB[1a];
[a2]atrim=2.379:4.767,asetpts=N/SR/TB[2a];
[a3]atrim=36.024:36.859,asetpts=N/SR/TB[3a];
[a4]atrim=2.93:6.438172,asetpts=N/SR/TB[4a];
[a5]atrim=6.438172:37.895,asetpts=N/SR/TB[5a];
[0v][0a][1v][1a][2v][2a][3v][3a][4v][4a][5v][5a]concat=n=6:v=1:a=1[vv][aa]"\
-map "[vv]" -map "[aa]" output.mp4I am getting "buffer queue overflow, dropping" error. The resultant video and audio is still and not working properly.
ffmpeg version 3.2-1~16.04.york1 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.4.1 (Ubuntu 5.4.1-3ubuntu1~ubuntu16.04.1york0) 20161019
configuration: --prefix=/usr --extra-version='1~16.04.york1' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-libtesseract --disable-stripping --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libebur128 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librubberband --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-opengl --enable-sdl2 --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-openal --enable-frei0r --enable-libopencv --enable-libx264 --enable-chromaprint --enable-shared
libavutil 55. 34.100 / 55. 34.100
libavcodec 57. 64.100 / 57. 64.100
libavformat 57. 56.100 / 57. 56.100
libavdevice 57. 1.100 / 57. 1.100
libavfilter 6. 65.100 / 6. 65.100
libavresample 3. 1. 0 / 3. 1. 0
libswscale 4. 2.100 / 4. 2.100
libswresample 2. 3.100 / 2. 3.100
libpostproc 54. 1.100 / 54. 1.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'sample.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
track : 0
artist :
album :
date : 0
genre :
lyrics :
title :
encoder : Lavf56.36.100
Duration: 00:00:37.90, start: 0.000000, bitrate: 951 kb/s
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 640x480 [SAR 1:1 DAR 4:3], 820 kb/s, 24 fps, 24 tbr, 12288 tbn, 48 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 126 kb/s (default)
Metadata:
handler_name : SoundHandler
File 'output.mp4' already exists. Overwrite ? [y/N] y
[libx264 @ 0x55650097a540] using SAR=1/1
[libx264 @ 0x55650097a540] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
[libx264 @ 0x55650097a540] profile High, level 3.0
[libx264 @ 0x55650097a540] 264 - core 148 r2643 5c65704 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - 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=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=24 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 'output.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
track : 0
artist :
album :
date : 0
genre :
lyrics :
title :
encoder : Lavf57.56.100
Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 640x480 [SAR 1:1 DAR 4:3], q=-1--1, 24 fps, 12288 tbn, 24 tbc (default)
Metadata:
encoder : Lavc57.64.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream #0:1: Audio: aac (LC) ([64][0][0][0] / 0x0040), 44100 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
encoder : Lavc57.64.100 aac
Stream mapping:
Stream #0:0 (h264) -> setpts
Stream #0:1 (aac) -> asplit
concat:out:v0 -> Stream #0:0 (libx264)
concat:out:a0 -> Stream #0:1 (aac)
Press [q] to stop, [?] for help
[Parsed_concat_33 @ 0x55650097b420] Buffer queue overflow, dropping. 471.5kbits/s speed=4.94x
Last message repeated 201 times
[Parsed_concat_33 @ 0x55650097b420] Buffer queue overflow, dropping. 522.9kbits/s speed=3.89x
Last message repeated 1266 times
[Parsed_concat_33 @ 0x55650097b420] Buffer queue overflow, dropping. 557.0kbits/s speed=3.28x
Last message repeated 48 times
[output stream 0:1 @ 0x556500947e20] 100 buffers queued in output stream 0:1, something may be wrong.
[Parsed_concat_33 @ 0x55650097b420] Buffer queue overflow, dropping. 718.6kbits/s speed=3.46x
Last message repeated 19 times
[output stream 0:0 @ 0x5565009785c0] 100 buffers queued in output stream 0:0, something may be wrong.
frame= 1091 fps=117 q=-1.0 Lsize= 2795kB time=00:00:45.51 bitrate= 503.1kbits/s dup=475 drop=0 speed=4.88x
video:2455kB audio:316kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.861779%
[libx264 @ 0x55650097a540] frame I:8 Avg QP:19.26 size: 24207
[libx264 @ 0x55650097a540] frame P:409 Avg QP:21.33 size: 4108
[libx264 @ 0x55650097a540] frame B:674 Avg QP:27.46 size: 949
[libx264 @ 0x55650097a540] consecutive B-frames: 10.3% 13.9% 24.5% 51.3%
[libx264 @ 0x55650097a540] mb I I16..4: 9.9% 57.0% 33.1%
[libx264 @ 0x55650097a540] mb P I16..4: 3.6% 7.6% 2.9% P16..4: 33.0% 10.6% 3.0% 0.0% 0.0% skip:39.2%
[libx264 @ 0x55650097a540] mb B I16..4: 0.4% 0.8% 0.4% B16..8: 24.5% 2.6% 0.2% direct: 0.5% skip:70.5% L0:55.5% L1:41.8% BI: 2.7%
[libx264 @ 0x55650097a540] 8x8 transform intra:53.8% inter:66.7%
[libx264 @ 0x55650097a540] coded y,uvDC,uvAC intra: 44.6% 50.0% 14.8% inter: 6.2% 7.7% 0.2%
[libx264 @ 0x55650097a540] i16 v,h,dc,p: 22% 28% 17% 33%
[libx264 @ 0x55650097a540] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 20% 23% 28% 3% 4% 3% 11% 3% 5%
[libx264 @ 0x55650097a540] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 26% 26% 16% 2% 5% 3% 16% 3% 3%
[libx264 @ 0x55650097a540] i8c dc,h,v,p: 60% 22% 13% 6%
[libx264 @ 0x55650097a540] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x55650097a540] ref P L0: 72.6% 8.4% 15.1% 3.9%
[libx264 @ 0x55650097a540] ref B L0: 88.5% 10.7% 0.8%
[libx264 @ 0x55650097a540] ref B L1: 93.3% 6.7%
[libx264 @ 0x55650097a540] kb/s:442.30
[aac @ 0x556500979280] Qavg: 3215.870I tried with other stackoverflow questions but none of them worked. Also I think it is partially because the trim timings are mixed. That is start time can be anywhere between 0-end. When I make it strictly increasing it is working fine.