
Recherche avancée
Médias (1)
-
The pirate bay depuis la Belgique
1er avril 2013, par
Mis à jour : Avril 2013
Langue : français
Type : Image
Autres articles (52)
-
Personnaliser en ajoutant son logo, sa bannière ou son image de fond
5 septembre 2013, parCertains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;
-
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 -
Les tâches Cron régulières de la ferme
1er décembre 2010, parLa gestion de la ferme passe par l’exécution à intervalle régulier de plusieurs tâches répétitives dites Cron.
Le super Cron (gestion_mutu_super_cron)
Cette tâche, planifiée chaque minute, a pour simple effet d’appeler le Cron de l’ensemble des instances de la mutualisation régulièrement. Couplée avec un Cron système sur le site central de la mutualisation, cela permet de simplement générer des visites régulières sur les différents sites et éviter que les tâches des sites peu visités soient trop (...)
Sur d’autres sites (7795)
-
Play video using HTML5 video tag
21 janvier 2014, par user3217695Hi i need to display video in all the browsers using html5.
I am uploading the file and creating html structure and it plays only mp4 format video, but not other uploaded formats, and i use command line to convert files but the converted files doesn't play in video tag.
For conversion I use
ffmpeg
video conversion from one towebm
format. Conversion works, but viedos don't play.Please find me
ffmpeg
code, which converts all videos towebm
, so i can play the converted video using html5. -
rtmp : Support play method in listen mode
15 septembre 2013, par Luca Barbato -
How to play audio using libao and FFmpeg in C ?
12 mars 2024, par OmegaLol21I am trying to create a simple prototype application that opens a video file and plays its audio. I am using the FFmpeg libraries (libavcodec, libavformat, etc) to open and decode the video, and I am attempting to use libao to play the audio. I tried looking up code examples but a lot of them either don't work or use deprecated functions.


So far, I managed to come up with this :


#include <libavcodec></libavcodec>avcodec.h>
#include <libavformat></libavformat>avformat.h>
#include <libswresample></libswresample>swresample.h>
#include <ao></ao>ao.h>

int main(int argc, char** argv) {
 AVFormatContext* format_ctx = avformat_alloc_context();
 int audio_stream_index = -1;
 AVCodecContext* codec_ctx = NULL;
 AVCodec* codec = NULL;
 AVPacket packet;
 AVFrame* frame = NULL;
 ao_device* device = NULL;
 ao_sample_format sample_format;
 uint8_t* output_buffer = NULL;
 int output_linesize;

 avformat_open_input(&format_ctx, "test.mp4", NULL, NULL);
 avformat_find_stream_info(format_ctx, NULL);

 for (int i = 0; i < format_ctx->nb_streams; i++) {
 if (format_ctx->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) {
 audio_stream_index = i;
 break;
 }
 }

 codec_ctx = avcodec_alloc_context3(NULL);
 avcodec_parameters_to_context(codec_ctx, format_ctx->streams[audio_stream_index]->codecpar);
 codec = avcodec_find_decoder(codec_ctx->codec_id);
 avcodec_open2(codec_ctx, codec, NULL);

 // Initialize libao
 ao_initialize();
 int driver_id = ao_default_driver_id();

 sample_format.bits = 16;
 sample_format.channels = 2;
 sample_format.rate = 44100;
 sample_format.byte_format = AO_FMT_NATIVE;
 sample_format.matrix = 0;
 device = ao_open_live(driver_id, &sample_format, NULL);
 if (!device) {
 fprintf(stderr, "Could not open audio device\n");
 return 1;
 }

 frame = av_frame_alloc();

 while (av_read_frame(format_ctx, &packet) >= 0) {
 if (packet.stream_index == audio_stream_index) {
 int ret = avcodec_send_packet(codec_ctx, &packet);
 if (ret < 0) {
 fprintf(stderr, "Error sending packet for decoding\n");
 break;
 }

 while (ret >= 0) {
 ret = avcodec_receive_frame(codec_ctx, frame);
 if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF) {
 break;
 }
 else if (ret < 0) {
 fprintf(stderr, "Error during decoding\n");
 break;
 }

 ao_play(device, (char*)frame->data[0], frame->nb_samples * 2 * frame->channels);
 }
 }
 av_packet_unref(&packet);
 }

 // Clean up
 av_frame_free(&frame);
 avcodec_free_context(&codec_ctx);
 avformat_close_input(&format_ctx);
 ao_close(device);
 ao_shutdown();
 av_freep(&output_buffer);

 return 0;
}



This is the closest I have gotten to play audio. It plays audio but there is a lot of static sound in the background. I did try using using
frame->linesize[0]
fornum_bytes
inao_play
but that didn't produce a sound that sounded at all like the video.

Is there something I am doing wrong or missing ?


EDIT : While doing more testing, I managed to find out that the above code sample outputs pure static in the left speaker, however, in the right speaker, it does play the audio, albeit heavily distorted ?