
Recherche avancée
Médias (2)
-
GetID3 - Bloc informations de fichiers
9 avril 2013, par
Mis à jour : Mai 2013
Langue : français
Type : Image
-
GetID3 - Boutons supplémentaires
9 avril 2013, par
Mis à jour : Avril 2013
Langue : français
Type : Image
Autres articles (76)
-
Configurer la prise en compte des langues
15 novembre 2010, parAccéder à la configuration et ajouter des langues prises en compte
Afin de configurer la prise en compte de nouvelles langues, il est nécessaire de se rendre dans la partie "Administrer" du site.
De là, dans le menu de navigation, vous pouvez accéder à une partie "Gestion des langues" permettant d’activer la prise en compte de nouvelles langues.
Chaque nouvelle langue ajoutée reste désactivable tant qu’aucun objet n’est créé dans cette langue. Dans ce cas, elle devient grisée dans la configuration et (...) -
Les formats acceptés
28 janvier 2010, parLes commandes suivantes permettent d’avoir des informations sur les formats et codecs gérés par l’installation local de ffmpeg :
ffmpeg -codecs ffmpeg -formats
Les format videos acceptés en entrée
Cette liste est non exhaustive, elle met en exergue les principaux formats utilisés : h264 : H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 m4v : raw MPEG-4 video format flv : Flash Video (FLV) / Sorenson Spark / Sorenson H.263 Theora wmv :
Les formats vidéos de sortie possibles
Dans un premier temps on (...) -
Emballe médias : à quoi cela sert ?
4 février 2011, parCe plugin vise à gérer des sites de mise en ligne de documents de tous types.
Il crée des "médias", à savoir : un "média" est un article au sens SPIP créé automatiquement lors du téléversement d’un document qu’il soit audio, vidéo, image ou textuel ; un seul document ne peut être lié à un article dit "média" ;
Sur d’autres sites (8569)
-
FFMPEG C api h.264 encoding / MPEG2 ts streaming problems
3 mars 2015, par ccoralClass prototype is as follows :
#ifndef _FULL_MOTION_VIDEO_STREAM_H_
#define _FULL_MOTION_VIDEO_STREAM_H_
#include <memory>
#include <string>
#ifndef INT64_C
# define INT64_C(c) (c ## LL)
# define UINT64_C(c) (c ## ULL)
#endif
extern "C"
{
#include "libavutil/opt.h"
#include "libavcodec/avcodec.h"
#include "libavutil/channel_layout.h"
#include "libavutil/common.h"
#include "libavutil/imgutils.h"
#include "libavutil/mathematics.h"
#include "libavutil/samplefmt.h"
#include "libavformat/avformat.h"
#include <libavutil></libavutil>timestamp.h>
#include <libswscale></libswscale>swscale.h>
#include <libswresample></libswresample>swresample.h>
}
class FMVStream
{
public:
struct OutputStream
{
OutputStream() :
st(0),
next_pts(0),
samples_count(0),
frame(0),
tmpFrame(0),
sws_ctx(0)
{
}
AVStream *st;
/* pts of the next frame that will be generated */
int64_t next_pts;
int samples_count;
AVFrame *frame;
AVFrame *tmpFrame;
struct SwsContext *sws_ctx;
};
///
/// Constructor
///
FMVStream();
///
/// Destructor
///
~FMVStream();
///
/// Frame encoder helper function
///
/// Encodes a raw RGB frame into the transport stream
///
int EncodeFrame(uint8_t* frame);
///
/// Frame width setter
///
void setFrameWidth(int width);
///
/// Frame width getter
///
int getFrameWidth() const;
///
/// Frame height setter
///
void setFrameHeight(int height);
///
/// Frame height getter
///
int getFrameHeight() const;
///
/// Stream address setter
///
void setStreamAddress(const std::string& address);
///
/// Stream address getter
///
std::string getStreamAddress() const;
private:
///
/// Video Stream creation
///
AVStream* initVideoStream(AVFormatContext* oc);
///
/// Raw frame transcoder
///
/// This will convert the raw RGB frame to a raw YUV frame necessary for h.264 encoding
///
void CopyFrameData(uint8_t* src_frame);
///
/// Video frame allocator
///
AVFrame* AllocPicture(PixelFormat pix_fmt, int width, int height);
///
/// Debug print helper function
///
void print_sdp(AVFormatContext **avc, int n);
///
/// Write the frame to the stream
///
int write_frame(AVFormatContext *fmt_ctx, const AVRational *time_base, AVStream *st, AVPacket *pkt);
///
/// initialize the frame data
///
void initFrame();
// formatting data needed for output streaming and the output container (MPEG 2 TS)
AVOutputFormat* format;
AVFormatContext* format_ctx;
// structure container for our video stream
OutputStream stream;
AVIOContext* io_ctx;
std::string streamFilename;
int frameWidth;
int frameHeight;
};
#endif
</string></memory>This block starts the class declaration.
#include "FullMotionVideoStream.h"
#include <stdexcept>
#include <iostream>
FMVStream::FMVStream()
: format(0),
format_ctx(0),
stream(),
io_ctx(0),
streamFilename("test.mpeg"),
frameWidth(640),
frameHeight(480)
{
// Register all formats and codecs
av_register_all();
avcodec_register_all();
// Init networking
avformat_network_init();
// Find format
this->format = av_guess_format("mpegts", NULL, NULL);
// allocate the AVFormatContext
this->format_ctx = avformat_alloc_context();
if (!this->format_ctx)
{
throw std::runtime_error("avformat_alloc_context failed");
}
this->format_ctx->oformat = this->format;
//sprintf_s(this->format_ctx->filename, sizeof(this->format_ctx->filename), "%s", this->streamFilename.c_str());
this->stream.st = initVideoStream(this->format_ctx);
this->initFrame();
// Allocate AVIOContext
int ret = avio_open(&this->io_ctx, this->streamFilename.c_str(), AVIO_FLAG_WRITE);
if (ret != 0)
{
throw std::runtime_error("avio_open failed");
}
this->format_ctx->pb = this->io_ctx;
// Print some debug info about the format
av_dump_format(this->format_ctx, 0, NULL, 1);
// Begin the output by writing the container header
avformat_write_header(this->format_ctx, NULL);
AVFormatContext* ac[] = { this->format_ctx };
print_sdp(ac, 1);
}
FMVStream::~FMVStream()
{
av_write_trailer(this->format_ctx);
avcodec_close(this->stream.st->codec);
avio_close(io_ctx);
avformat_free_context(this->format_ctx);
av_frame_free(&this->stream.frame);
av_free(this->format);
}
AVFrame* FMVStream::AllocPicture(PixelFormat pix_fmt, int width, int height)
{
// Allocate a frame
AVFrame* frame = av_frame_alloc();
if (frame == nullptr)
{
throw std::runtime_error("avcodec_alloc_frame failed");
}
if (av_image_alloc(frame->data, frame->linesize, width, height, pix_fmt, 1) < 0)
{
throw std::runtime_error("av_image_alloc failed");
}
frame->width = width;
frame->height = height;
frame->format = pix_fmt;
return frame;
}
void FMVStream::print_sdp(AVFormatContext **avc, int n)
{
char sdp[2048];
av_sdp_create(avc, n, sdp, sizeof(sdp));
printf("SDP:\n%s\n", sdp);
fflush(stdout);
}
AVStream* FMVStream::initVideoStream(AVFormatContext *oc)
{
AVStream* st = avformat_new_stream(oc, NULL);
if (st == nullptr)
{
std::runtime_error("Could not alloc stream");
}
AVCodec* codec = avcodec_find_encoder(AV_CODEC_ID_H264);
if (codec == nullptr)
{
throw std::runtime_error("couldn't find mpeg2 encoder");
}
st->codec = avcodec_alloc_context3(codec);
st->codec->codec_id = AV_CODEC_ID_H264;
st->codec->codec_type = AVMEDIA_TYPE_VIDEO;
st->codec->bit_rate = 400000;
st->codec->width = this->frameWidth;
st->codec->height = this->frameHeight;
st->time_base.num = 1;
st->time_base.den = 30;
st->codec->framerate.num = 1;
st->codec->framerate.den = 30;
st->codec->max_b_frames = 2;
st->codec->gop_size = 12;
st->codec->pix_fmt = PIX_FMT_YUV420P;
st->id = oc->nb_streams - 1;
if (oc->oformat->flags & AVFMT_GLOBALHEADER)
{
st->codec->flags |= CODEC_FLAG_GLOBAL_HEADER;
}
// option setup for the codec
av_opt_set(st->codec->priv_data, "profile", "baseline", AV_OPT_SEARCH_CHILDREN);
if (avcodec_open2(st->codec, codec, NULL) < 0)
{
throw std::runtime_error("avcodec_open failed");
}
return st;
}
void FMVStream::initFrame()
{
// Allocate a tmp frame for converting our raw RGB data to YUV for encoding
this->stream.tmpFrame = this->AllocPicture(PIX_FMT_RGB24, this->frameWidth, this->frameHeight);
// Allocate a main frame
this->stream.frame = this->AllocPicture(PIX_FMT_YUV420P, this->frameWidth, this->frameHeight);
}
</iostream></stdexcept>This block is attempting to convert from the raw RGB to our needed YUV format for h.264 encoding.
void FMVStream::CopyFrameData(uint8_t* data)
{
// fill image with our raw RGB data
//avpicture_alloc((AVPicture*)this->stream.tmpFrame, PIX_FMT_RGB24, this->stream.st->codec->width, this->stream.st->codec->height);
int numBytes = avpicture_get_size(PIX_FMT_RGB24, this->stream.st->codec->width, this->stream.st->codec->height);
uint8_t* buffer = (uint8_t*) av_malloc(numBytes * sizeof(uint8_t));
avpicture_fill((AVPicture*)this->stream.tmpFrame, buffer, PIX_FMT_RGB24, this->stream.st->codec->width, this->stream.st->codec->height);
for (int y = 0; y < this->stream.st->codec->height; y++)
{
for (int x = 0; x < this->stream.st->codec->width; x++)
{
int offset = 3 * (x + y * this->stream.st->codec->width);
this->stream.tmpFrame->data[0][offset + 0] = data[x + y * this->stream.st->codec->width]; // R
this->stream.tmpFrame->data[0][offset + 1] = data[x + y * this->stream.st->codec->width + 1]; // G
this->stream.tmpFrame->data[0][offset + 2] = data[x + y * this->stream.st->codec->width + 2]; // B
}
}
// convert the RGB frame to a YUV frame using the sws Context
this->stream.sws_ctx = sws_getContext(this->stream.st->codec->width, this->stream.st->codec->height, PIX_FMT_RGB32, this->stream.st->codec->width, this->stream.st->codec->height, PIX_FMT_YUV420P, SWS_FAST_BILINEAR, NULL, NULL, NULL);
// use the scale function to transcode this raw frame to the correct type
sws_scale(this->stream.sws_ctx, this->stream.tmpFrame->data, this->stream.tmpFrame->linesize, 0, this->stream.st->codec->height, this->stream.frame->data, this->stream.frame->linesize);
}This is the block that encodes the raw data to h.264, and then send it out the Mpeg2 ts. I believe the problem lies within this block. I can put a break point in my write frame block and see that frames are being written, however, opening the resulting file in VLC results in a blank video. The file is approx 2Mb.
int FMVStream::EncodeFrame(uint8_t* data)
{
AVCodecContext* c = this->stream.st->codec;
AVRational one;
one.den = one.num = 1;
// check to see if we want to keep writing frames we can probably change this to a toggle switch
if (av_compare_ts(this->stream.next_pts, this->stream.st->codec->time_base, 10, one) >= 0)
{
this->stream.frame = nullptr;
}
else
{
// Convert and load the frame data into the AVFrame struct
CopyFrameData(data);
}
// setup the timestamp stepping
AVPacket pkt = { 0 };
av_init_packet(&pkt);
this->stream.frame->pts = (int64_t)((1.0 / this->stream.st->codec->framerate.den) * 90000.0 * this->stream.next_pts++);
int gotPacket, out_size, ret;
out_size = avcodec_encode_video2(c, &pkt, this->stream.frame, &gotPacket);
if (gotPacket == 1)
{
ret = write_frame(this->format_ctx, &c->time_base, this->stream.st, &pkt);
}
else
{
ret = 0;
}
if (ret < 0)
{
std::cerr << "Error writing video frame" << std::endl;
}
av_free_packet(&pkt);
return ((this->stream.frame != nullptr) || gotPacket) ? 0 : 1;
}
int FMVStream::write_frame(AVFormatContext *fmt_ctx, const AVRational *time_base, AVStream *st, AVPacket *pkt)
{
/* rescale output packet timestamp values from codec to stream timebase */
av_packet_rescale_ts(pkt, *time_base, st->time_base);
pkt->stream_index = st->index;
return av_interleaved_write_frame(fmt_ctx, pkt);
}
void FMVStream::setFrameWidth(const int width)
{
this->frameWidth = width;
}
int FMVStream::getFrameWidth() const
{
return this->frameWidth;
}
void FMVStream::setFrameHeight(const int height)
{
this->frameHeight = height;
}
int FMVStream::getFrameHeight() const
{
return this->frameHeight;
}
void FMVStream::setStreamAddress(const std::string& address)
{
this->streamFilename = address;
}
std::string FMVStream::getStreamAddress() const
{
return this->streamFilename;
}Here is the Main function.
#include "FullMotionVideoStream.h"
#include <iostream>
#include <thread>
#include <chrono>
int main(int argc, char** argv)
{
FMVStream* fmv = new FMVStream;
fmv->setFrameWidth(640);
fmv->setFrameHeight(480);
std::cout << "Streaming Address: " << fmv->getStreamAddress() << std::endl;
// create our alternating frame of black and white to test the streaming functionality
uint8_t white[640 * 480 * sizeof(uint8_t) * 3];
uint8_t black[640 * 480 * sizeof(uint8_t) * 3];
std::memset(white, 255, 640 * 480 * sizeof(uint8_t) * 3);
std::memset(black, 0, 640 * 480 * sizeof(uint8_t)* 3);
for (auto i = 0; i < 100; i++)
{
auto ret = fmv->EncodeFrame(white);
if (ret != 0)
{
std::cerr << "There was a problem encoding the frame: " << i << std::endl;
}
std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
for (auto i = 0; i < 100; i++)
{
auto ret = fmv->EncodeFrame(black);
if (ret != 0)
{
std::cerr << "There was a problem encoding the frame: " << i << std::endl;
}
std::this_thread::sleep_for(std::chrono::milliseconds(10));
}
delete fmv;
}
</chrono></thread></iostream>Here is the resultant output via the console / my print SDP function.
[libx264 @ 000000ac95f58440] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
AVX FMA3 AVX2 LZCNT BMI2
[libx264 @ 000000ac95f58440] profile Constrained Baseline, level 3.0
Output #0, mpegts, to '(null)':
Stream #0:0: Video: h264 (libx264), yuv420p, 640x480, q=-1--1, 400 kb/s, 30
tbn
SDP:
v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
t=0 0
a=tool:libavformat 56.23.104
m=video 0 RTP/AVP 96
b=AS:400
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1
a=control:streamid=0
Streaming Address: test.mpeg
[libx264 @ 000000ac95f58440] frame I:45 Avg QP: 0.51 size: 1315
[libx264 @ 000000ac95f58440] frame P:136 Avg QP: 0.29 size: 182
[libx264 @ 000000ac95f58440] mb I I16..4: 99.7% 0.0% 0.3%
[libx264 @ 000000ac95f58440] mb P I16..4: 0.1% 0.0% 0.1% P16..4: 0.1% 0.0
% 0.0% 0.0% 0.0% skip:99.7%
[libx264 @ 000000ac95f58440] final ratefactor: -68.99
[libx264 @ 000000ac95f58440] coded y,uvDC,uvAC intra: 0.5% 0.5% 0.5% inter: 0.0%
0.1% 0.1%
[libx264 @ 000000ac95f58440] i16 v,h,dc,p: 96% 0% 3% 0%
[libx264 @ 000000ac95f58440] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 1% 10% 85% 0% 3%
0% 1% 0% 0%
[libx264 @ 000000ac95f58440] i8c dc,h,v,p: 100% 0% 0% 0%
[libx264 @ 000000ac95f58440] ref P L0: 46.8% 25.2% 28.0%
[libx264 @ 000000ac95f58440] kb/s:0.03I know there are probably many issues with this program, I am very new with FFMPEG and multimedia programming in general. Ive used many pieces of code found through searching google/ stack overflow to get to this point as is. The file has a good size but comes up as length 0.04 tells me that my time stamping must be broken between the frames / pkts, but I am unsure on how to fix this issue.
I tried inspecting the file with ffmpeg.exe using ffmpeg -i and outputting to a regular TS. It seems my code works more then I originally intended however, I am simply trying to output a bunch of all white frames.
ffmpeg -i test.mpeg test.ts
ffmpeg version N-70125-g6c9537b Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.9.2 (GCC)
configuration: --disable-static --enable-shared --enable-gpl --enable-version3
--disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --ena
ble-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --e
nable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-lib
gsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencor
e-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enabl
e-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-l
ibtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-
libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-l
ibwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --ena
ble-lzma --enable-decklink --enable-zlib
libavutil 54. 19.100 / 54. 19.100
libavcodec 56. 26.100 / 56. 26.100
libavformat 56. 23.104 / 56. 23.104
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 11.101 / 5. 11.101
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, mpegts, from 'test.mpeg':
Duration: 00:00:00.04, start: 0.000000, bitrate: 24026 kb/s
Program 1
Metadata:
service_name : Service01
service_provider: FFmpeg
Stream #0:0[0x100]: Video: h264 (Constrained Baseline) ([27][0][0][0] / 0x00
1B), yuv420p, 640x480, 25 fps, 25 tbr, 90k tbn, 50 tbc
File 'test.ts' already exists. Overwrite ? [y/N] y
Output #0, mpegts, to 'test.ts':
Metadata:
encoder : Lavf56.23.104
Stream #0:0: Video: mpeg2video, yuv420p, 640x480, q=2-31, 200 kb/s, 25 fps,
90k tbn, 25 tbc
Metadata:
encoder : Lavc56.26.100 mpeg2video
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> mpeg2video (native))
Press [q] to stop, [?] for help
frame= 3 fps=0.0 q=2.0 Lsize= 9kB time=00:00:00.08 bitrate= 883.6kbits/
s dup=0 drop=178
video:7kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing ove
rhead: 22.450111% -
ALSA buffer xrun induced by low quality source in ffmpeg capture
24 juin 2015, par Peter BecichI am attempting to transfer some old Video 8 tapes to my computer, though an EasyCap USB stick and the motherboard’s sound line-in, on Ubuntu. I believe the arguments are correctly laid out below to capture from two independent streams, and encode them both into the output MP4 file.
Edit :
I can simplify the question a bit, now.
ALSA buffer overrun (or underrun ?) is induced by the unreliable/noisy audio source. For instance, if ffmpeg captures the beginning of tape playback, this causes "buffer xrun" far beyond when the tape gets up to speed and playback should be normal.
It is interesting that the bitrate shown in the ffmpeg log shoots up higher than normal when it’s producing a garbage output ! (Is this bitrate a sum of of audio and video bitrates ?)
I’ve tried a couple of audio encoding codecs, and had the same problem.
Using
libfdk_aac
:Metadata:
encoder : Lavf56.15.102
Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv422p, 640x480, q=-1--1, 29.97 fps, 11988 tbn, 29.97 tbc
Metadata:
encoder : Lavc56.13.100 libx264
Stream #0:1: Audio: aac (libfdk_aac) ([64][0][0][0] / 0x0040), 48000 Hz, mono, s16, 128 kb/s
Metadata:
encoder : Lavc56.13.100 libfdk_aac
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
Stream #1:0 -> #0:1 (pcm_s16le (native) -> aac (libfdk_aac))
[alsa @ 0x22038a0] ALSA buffer xrun. 0kB time=00:00:00.00 bitrate=N/A
[alsa @ 0x22038a0] ALSA buffer xrun.1934kB time=00:00:02.76 bitrate=5723.5kbits/s
[alsa @ 0x22038a0] ALSA buffer xrun.4795kB time=00:00:05.49 bitrate=7150.1kbits/s
[alsa @ 0x22038a0] ALSA buffer xrun.7668kB time=00:00:08.21 bitrate=7646.1kbits/s
[alsa @ 0x22038a0] ALSA buffer xrun.1475kB time=00:00:10.94 bitrate=8588.9kbits/s
[alsa @ 0x22038a0] ALSA buffer xrun.3822kB time=00:00:13.66 bitrate=8289.0kbits/s
[alsa @ 0x22038a0] ALSA buffer xrun.5388kB time=00:00:16.38 bitrate=7695.0kbits/s
[alsa @ 0x22038a0] ALSA buffer xrun.6896kB time=00:00:19.10 bitrate=7244.0kbits/s
[alsa @ 0x22038a0] ALSA buffer xrun.8980kB time=00:00:21.84 bitrate=7118.8kbits/s
[alsa @ 0x22038a0] ALSA buffer xrun.2032kB time=00:00:24.55 bitrate=7349.3kbits/s
[alsa @ 0x22038a0] ALSA buffer xrun.4612kB time=00:00:27.27 bitrate=7391.1kbits/s
[alsa @ 0x22038a0] ALSA buffer xrun.6660kB time=00:00:29.98 bitrate=7284.6kbits/s
[alsa @ 0x22038a0] ALSA buffer xrun.9123kB time=00:00:32.68 bitrate=7299.3kbits/s
[alsa @ 0x22038a0] ALSA buffer xrun.0641kB time=00:00:35.39 bitrate=7091.7kbits/s
[alsa @ 0x22038a0] ALSA buffer xrun.2601kB time=00:00:38.13 bitrate=7002.6kbits/s
[alsa @ 0x22038a0] ALSA buffer xrun.5828kB time=00:00:40.87 bitrate=7181.0kbits/s
[alsa @ 0x22038a0] ALSA buffer xrun.8481kB time=00:00:43.60 bitrate=7229.9kbits/s
[alsa @ 0x22038a0] ALSA buffer xrun.1461kB time=00:00:46.34 bitrate=7328.0kbits/s
[alsa @ 0x22038a0] ALSA buffer xrun.3982kB time=00:00:49.06 bitrate=7342.7kbits/s
[alsa @ 0x22038a0] ALSA buffer xrun.6565kB time=00:00:51.77 bitrate=7367.8kbits/s
[alsa @ 0x22038a0] ALSA buffer xrun.9718kB time=00:00:54.51 bitrate=7471.3kbits/s
[alsa @ 0x22038a0] ALSA buffer xrun.2341kB time=00:00:57.25 bitrate=7489.2kbits/s
^Cframe= 1760 fps= 29 q=-1.0 Lsize= 53946kB time=00:01:00.04 bitrate=7360.3kbits/s
video:53880kB audio:53kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.022994%
[libx264 @ 0x2217ac0] frame I:8 Avg QP:24.00 size: 55686
[libx264 @ 0x2217ac0] frame P:1752 Avg QP:27.66 size: 31237
[libx264 @ 0x2217ac0] mb I I16..4: 100.0% 0.0% 0.0%
[libx264 @ 0x2217ac0] mb P I16..4: 15.0% 0.0% 0.0% P16..4: 80.2% 0.0% 0.0% 0.0% 0.0% skip: 4.8%
[libx264 @ 0x2217ac0] coded y,uvDC,uvAC intra: 45.3% 86.6% 59.4% inter: 65.7% 81.3% 11.5%
[libx264 @ 0x2217ac0] i16 v,h,dc,p: 40% 25% 26% 9%
[libx264 @ 0x2217ac0] i8c dc,h,v,p: 45% 24% 19% 12%
[libx264 @ 0x2217ac0] kb/s:7516.07
Received signal 2: terminating.Using
libvorbis
:Metadata:
encoder : Lavf56.15.102
Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv422p, 640x480, q=-1--1, 29.97 fps, 11988 tbn, 29.97 tbc
Metadata:
encoder : Lavc56.13.100 libx264
Stream #0:1: Audio: vorbis (libvorbis) ([221][0][0][0] / 0x00DD), 48000 Hz, mono, fltp, 128 kb/s
Metadata:
encoder : Lavc56.13.100 libvorbis
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
Stream #1:0 -> #0:1 (pcm_s16le (native) -> vorbis (libvorbis))
[alsa @ 0x1a948a0] ALSA buffer xrun. 0kB time=00:00:00.00 bitrate=N/A
[alsa @ 0x1a948a0] ALSA buffer xrun. 402kB time=00:00:04.37 bitrate= 752.3kbits/s
[alsa @ 0x1a948a0] ALSA buffer xrun.4122kB time=00:00:08.80 bitrate=3833.0kbits/s
[alsa @ 0x1a948a0] ALSA buffer xrun.8722kB time=00:00:13.14 bitrate=5436.3kbits/s
[alsa @ 0x1a948a0] ALSA buffer xrun.3903kB time=00:00:17.51 bitrate=6502.2kbits/s
[alsa @ 0x1a948a0] ALSA buffer xrun.6625kB time=00:00:21.89 bitrate=6221.4kbits/s
[alsa @ 0x1a948a0] ALSA buffer xrun.9548kB time=00:00:26.28 bitrate=6092.5kbits/s
^Cframe= 851 fps= 26 q=-1.0 Lsize= 22018kB time=00:00:30.69 bitrate=5875.3kbits/s
video:21996kB audio:12kB subtitle:0kB other streams:0kB global headers:4kB muxing overhead: 0.044897%
[libx264 @ 0x1aa8ac0] frame I:4 Avg QP:23.50 size: 62405
[libx264 @ 0x1aa8ac0] frame P:847 Avg QP:25.58 size: 26297
[libx264 @ 0x1aa8ac0] mb I I16..4: 100.0% 0.0% 0.0%
[libx264 @ 0x1aa8ac0] mb P I16..4: 13.2% 0.0% 0.0% P16..4: 72.0% 0.0% 0.0% 0.0% 0.0% skip:14.8%
[libx264 @ 0x1aa8ac0] coded y,uvDC,uvAC intra: 40.6% 81.0% 58.6% inter: 58.8% 72.7% 8.6%
[libx264 @ 0x1aa8ac0] i16 v,h,dc,p: 41% 28% 22% 9%
[libx264 @ 0x1aa8ac0] i8c dc,h,v,p: 54% 19% 16% 11%
[libx264 @ 0x1aa8ac0] kb/s:6345.60
Received signal 2: terminating.
ffmpeg’s detection of the ALSA stream is seemingly goofed up by the inconsistencies of the tape. In the failure case, only short blips of the tapes audio exist in the output MP4. The audio bitrate of the output file is less than 10 kbps, averaged out across the whole file. The output video seems to be fine, even though the low frames-per-second in the failure case log below.
The audio and video streams can be captured fine for short amounts of time before a source error occurs ; this provides the success case log. The failure case log was created by intentionally making an error in the source streams — turning on the camera makes a brief noisy signal.
Is there a setting that needs to be forced to keep ffmpeg recording the audio stream, even when the tape is blank or noisy ?
Could it be that the libfdk_aac audio encoder is tripped up by the low quality source ?
The relevant line ;
rawvideo
stream is piped to this in script at bottom :ffmpeg -pixel_format uyvy422 -s:v 720x480 -framerate 29.97 -f rawvideo \
-i $PIPE -f alsa -i hw:0,0 -vf scale=w=720:h=540 -vcodec libx264 \
-preset ultrafast -shortest -c:a libfdk_aac -b:a 128k -af pan=1:c0=c0 \
-ar 96000 $OUTFILEThe
ar
argument was one attempt to force recording.ffmpeg log file for (short-lived) success ; high frames-per-second captured :
ffmpeg version 2.5.3 Copyright (c) 2000-2015 the FFmpeg developers
built on Jan 11 2015 17:53:45 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
configuration: --extra-libs=-ldl --prefix=/opt/ffmpeg --enable-avresample --disable-debug --enable-nonfree --enable-gpl --enable-version3 --enable-libpulse --enable-libopencore-amrnb --enable-libopencore-amrwb --disable-decoder=amrnb --disable-decoder=amrwb --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libvorbis --enable-libmp3lame --enable-libopus --enable-libvpx --enable-libspeex --enable-libass --enable-avisynth --enable-libsoxr --enable-libxvid --enable-libvo-aacenc --enable-libvidstab
libavutil 54. 15.100 / 54. 15.100
libavcodec 56. 13.100 / 56. 13.100
libavformat 56. 15.102 / 56. 15.102
libavdevice 56. 3.100 / 56. 3.100
libavfilter 5. 2.103 / 5. 2.103
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, rawvideo, from '/tmp/somagic-pipe':
Duration: N/A, start: 0.000000, bitrate: 165722 kb/s
Stream #0:0: Video: rawvideo (UYVY / 0x59565955), uyvy422, 720x480, 165722 kb/s, 29.97 tbr, 29.97 tbn, 29.97 tbc
Home directory not accessible: Permission denied
Guessed Channel Layout for Input Stream #1.0 : stereo
Input #1, alsa, from 'hw:0,0':
Duration: N/A, start: 1423202268.577088, bitrate: 1536 kb/s
Stream #1:0: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s
No pixel format specified, yuv422p for H.264 encoding chosen.
Use -pix_fmt yuv420p for compatibility with outdated media players.
[Parsed_pan_0 @ 0x3335d60] This syntax is deprecated. Use '|' to separate the list items.
Single channel layout '1' is interpreted as a number of channels, switch to the syntax '1c' otherwise it will be interpreted as a channel layout number in a later version
[Parsed_pan_0 @ 0x3335d60] Pure channel mapping detected: 0
[libx264 @ 0x3364bc0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.1 Cache64
[libx264 @ 0x3364bc0] profile High 4:2:2, level 3.1, 4:2:2 8-bit
[libx264 @ 0x3364bc0] 264 - core 142 r2389 956c8d8 - H.264/MPEG-4 AVC codec - Copyleft 2003-2014 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=25 scenecut=0 intra_refresh=0 rc=crf mbtree=0 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0
Output #0, mp4, to '/home/peterbecich/easycap/Videos/fpv_video_02_05_2015_21_57_48.mp4':
Metadata:
encoder : Lavf56.15.102
Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv422p, 720x540, q=-1--1, 29.97 fps, 11988 tbn, 29.97 tbc
Metadata:
encoder : Lavc56.13.100 libx264
Stream #0:1: Audio: aac (libfdk_aac) ([64][0][0][0] / 0x0040), 96000 Hz, mono, s16, 128 kb/s
Metadata:
encoder : Lavc56.13.100 libfdk_aac
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
Stream #1:0 -> #0:1 (pcm_s16le (native) -> aac (libfdk_aac))
Press [q] to stop, [?] for help
frame= 13 fps=0.0 q=26.0 size= 187kB time=00:00:00.30 bitrate=5102.7kbits/s
frame= 29 fps= 29 q=26.0 size= 469kB time=00:00:00.83 bitrate=4607.6kbits/s
frame= 44 fps= 29 q=26.0 size= 755kB time=00:00:01.33 bitrate=4635.2kbits/s
frame= 59 fps= 29 q=26.0 size= 1024kB time=00:00:01.83 bitrate=4572.1kbits/s
frame= 74 fps= 29 q=26.0 size= 1279kB time=00:00:02.33 bitrate=4486.5kbits/s
frame= 89 fps= 29 q=26.0 size= 1516kB time=00:00:02.83 bitrate=4378.0kbits/s
frame= 104 fps= 29 q=26.0 size= 1752kB time=00:00:03.33 bitrate=4301.0kbits/s
frame= 119 fps= 29 q=26.0 size= 1991kB time=00:00:03.83 bitrate=4251.1kbits/s
frame= 135 fps= 30 q=26.0 size= 2245kB time=00:00:04.37 bitrate=4207.5kbits/s
frame= 150 fps= 30 q=26.0 size= 2524kB time=00:00:04.87 bitrate=4245.0kbits/s
frame= 165 fps= 30 q=26.0 size= 2808kB time=00:00:05.37 bitrate=4282.0kbits/s
frame= 180 fps= 30 q=26.0 size= 3091kB time=00:00:05.87 bitrate=4311.5kbits/s
[rawvideo @ 0x3350640] Invalid buffer size, packet size 65536 < expected frame_size 691200
Error while decoding stream #0:0: Invalid argument
frame= 183 fps= 29 q=-1.0 Lsize= 3247kB time=00:00:06.11 bitrate=4351.5kbits/s
video:3142kB audio:96kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.254788%
[libx264 @ 0x3364bc0] frame I:1 Avg QP:20.00 size: 2289
[libx264 @ 0x3364bc0] frame P:182 Avg QP:25.99 size: 17664
[libx264 @ 0x3364bc0] mb I I16..4: 100.0% 0.0% 0.0%
[libx264 @ 0x3364bc0] mb P I16..4: 78.5% 0.0% 0.0% P16..4: 20.2% 0.0% 0.0% 0.0% 0.0% skip: 1.4%
[libx264 @ 0x3364bc0] coded y,uvDC,uvAC intra: 84.1% 71.5% 18.9% inter: 51.9% 63.5% 0.4%
[libx264 @ 0x3364bc0] i16 v,h,dc,p: 15% 8% 69% 8%
[libx264 @ 0x3364bc0] i8c dc,h,v,p: 50% 19% 24% 7%
[libx264 @ 0x3364bc0] kb/s:4215.02ffmpeg log for failure ; low FPS captured :
ffmpeg version 2.5.3 Copyright (c) 2000-2015 the FFmpeg developers
built on Jan 11 2015 17:53:45 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
configuration: --extra-libs=-ldl --prefix=/opt/ffmpeg --enable-avresample --disable-debug --enable-nonfree --enable-gpl --enable-version3 --enable-libpulse --enable-libopencore-amrnb --enable-libopencore-amrwb --disable-decoder=amrnb --disable-decoder=amrwb --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libvorbis --enable-libmp3lame --enable-libopus --enable-libvpx --enable-libspeex --enable-libass --enable-avisynth --enable-libsoxr --enable-libxvid --enable-libvo-aacenc --enable-libvidstab
libavutil 54. 15.100 / 54. 15.100
libavcodec 56. 13.100 / 56. 13.100
libavformat 56. 15.102 / 56. 15.102
libavdevice 56. 3.100 / 56. 3.100
libavfilter 5. 2.103 / 5. 2.103
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, rawvideo, from '/tmp/somagic-pipe':
Duration: N/A, start: 0.000000, bitrate: 165722 kb/s
Stream #0:0: Video: rawvideo (UYVY / 0x59565955), uyvy422, 720x480, 165722 kb/s, 29.97 tbr, 29.97 tbn, 29.97 tbc
Home directory not accessible: Permission denied
Guessed Channel Layout for Input Stream #1.0 : stereo
Input #1, alsa, from 'hw:0,0':
Duration: N/A, start: 1423201999.226455, bitrate: 1536 kb/s
Stream #1:0: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s
No pixel format specified, yuv422p for H.264 encoding chosen.
Use -pix_fmt yuv420p for compatibility with outdated media players.
[Parsed_pan_0 @ 0x21cad60] This syntax is deprecated. Use '|' to separate the list items.
Single channel layout '1' is interpreted as a number of channels, switch to the syntax '1c' otherwise it will be interpreted as a channel layout number in a later version
[Parsed_pan_0 @ 0x21cad60] Pure channel mapping detected: 0
[libx264 @ 0x21f9bc0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.1 Cache64
[libx264 @ 0x21f9bc0] profile High 4:2:2, level 3.1, 4:2:2 8-bit
[libx264 @ 0x21f9bc0] 264 - core 142 r2389 956c8d8 - H.264/MPEG-4 AVC codec - Copyleft 2003-2014 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=25 scenecut=0 intra_refresh=0 rc=crf mbtree=0 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0
Output #0, mp4, to '/home/peterbecich/easycap/Videos/fpv_video_02_05_2015_21_53_18.mp4':
Metadata:
encoder : Lavf56.15.102
Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv422p, 720x540, q=-1--1, 29.97 fps, 11988 tbn, 29.97 tbc
Metadata:
encoder : Lavc56.13.100 libx264
Stream #0:1: Audio: aac (libfdk_aac) ([64][0][0][0] / 0x0040), 96000 Hz, mono, s16, 128 kb/s
Metadata:
encoder : Lavc56.13.100 libfdk_aac
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
Stream #1:0 -> #0:1 (pcm_s16le (native) -> aac (libfdk_aac))
Press [q] to stop, [?] for help
frame= 1 fps=0.0 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A
frame= 1 fps=1.0 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A
frame= 1 fps=0.7 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A
frame= 1 fps=0.5 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A
frame= 1 fps=0.4 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A
frame= 1 fps=0.3 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A
frame= 1 fps=0.3 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A
frame= 1 fps=0.2 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A
frame= 1 fps=0.2 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A
frame= 1 fps=0.2 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A
frame= 1 fps=0.2 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A
[alsa @ 0x21e5ac0] ALSA buffer xrun.
frame= 8 fps=1.3 q=19.0 size= 12kB time=00:00:06.03 bitrate= 15.9kbits/s
frame= 23 fps=3.5 q=18.0 size= 12kB time=00:00:06.03 bitrate= 16.4kbits/s
frame= 38 fps=5.4 q=18.0 size= 12kB time=00:00:06.03 bitrate= 16.7kbits/s
frame= 53 fps=7.0 q=18.0 size= 12kB time=00:00:06.03 bitrate= 16.9kbits/s
frame= 68 fps=8.4 q=26.0 size= 146kB time=00:00:06.03 bitrate= 198.8kbits/s
frame= 83 fps=9.7 q=26.0 size= 375kB time=00:00:06.03 bitrate= 510.0kbits/s
frame= 98 fps= 11 q=26.0 size= 608kB time=00:00:06.03 bitrate= 826.5kbits/s
frame= 114 fps= 12 q=26.0 size= 875kB time=00:00:06.03 bitrate=1189.1kbits/s
frame= 128 fps= 13 q=26.0 size= 1091kB time=00:00:06.03 bitrate=1481.6kbits/s
frame= 144 fps= 14 q=26.0 size= 1339kB time=00:00:06.03 bitrate=1819.2kbits/s
frame= 159 fps= 14 q=26.0 size= 1571kB time=00:00:06.03 bitrate=2134.6kbits/s
frame= 174 fps= 15 q=26.0 size= 1796kB time=00:00:06.03 bitrate=2440.1kbits/s
[alsa @ 0x21e5ac0] ALSA buffer xrun.
frame= 189 fps= 16 q=26.0 size= 2015kB time=00:00:12.04 bitrate=1370.4kbits/s
frame= 204 fps= 16 q=26.0 size= 2238kB time=00:00:12.04 bitrate=1522.3kbits/s
frame= 219 fps= 17 q=26.0 size= 2490kB time=00:00:12.04 bitrate=1694.2kbits/s
frame= 235 fps= 17 q=26.0 size= 2728kB time=00:00:12.04 bitrate=1855.8kbits/s
frame= 250 fps= 18 q=26.0 size= 2973kB time=00:00:12.04 bitrate=2022.4kbits/s
[rawvideo @ 0x21e5640] Invalid buffer size, packet size 65536 < expected frame_size 691200
Error while decoding stream #0:0: Invalid argument
frame= 261 fps= 18 q=-1.0 Lsize= 3269kB time=00:00:12.06 bitrate=2220.1kbits/s
video:3263kB audio:4kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.081101%
[libx264 @ 0x21f9bc0] frame I:2 Avg QP:21.50 size: 21342
[libx264 @ 0x21f9bc0] frame P:259 Avg QP:24.22 size: 12734
[libx264 @ 0x21f9bc0] mb I I16..4: 100.0% 0.0% 0.0%
[libx264 @ 0x21f9bc0] mb P I16..4: 62.8% 0.0% 0.0% P16..4: 14.2% 0.0% 0.0% 0.0% 0.0% skip:22.9%
[libx264 @ 0x21f9bc0] coded y,uvDC,uvAC intra: 77.7% 61.2% 14.1% inter: 19.7% 24.8% 1.6%
[libx264 @ 0x21f9bc0] i16 v,h,dc,p: 17% 10% 65% 8%
[libx264 @ 0x21f9bc0] i8c dc,h,v,p: 52% 18% 24% 6%
[libx264 @ 0x21f9bc0] kb/s:3068.90The whole script :
#!/bin/sh
PIPE=/tmp/somagic-pipe
OUTFILEDIR=~/easycap/Videos/
LOGDIR=~/.somagic-log/
NOW=`date +"%m_%d_%Y_%H_%M_%S"`
OUTFILE=${OUTFILEDIR}fpv_video_${NOW}.mp4
mkdir $LOGDIR
FFMPEG_LOG=${LOGDIR}ffmpeg.log
SOMAGIC_LOG=${LOGDIR}somagic.log
MPLAYER_LOG=${LOGDIR}mplayer.log
rm $PIPE >/dev/null 2>&1
rm $OUTFILE >/dev/null 2>&1
rm $FFMPEG_LOG
rm $SOMAGIC_LOG
rm $MPLAYER_LOG
mkfifo $PIPE >/dev/null 2>&1
ffmpeg -pixel_format uyvy422 -s:v 720x480 -framerate 29.97 -f rawvideo \
-i $PIPE -f alsa -i hw:0,0 -vf scale=w=720:h=540 -vcodec libx264 \
-preset ultrafast -shortest -c:a libfdk_aac -b:a 128k -af pan=1:c0=c0 \
-ar 96000 $OUTFILE > $FFMPEG_LOG 2>&1 &
somagic-capture --ntsc -c --luminance=2 --lum-aperture=3 2> $SOMAGIC_LOG \
| tee $PIPE | \
mplayer -vf yadif,screenshot -demuxer rawvideo -rawvideo \
"ntsc:format=uyvy:fps=30000/1001" -aspect 4:3 - 2> $MPLAYER_LOG
rm $PIPE >/dev/null 2>&1Modified from here : https://gist.github.com/Brick85/0b327ac2d3d45e23ed33
-
Why does calling ffmpeg from python's popen break screen capture functionality ?
4 mars 2016, par JabbI am trying to create screen captures from mp4 files in python.
Calling ffmpeg on the command line works fine. But as soon, as I issue the same command through python "popen", functionality breaks with an error that ffmpeg cannot find the moov atom. Can anyone explain this to me ?This is how I call ffmpeg from python :
def ffmpegGetScreenshot(self,inputFilename,index,startTime):
my_env = os.environ.copy()
my_env.update({'PATH': '/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'})
filename = inputFilename.split("/")[1]
directory = inputFilename.split("/")[0]
if os.path.isfile('videoscreenshots/'+filename+"_cs"+str(index)+".jpg"):
return 'videoscreenshots/'+filename+"_cs"+str(index)+".jpg"
print "get screenshots for: " + inputFilename
command = [ FFMPEG_BIN,
'-y',
'-i', inputFilename,
'-ss', str(int(startTime)),
'-vframes', '1',
#'-loglevel','quiet',
'videoscreenshots/'+filename+"_cs"+str(index)+".jpg"
]
pipe = sp.Popen(command, env=my_env,stdin = sp.PIPE,stdout = sp.PIPE, stderr=None)
print command
return 'videoscreenshots/'+filename+"_cs"+str(index)+".jpg"Result :
ffmpeg version 2.7.2 Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.9.2 (Debian 4.9.2-10)
configuration: --enable-gpl --enable-postproc --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libtheora --enable-libx264 --enable-libspeex --enable-shared --enable-pthreads --enable-libopenjpeg --enable-libfaac --enable-nonfree
libavutil 54. 27.100 / 54. 27.100
libavcodec 56. 41.100 / 56. 41.100
libavformat 56. 36.100 / 56. 36.100
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 16.101 / 5. 16.101
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.100 / 1. 2.100
libpostproc 53. 3.100 / 53. 3.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x652120] moov atom not found
videochunks/test.mp4: Invalid data found when processing input
test.mp4This is the same command called on the console
/usr/local/bin/ffmpeg -y -i videochunks/test.mp4 -ss 9 -vframes 1 videoscreenshots/test.mp4_cs2.jpg
Result :
root@3:/app# /usr/local/bin/ffmpeg -y -i videochunks/test.mp4 -ss 9 -vframes 1 videoscreenshots/test.mp4_cs2.jpg
ffmpeg version 2.7.2 Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.9.2 (Debian 4.9.2-10)
configuration: --enable-gpl --enable-postproc --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libtheora --enable-libx264 --enable-libspeex --enable-shared --enable-pthreads --enable-libopenjpeg --enable-libfaac --enable-nonfree
libavutil 54. 27.100 / 54. 27.100
libavcodec 56. 41.100 / 56. 41.100
libavformat 56. 36.100 / 56. 36.100
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 16.101 / 5. 16.101
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.100 / 1. 2.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'videochunks/test.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
title : Test
composer : Test
album : Test
encoder : Lavf56.36.100
Duration: 00:00:10.01, start: 0.000000, bitrate: 520 kb/s
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 320x240 [SAR 4:3 DAR 16:9], 436 kb/s, 25 fps, 25 tbr, 25k tbn, 50 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 97 kb/s (default)
Metadata:
handler_name : SoundHandler
[swscaler @ 0x648260] deprecated pixel format used, make sure you did set range correctly
Output #0, image2, to 'videoscreenshots/test_cs2.jpg':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
title : Test
composer : Test
album : Test
encoder : Lavf56.36.100
Stream #0:0(und): Video: mjpeg, yuvj420p(pc), 320x240 [SAR 4:3 DAR 16:9], q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc (default)
Metadata:
handler_name : VideoHandler
encoder : Lavc56.41.100 mjpeg
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> mjpeg (native))
Press [q] to stop, [?] for help
frame= 1 fps=0.0 q=3.9 Lsize=N/A time=00:00:00.04 bitrate=N/A
video:11kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown