
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 (50)
-
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 (...) -
Amélioration de la version de base
13 septembre 2013Jolie sélection multiple
Le plugin Chosen permet d’améliorer l’ergonomie des champs de sélection multiple. Voir les deux images suivantes pour comparer.
Il suffit pour cela d’activer le plugin Chosen (Configuration générale du site > Gestion des plugins), puis de configurer le plugin (Les squelettes > Chosen) en activant l’utilisation de Chosen dans le site public et en spécifiant les éléments de formulaires à améliorer, par exemple select[multiple] pour les listes à sélection multiple (...) -
Menus personnalisés
14 novembre 2010, parMediaSPIP utilise le plugin Menus pour gérer plusieurs menus configurables pour la navigation.
Cela permet de laisser aux administrateurs de canaux la possibilité de configurer finement ces menus.
Menus créés à l’initialisation du site
Par défaut trois menus sont créés automatiquement à l’initialisation du site : Le menu principal ; Identifiant : barrenav ; Ce menu s’insère en général en haut de la page après le bloc d’entête, son identifiant le rend compatible avec les squelettes basés sur Zpip ; (...)
Sur d’autres sites (3492)
-
Download a youtube video without storing it on the server
6 mai 2019, par Baraque ObahamasI have a personal php script that allows me to download the videos of my choice. Currently, this runs youtube-dl and if necessary convert the video, ffmpeg then.
I’m looking for a way to allow my script to download/convert the video without even storing it on the server. Make sure that youtube-dl/ffmpeg acts as a gateway but without downloading the file.
Do you have any idea how to do this ? The idea would be to run ffmpeg on the youtube link and not on the video after it has been downloaded, and allow the user to download it at the same time as the conversion is in progress.
We can see that this site for example www.onlinevideoconverter.com uses this method, because if we ask for a video of 2 hours or more, it allows us to download it immediately.
-
Advice on how to specify length of animated GPX video with ffmpeg/image2pipe
21 mai 2019, par Chris OlinI’m working on a personal project involving an action camera that records GPS data alongside video from an image sensor. I found an open source projected on GitHub called ’trackanimation’ that uses a colored marker to trace the GPX path on a OpenStreetMaps overlay, but it appears that the project has been abandoned. I’m trying to sync the trackanimation video to the image sensor video, but when I try using video editing software to slow the GPX video down to 1%, it still ends up being shorter than the image sensor video. I’ve tried messing with the baked in
ffmpeg
command in make_video(), but still can’t get the output video to be as long as I want it to be.I started digging into the library source to see how the video was being created, tried tweaking a couple things to no avail.
import trackanimation
from trackanimation.animation import AnimationTrack
gpx_file = "Videos/20190516 unity ride #2.mp4.gpx"
gpx_track = trackanimation.read_track(gpx_file)
fig = AnimationTrack(df_points=gpx_track, dpi=300, bg_map=True, map_transparency=0.7)
fig.make_video(output_file="Videos/1-11trackanimationtest.mp4", framerate=30, linewidth=1.0)def make_video(self, linewidth=0.5, output_file='video', framerate=5):
cmdstring = ('ffmpeg',
'-y',
'-loglevel', 'quiet',
'-framerate', str(framerate),
'-f', 'image2pipe',
'-i', 'pipe:',
'-r', '25',
'-s', '1920x1080',
'-pix_fmt', 'yuv420p',
output_file + '.mp4'
)I expect that I should be able to linearly "slow" the GPX video to a dynamic value based on the length of the video and the length I want it to be.
-
How add Data Stream into MXF(using mpeg2video) file with FFmpeg and C/C++
26 mars 2019, par Helmuth SchmitzI’m a little bit stuck here trying create a MXF file
with data stream on it. I have several MXF video files that contain
this standard**1 Video Stream:
Stream #0:0: Video: mpeg2video (4:2:2), yuv422p(tv, bt709, top first), 1920x1080 [SAR 1:1 DAR 16:9], 50000 kb/s, 29.9
16 audio streams
Audio: pcm_s24le, 48000 Hz, 1 channels, s32 (24 bit), 1152 kb/s
1 Data Stream:
Data: none**This data stream, contain personal data inside video file. I can
open this stream and data is really there. Is all ok. But, when i try
to create a file exactly like this, everytime i call "avformat_write_header"
it returns an error.If i do comment the creation of this data streams the video file is succeffully
created.If i change to "mpegts" with this data stream, the video file is also succeffully
created.But, i can’t use mpets and i need this data stream.
I know that is possible MXF with data stream cause i have this originals files
that have this combination.So, i know that i missing something in my code.
This is the way i create this Data Stream :
void CFFmpegVideoWriter::addDataStream(EOutputStream *ost, AVFormatContext *oc, AVCodec **codec, enum AVCodecID codec_id)
{
AVCodecParameters *par;
ost->stream = avformat_new_stream(oc, NULL);
if (ost->stream == NULL)
{
fprintf(stderr, "OOooohhh man: avformat_new_stream() failed.\n");
return;
}
par = ost->stream->codecpar;
ost->stream->index = 17;
par->codec_id = AV_CODEC_ID_NONE;
par->codec_type = AVMEDIA_TYPE_DATA;
ost->stream->codec->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
}the file openning is this :
CFFMpegVideoWriter::CFFMpegVideoWriter(QString outputfilename) : QThread()
{
av_register_all();
avcodec_register_all();
isOpen = false;
shouldClose = false;
frameIndex = 0;
#ifdef __linux__
QByteArray bFilename = outputfilename.toUtf8();
#else
QByteArray bFilename = outputfilename.toLatin1();
#endif
const char* filename = bFilename.data();
codecContext = NULL;
//encontra o formato desejado...
outputFormat = av_guess_format("mp2v", filename, nullptr);
if (!outputFormat)
{
qDebug("Could not find suitable output format\n");
return;
}
//encontra o codec...
codec = avcodec_find_encoder(outputFormat->video_codec);
if (!codec)
{
qDebug( "Codec not found\n");
return;
}
//aloca o contexto do codec...
codecContext = avcodec_alloc_context3(codec);
codecContext->field_order = AV_FIELD_TT;
codecContext->profile = FF_PROFILE_MPEG2_422;
//aloca o contexto do formato...
formatContext = avformat_alloc_context();
formatContext->oformat = outputFormat;
//aloca o contexto da midia de saida...
avformat_alloc_output_context2(&formatContext, NULL, NULL, filename);
if (!formatContext)
{
qDebug("Erro");
return;
}
videoStream.tmp_frame = NULL;
videoStream.swr_ctx = NULL;
//adiciona a stream de video...
if (outputFormat->video_codec != AV_CODEC_ID_NONE)
{
addVideoStream(&videoStream, formatContext, &video_codec, outputFormat->video_codec);
}
//adiciona as 16 streams de audio...
if (outputFormat->audio_codec != AV_CODEC_ID_NONE)
{
for (int i = 0; i < 16; i++)
{
addAudioStream(&audioStream[i], formatContext, &audio_codec, outputFormat->audio_codec);
}
}
addDataStream(&datastream, formatContext, &video_codec, outputFormat->video_codec);
videoStream.sws_ctx = NULL;
for (int i = 0; i < 16; i++)
{
audioStream[i].sws_ctx = NULL;
}
opt = NULL;
//carreca o codec de video para stream de video...
initVideoCodec(formatContext, video_codec, &videoStream, opt);
//carrega o codec de audio para stream de audio...s
for (int i = 0; i < 16; i++)
{
initAudioCodec(formatContext, audio_codec, &audioStream[i], opt);
}
av_dump_format(formatContext, 0, filename, 1);
//abrea o arquivo de saida..
if (!(outputFormat->flags & AVFMT_NOFILE))
{
ret = avio_open(&formatContext->pb, filename, AVIO_FLAG_WRITE);
if (ret < 0)
{
qDebug("Could not open'%s", filename);
return;
}
}
//escreve o cabecalho do arquivo...
ret = avformat_write_header(formatContext, &opt);
if (ret < 0)
{
qDebug("Error occurred when opening output file");
return;
}
isOpen = true;
QThread::start();
}The code always fails at "avformat_write_header" call.
But if i remove "datastream" or change it to mpegts everything runs fine.
Any ideia of what am i doing wrong here ?
Thanks for reading this.
Helmuth