
Recherche avancée
Autres articles (105)
-
MediaSPIP v0.2
21 juin 2013, parMediaSPIP 0.2 est la première version de MediaSPIP stable.
Sa date de sortie officielle est le 21 juin 2013 et est annoncée ici.
Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
Comme pour la version précédente, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...) -
Le profil des utilisateurs
12 avril 2011, parChaque utilisateur dispose d’une page de profil lui permettant de modifier ses informations personnelle. Dans le menu de haut de page par défaut, un élément de menu est automatiquement créé à l’initialisation de MediaSPIP, visible uniquement si le visiteur est identifié sur le site.
L’utilisateur a accès à la modification de profil depuis sa page auteur, un lien dans la navigation "Modifier votre profil" est (...) -
MediaSPIP version 0.1 Beta
16 avril 2011, parMediaSPIP 0.1 beta est la première version de MediaSPIP décrétée comme "utilisable".
Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
Pour avoir une installation fonctionnelle, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...)
Sur d’autres sites (17115)
-
What's the easiest way to convert ogg to webm on Node without ffmpeg ?
12 mars 2023, par EvertI'm working on a Telegram bot that can receive voice messages and then let OpenAI's Whisper transcribe them and then respond using OpenAI's chat completions API.


Anyway, Whisper does accept a
webm
file as an input, but not anogg
file. Even though ironically, from what I've read, awebm
container can contain a pureogg
file as its soundtrack.

I can't use
ffmpeg
, because I'm deploying this as a serverless function (on Vercel for now) and I have no guarantee thatffmpeg
will be installed there. But I was thinking, sincewebm
is simply a container file which can contain the rawogg
opus
codec as the soundtrack, wouldn't it be possible to just take the binary audio data that I can get from Telegram, usingconst audioData = await response.arrayBuffer()
, and just add some bytes to the beginning and end of it that represent thewebm
container ?

If yes, then can someone please tell me which bytes I'd need to add exactly ?


-
FFMPEG libraries : Bitstream "h264_mp4toannexb" filter does not work
25 décembre 2013, par user2677612We are using
FFmpeg
libraries git-ee94362libavformat
v55.2.100. Our purpose is to mux two streams (video and audio) into M3U8 playlist using HLS.We are using
AV_CODEC_ID_H264
output encoder,AV_PIX_FMT_YUV420P
output video pixel format andCODEC_FLAG_GLOBAL_HEADER
flag for the encoder.The last causes us to use "h264_mp4toannexb" bit stream filter.
So, here is the code snippet :
AVPacket outpkt = {0};
int isGotVideoPacket = 0;
av_init_packet(&outpkt);
out_video_frame->pts = (int64_t) (video_frame_count * in_video_frame_duration / av_q2d(out_video_stream->time_base));
int ret = avcodec_encode_video2(enc_out_video_ctx, &outpkt, out_video_frame[i], &isGotVideoPacket);
assert(0 <= ret);
if ((1 == isGotVideoPacket) && (0 < outpkt.size)) {
AVPacket new_outpkt = outpkt;
if ((AVBitStreamFilterContext*) 0 != vbsf_ctx) {
AVPacket new_outpkt = outpkt;
ret = av_bitstream_filter_filter(vbsf_ctx, enc_out_video_ctx, (const char*)0, &new_outpkt.data, &new_outpkt.size, outpkt.data, outpkt.size, outpkt.flags & AV_PKT_FLAG_KEY);
if (ret > 0)
{
outpkt = new_outpkt;
}
else
{
// We get ret = -22
char errbuf[128] = "";
// Both the functions get "Error number -22 occurred" that don't explain anything
av_strerror (ret, errbuf, 128);
av_make_error_string (errbuf, 128, ret);
}
assert(0 <= ret);
}
outpkt->stream_index = output_video_stream->index;
// If to comment av_bitstream_filter_filter() and "if-else", then
// At frame #37 we get the following error from av_interleaved_write_frame():
// [mpegts @ 09628140] H.264 bitstream malformed, no startcode found, use the h264_mp4toannexb bitstream filter (-bsf h264_mp4toannexb).
ret = av_interleaved_write_frame(ofmt_ctx, &outpkt);
assert(0 <= ret);
}Our questions :
1. What is the meaning of the "-22" error from av_bitstream_filter_filter()?
2. Where can we get full FFMPEG error code description list?
3. If we are using av_bitstream_filter_filter() right? If no, what is the right way?Andrey Mochenov.
-
Prepare mp4 videos for Media Source Extensions API using ffmpeg
6 février 2018, par lerThis command produce init.mp4 + bunch of m4s files, i’m trying to play them using MSE :
ffmpeg -i <input file="file" /> -f hls -hls_segment_type fmp4 -c:v copy playlist.m3u8
This is the client side code i’m using :
var socket = io();
var video = document.querySelector('video');
var mimeCodec = 'video/mp4; codecs="avc1.64000d,mp4a.40.2"';
if ('MediaSource' in window && MediaSource.isTypeSupported(mimeCodec)) {
var mediaSource = new MediaSource;
video.src = URL.createObjectURL(mediaSource);
mediaSource.addEventListener('sourceopen', sourceOpen);
} else {
console.error('Unsupported MIME type or codec: ', mimeCodec);
}
function sourceOpen (_) {
var mediaSource = this;
var sourceBuffer = mediaSource.addSourceBuffer(mimeCodec);
sourceBuffer.mode = 'sequence';
socket.on('broadcast', function (newPiece) {
// here i'm getting the buffer of the video == buffer
sourceBuffer.addEventListener('updateend', function (_) {
video.play().then(function() { }).catch(function(error) { });
});
sourceBuffer.appendBuffer(buffer); // when the seconde video comes i append it's buffer
})
};Everything works fine when i send
init.mp4
file followed byplaylist0.m4s, playlist1.m4s, playlist2.m4s, ....
.
But when i try to playinit.mp4
file followed immediately 6,7,8 not 0,1,2 meaningplaylist6.m4s, playlist7.m4s, playlist8.m4s, ....
, it didn’t work.
I don’t know why, this supposed to be live video, the viewer that is watching the live from the beginning getsinit.mp4, playlist0.m4s, playlist1.m4s, playlist2.m4s, ....
.
Someone that came after 5 minutes gets something like thisinit.mp4, playlist32.m4s, playlist33.m4s, playlist34.m4s, ....
and so on, but so far it works only for the viewer that get’sinit.mp4, playlist0.m4s, playlist1.m4s, playlist2.m4s, ....
. the video can’t play for the others