
Recherche avancée
Autres articles (93)
-
Support de tous types de médias
10 avril 2011Contrairement à beaucoup de logiciels et autres plate-formes modernes de partage de documents, MediaSPIP a l’ambition de gérer un maximum de formats de documents différents qu’ils soient de type : images (png, gif, jpg, bmp et autres...) ; audio (MP3, Ogg, Wav et autres...) ; vidéo (Avi, MP4, Ogv, mpg, mov, wmv et autres...) ; contenu textuel, code ou autres (open office, microsoft office (tableur, présentation), web (html, css), LaTeX, Google Earth) (...)
-
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 (...) -
Other interesting software
13 avril 2011, parWe don’t claim to be the only ones doing what we do ... and especially not to assert claims to be the best either ... What we do, we just try to do it well and getting better ...
The following list represents softwares that tend to be more or less as MediaSPIP or that MediaSPIP tries more or less to do the same, whatever ...
We don’t know them, we didn’t try them, but you can take a peek.
Videopress
Website : http://videopress.com/
License : GNU/GPL v2
Source code : (...)
Sur d’autres sites (4583)
-
Revision 3830 : Pouvoir choisir sur slider de volume vertical ou horizontal
21 août 2010, par kent1 — LogPouvoir choisir sur slider de volume vertical ou horizontal
-
lavd/avdevice : add volume messages
15 avril 2014, par Lukasz Marek -
FFMPEG C++ Volume Filter
18 mai 2020, par HrethricI seem to be having a bit of trouble using FFMPEG audio filters in C++ code. If I only have "abuffer" and "abuffersink" filters, and grab the audio frame from the filtergraph, it sounds perfect. Once I add another filter into the graph (in this case, it's a "volume" filter), there is a lot of noise introduced. I can't figure out what would be causing this.



This isn't the case for all filters - "aecho" works just fine, for example. Any thoughts ? Here's the relevant code :



Filter Creation



char args[512];
int ret = 0;

_filterGraph = avfilter_graph_alloc();

// abuffer must be the first filter used -- it feeds data into the filter graph
/******************
ABUFFER FILTER
*******************/
_abufferFilter = avfilter_get_by_name("abuffer");

/*buffer audio source : decoded frames will be
inserted here. */
if (!_inAudioCodecContext->channel_layout)
{
 _inAudioCodecContext->channel_layout = av_get_default_channel_layout(_inAudioStream->codec->channels);
}

snprintf(args, sizeof(args),
 "sample_rate=%d:sample_fmt=%s:channel_layout=0x%" PRIx64,
 _inAudioCodecContext->sample_rate,
 av_get_sample_fmt_name(_inAudioCodecContext->sample_fmt),
 _inAudioCodecContext->channel_layout);

ret = avfilter_graph_create_filter(&_abufferFilterCtx, _abufferFilter, "abuffer", args, NULL, _filterGraph);
char *errorCode = new char[256];
av_strerror(ret, errorCode, 256);

/******************
VOLUME FILTER
*******************/
snprintf(args, sizeof(args),
 "%f",
 2.0f);
_volumeFilter = avfilter_get_by_name("volume");
ret = avfilter_graph_create_filter(&_volumeFilterCtx, _volumeFilter, "volume", args, NULL, _filterGraph);
char *errorCode = new char[256];
av_strerror(ret, errorCode, 256);

/******************
ABUFFERSINK FILTER
*******************/
// abuffersink must be the last filter used -- it gets data out of the filter graph
_abuffersinkFilter = avfilter_get_by_name("abuffersink");
ret = avfilter_graph_create_filter(&_abufferSinkFilterCtx, _abuffersinkFilter, "abuffersink", NULL, NULL, _filterGraph);

// Link the source buffer to the volume filter
// If I link this to the sink buffer and comment out the next line
// Audio sounds perfect
ret = avfilter_link(_abufferFilterCtx, 0, _volumeFilterCtx, 0);
// Link the volume filter to the sink buffer
ret = avfilter_link(_volumeFilterCtx, 0, _abufferSinkFilterCtx, 0);
ret = avfilter_graph_config(_filterGraph, NULL);

return ret;




Read frames from buffer



// Read a frame from the audio stream/file
ret = av_read_frame(_inFormatContext, &_packet);
int frameFinished = 0;
// Decode the resulting packet into a single frame for processing
int length = avcodec_decode_audio4(_inAudioCodecContext, _audioFrame, &frameFinished, &_packet);

if (frameFinished)
{
 // Insert the frame into the source filter
 ret = av_buffersrc_write_frame(_abufferFilterCtx, _audioFrame);
 while (true)
 {
 // Pull a frame from the filter graph
 ret = av_buffersink_get_frame(_abufferSinkFilterCtx, _audioFrame);

 // EOF or EAGAIN is expected when filtering frames, set the error to "0"
 if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF)
 {
 ret = 0;
 break;
 }
 if (ret < 0)
 {
 break;
 }
 }

 // This keeps going, doing some resampling and conversion based on codec output selection, but that isn't relevant to the issue