
Recherche avancée
Autres articles (20)
-
Contribute to translation
13 avril 2011You can help us to improve the language used in the software interface to make MediaSPIP more accessible and user-friendly. You can also translate the interface into any language that allows it to spread to new linguistic communities.
To do this, we use the translation interface of SPIP where the all the language modules of MediaSPIP are available. Just subscribe to the mailing list and request further informantion on translation.
MediaSPIP is currently available in French and English (...) -
List of compatible distributions
26 avril 2011, parThe table below is the list of Linux distributions compatible with the automated installation script of MediaSPIP. Distribution nameVersion nameVersion number Debian Squeeze 6.x.x Debian Weezy 7.x.x Debian Jessie 8.x.x Ubuntu The Precise Pangolin 12.04 LTS Ubuntu The Trusty Tahr 14.04
If you want to help us improve this list, you can provide us access to a machine whose distribution is not mentioned above or send the necessary fixes to add (...) -
Submit bugs and patches
13 avril 2011Unfortunately a software is never perfect.
If you think you have found a bug, report it using our ticket system. Please to help us to fix it by providing the following information : the browser you are using, including the exact version as precise an explanation as possible of the problem if possible, the steps taken resulting in the problem a link to the site / page in question
If you think you have solved the bug, fill in a ticket and attach to it a corrective patch.
You may also (...)
Sur d’autres sites (5105)
-
How to store a raw RTSP video stream to a file ?
12 janvier 2016, par Siva PrasannaI’m playing around with the open source FFMpeg tool. I want to save an RTSP video stream to a local file. I came across this question and I tried executing a similar command, but its not working. It doesn’t throw any error either. My command is :
ffmpeg -i rtsp://test.vibrtech.com/mov/video.sav?MAC=00C2100F124^&channel=2^&GUID=betauser -acodec copy -vcodec copy c:/video.mp4
but when I execute this command all I’m getting is this(with the cursor being blinked like forever, until I manually invoke
ctrl+c
) :D:\..\bin>ffmpeg -i rtsp://test.vibrtech.com/mov/video.sav?MAC=00C2100F124^&channel=2^&GUID=betauser -acodec copy -vcodec copy c:/video.mp4
ffmpeg version N-77704-g68eb208 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.2.0 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls
--enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca
--enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm
--enable-libilbc --enable-libmodplug --enable-libmp3lame
--enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg
--enable-libopus --enable-librtmp --enable-libschroedinger
--enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame
--enable-libvidstab --enable-libvo-aacenc --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. 12.100 / 55. 12.100
libavcodec 57. 21.100 / 57. 21.100
libavformat 57. 21.100 / 57. 21.100
libavdevice 57. 0.100 / 57. 0.100
libavfilter 6. 23.100 / 6. 23.100
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
_Can anyone tell me what I’m doing wrong here ? Or is there any way this could be achieved by using other commands ?
P.S : I’m getting the stream from this url : rtsp ://test.vibrtech.com/mov/video.sav ?MAC=00C2100F124&channel=2&GUID=betaUser
-
Edit audio files on the server with Meteor
28 décembre 2015, par Mohammed HusseinI am building a Meteor application to split uploaded audio files.
I upload the audio files and store them using GridFS :
child = Npm.require('child_process');
var fs = Npm.require('fs');
storagePath= fs.realpathSync(process.env.PWD+'/audio');
StaticServer.add('/audio', clipsPath);and then using a method I split the audio file using :
child.exec(command);
the command is the ffmpeg command used to cut the source audio file and store it on the
storagePath
.The application worked fine locally but when I tried to deploy it to digital ocean I got errors, stating that the file
/audio
does not exist.
I usemupx
to deploy and the error appears after "verifying deployment".Here is the error :
-----------------------------------STDERR-----------------------------------
eteor-dev-bundle@0.0.0 No README data
=> Starting meteor app on port:80
/bundle/bundle/programs/server/node_modules/fibers/future.js:245
throw(ex);
^
Error: ENOENT, no such file or directory '/bundle/bundle/audio'
at Object.fs.lstatSync (fs.js:691:18)
at Object.realpathSync (fs.js:1279:21)
at server/startup.js:10:20
at /bundle/bundle/programs/server/boot.js:249:5
npm WARN package.json meteor-dev-bundle@0.0.0 No description
npm WARN package.json meteor-dev-bundle@0.0.0 No repository field.
npm WARN package.json meteor-dev-bundle@0.0.0 No README data
=> Starting meteor app on port:80
/bundle/bundle/programs/server/node_modules/fibers/future.js:245
throw(ex);
^
Error: ENOENT, no such file or directory '/bundle/bundle/audio'
at Object.fs.lstatSync (fs.js:691:18)
at Object.realpathSync (fs.js:1279:21)
at server/startup.js:10:20
at /bundle/bundle/programs/server/boot.js:249:5
=> Redeploying previous version of the app
-----------------------------------STDOUT-----------------------------------
To see more logs type 'mup logs --tail=50'
----------------------------------------------------------------------------The main question is how to generate an output file using ffmpeg and store it in a place where I can access it and display it in the browser.
-
Ffmpeg decoder yuv420p
4 décembre 2015, par user2466514I work on a video player yuv420p with ffmpeg but it’s not working and i can’t find out why. I spend the whole week on it...
So i have a test which just decode some frame and read it, but the output always differ, and it’s really weird.
I use a video (mp4 yuv420p) which color one black pixel in more each frame :
For the video, put http://sendvid.com/b1sgf8r1 on a website like http://www.telechargerunevideo.com/en/
VideoContext is just a little struct :
struct VideoContext {
unsigned int currentFrame;
std::size_t size;
int width;
int height;
bool pause;
AVFormatContext* formatCtx;
AVCodecContext* codecCtxOrig;
AVCodecContext* codecCtx;
int streamIndex;
};So i have a function to count the number of black pixels :
std::size_t checkFrameNb(const AVFrame* frame) {
std::size_t nb = 0;
for (int y = 0; y < frame->height; ++y) {
for (int x = 0 ; x < frame->width; ++x) {
if (frame->data[0][(y * frame->linesize[0]) + x] == BLACK_FRAME.y
&& frame->data[1][(y / 2 * frame->linesize[1]) + x / 2] == BLACK_FRAME.u
&& frame->data[2][(y / 2 * frame->linesize[2]) + x / 2] == BLACK_FRAME.v)
++nb;
}
}
return nb;
}And this is how i decode one frame :
const AVFrame* VideoDecoder::nextFrame(entities::VideoContext& context) {
int frameFinished;
AVPacket packet;
// Allocate video frame
AVFrame* frame = av_frame_alloc();
if(frame == nullptr)
throw;
// Initialize frame->linesize
avpicture_fill((AVPicture*)frame, nullptr, AV_PIX_FMT_YUV420P, context.width, context.height);
while(av_read_frame(context.formatCtx, &packet) >= 0) {
// Is this a packet from the video stream?
if(packet.stream_index == context.streamIndex) {
// Decode video frame
avcodec_decode_video2(context.codecCtx, frame, &frameFinished, &packet);
// Did we get a video frame?
if(frameFinished) {
// Free the packet that was allocated by av_read_frame
av_free_packet(&packet);
++context.currentFrame;
return frame;
}
}
}
// Free the packet that was allocated by av_read_frame
av_free_packet(&packet);
throw core::GlobalException("nextFrame", "Frame decode failed");
}There is already something wrong ?
Maybe the context initialization will be useful :
entities::VideoContext VideoLoader::loadVideoContext(const char* file,
const int width,
const int height) {
entities::VideoContext context;
// Register all formats and codecs
av_register_all();
context.formatCtx = avformat_alloc_context();
// Open video file
if(avformat_open_input(&context.formatCtx, file, nullptr, 0) != 0)
throw; // Couldn't open file
// Retrieve stream information
if(avformat_find_stream_info(context.formatCtx, nullptr) > 0)
throw; // Couldn't find stream information
// Dump information about file onto standard error
//av_dump_format(m_formatCtx, 0, file, 1);
// Find the first video stream because we don't need more
for(unsigned int i = 0; i < context.formatCtx->nb_streams; ++i)
if(context.formatCtx->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO) {
context.streamIndex = i;
context.codecCtx = context.formatCtx->streams[i]->codec;
break;
}
if(context.codecCtx == nullptr)
throw; // Didn't find a video stream
// Find the decoder for the video stream
AVCodec* codec = avcodec_find_decoder(context.codecCtx->codec_id);
if(codec == nullptr)
throw; // Codec not found
// Copy context
if ((context.codecCtxOrig = avcodec_alloc_context3(codec)) == nullptr)
throw;
if(avcodec_copy_context(context.codecCtxOrig, context.codecCtx) != 0)
throw; // Error copying codec context
// Open codec
if(avcodec_open2(context.codecCtx, codec, nullptr) < 0)
throw; // Could not open codec
context.currentFrame = 0;
decoder::VideoDecoder::setVideoSize(context);
context.pause = false;
context.width = width;
context.height = height;
return std::move(context);
}I know it’s not a little piece of code, if you have any idea too make an exemple more brief, go on.
And if someone have an idea about this issue, there is my output :
9 - 10 - 12 - 4 - 10 - 14 - 11 - 8 - 9 - 10
But i want :
1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10
PS :
get fps and video size are copy paste code of opencv