
Recherche avancée
Autres articles (111)
-
Problèmes fréquents
10 mars 2010, parPHP et safe_mode activé
Une des principales sources de problèmes relève de la configuration de PHP et notamment de l’activation du safe_mode
La solution consiterait à soit désactiver le safe_mode soit placer le script dans un répertoire accessible par apache pour le site -
Prérequis à l’installation
31 janvier 2010, parPréambule
Cet article n’a pas pour but de détailler les installations de ces logiciels mais plutôt de donner des informations sur leur configuration spécifique.
Avant toute chose SPIPMotion tout comme MediaSPIP est fait pour tourner sur des distributions Linux de type Debian ou dérivées (Ubuntu...). Les documentations de ce site se réfèrent donc à ces distributions. Il est également possible de l’utiliser sur d’autres distributions Linux mais aucune garantie de bon fonctionnement n’est possible.
Il (...) -
Déploiements possibles
31 janvier 2010, parDeux types de déploiements sont envisageable dépendant de deux aspects : La méthode d’installation envisagée (en standalone ou en ferme) ; Le nombre d’encodages journaliers et la fréquentation envisagés ;
L’encodage de vidéos est un processus lourd consommant énormément de ressources système (CPU et RAM), il est nécessaire de prendre tout cela en considération. Ce système n’est donc possible que sur un ou plusieurs serveurs dédiés.
Version mono serveur
La version mono serveur consiste à n’utiliser qu’une (...)
Sur d’autres sites (8209)
-
How to play videos that only contain P frames (no I frames) on iOS ?
9 septembre 2016, par Clement WangI am trying to play a raw .264 file on iOS that only contains P frames (no keyframes included), but it fails to play with multiple open source FFmpeg video players such as kxmovie or ijkplayer.
The error log shows
non-existing PPS 0 referenced
, however the SPS and PPS information is already embedded in the frames. I am wondering if it is possible to play P-frame only videos with a modified version of FFmpeg or any other open source library/player. -
how to play mp3 using ffmpeg
5 novembre 2013, par AriI'm trying to play audio mp3 file using ffmpeg in android
but I'm facing a problem in the below mentioned codehow to play mp3 using ffmpeg
void JNICALL Java_com_music_MainActivity_loadFile(JNIEnv* env, jobject obj,jstring file,jbyteArray array)
{
jboolean isfilenameCopy;
const char * filename = (*env)->GetStringUTFChars(env, file, &isfilenameCopy);
AVCodec *codec;
AVCodecContext *c= NULL;
int out_size, len;
FILE *f, *outfile;
uint8_t *outbuf;
uint8_t inbuf[AUDIO_INBUF_SIZE + FF_INPUT_BUFFER_PADDING_SIZE];
AVPacket avpkt;
jclass cls = (*env)->GetObjectClass(env, obj);
jmethodID play = (*env)->GetMethodID(env, cls, "playSound", "([BI)V");//At the begining of your main function
av_init_packet(&avpkt);
printf("Audio decoding\n");
__android_log_print(ANDROID_LOG_INFO, DEBUG_TAG, "inside load file");
/* find the mpeg audio decoder */
codec = avcodec_find_decoder(CODEC_ID_MP3);
if (!codec) {
fprintf(stderr, "codec not found\n");
exit(1);
}
c= avcodec_alloc_context();
/* open it */
if (avcodec_open(c, codec) < 0) {
fprintf(stderr, "could not open codec\n");
exit(1);
}
__android_log_print(ANDROID_LOG_INFO, DEBUG_TAG, "open avcode");
outbuf = malloc(AVCODEC_MAX_AUDIO_FRAME_SIZE);
__android_log_print(ANDROID_LOG_INFO, DEBUG_TAG, "open %s",outbuf);
f = fopen(filename, "rb");
if (!f) {
fprintf(stderr, "could not open %s\n", filename);
exit(1);
}
/* decode until eof */
avpkt.data = inbuf;
avpkt.size = fread(inbuf, 1, AUDIO_INBUF_SIZE, f);
__android_log_print(ANDROID_LOG_INFO, DEBUG_TAG, "data =%s and size %d",avpkt.data,avpkt.size);
while (avpkt.size > 0) {
out_size = AVCODEC_MAX_AUDIO_FRAME_SIZE;
len = avcodec_decode_audio3(c, (short *)outbuf, &out_size, &avpkt);
__android_log_print(ANDROID_LOG_INFO, DEBUG_TAG, "length =%d",len);
if (len < 0) {
fprintf(stderr, "Error while decoding\n");
__android_log_print(ANDROID_LOG_INFO, DEBUG_TAG, " failed length =%d",errno);
exit(1);
}
if (out_size > 0) {
/* if a frame has been decoded, output it */
jbyte *bytes = (*env)->GetByteArrayElements(env, array, NULL);
memcpy(bytes, outbuf, out_size); //
(*env)->ReleaseByteArrayElements(env, array, bytes, 0);
(*env)->CallVoidMethod(env, obj, play, array, out_size);
}
avpkt.size -= len;
avpkt.data += len;
if (avpkt.size < AUDIO_REFILL_THRESH) {
/* Refill the input buffer, to avoid trying to decode
* incomplete frames. Instead of this, one could also use
* a parser, or use a proper container format through
* libavformat. */
memmove(inbuf, avpkt.data, avpkt.size);
avpkt.data = inbuf;
len = fread(avpkt.data + avpkt.size, 1,
AUDIO_INBUF_SIZE - avpkt.size, f);
if (len > 0)
avpkt.size += len;
}
}
fclose(f);
free(outbuf);
avcodec_close(c);
av_free(c);
}i am getting the len = - 1 in
len = avcodec_decode_audio3(c, (short *)outbuf, &out_size, &avpkt);
what am i doing wrong ??
please help
-
play m3u8 video from laravel storage
21 janvier 2020, par JennsenMy question is the same as how to play m3u8 videos from laravel storage but this one did not get answers.
If I play the video from the public folder it does it without problems.
but if I want to play it from storage this doesn’t work.
public function watch(Request $request, Episode $episode)
{
$video = Storage::disk('videos')->get($episode->video);
return new Response($video, 200, ['Content-Type' => 'application/x-mpegURL', 'isHls' => true]);
}this is the definition of my disk in config/filesystems.php
'videos' => [
'driver' => 'local',
'root' => storage_path('app/videos'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],this is my conversion code (job)
*/
public function handle()
{
$path = $this->episode->id . '.m3u8';
$lowBitrate = (new X264 ('aac'))->setKiloBitrate(500)->setVideoCodec('libx264');
$midBitrate = (new X264 ('aac'))->setKiloBitrate(1000)->setVideoCodec('libx264');
$highBitrate = (new X264 ('aac'))->setKiloBitrate(3000)->setVideoCodec('libx264');
FFMpeg::fromDisk('tmp')->open($this->episode->video)
->exportForHLS()
->dontSortFormats()
->setSegmentLength(10)
->toDisk('local')
->addFormat($lowBitrate, function($media) {
$media->addFilter(function ($filters) {
$filters->resize(new \FFMpeg\Coordinate\Dimension(640, 480));
});
})
->addFormat($midBitrate, function($media) {
$media->addFilter(function ($filters) {
$filters->resize(new \FFMpeg\Coordinate\Dimension(1280, 960));
});
})
->addFormat($highBitrate, function($media) {
$media->addFilter(function ($filters) {
$filters->resize(new \FFMpeg\Coordinate\Dimension(1280, 960));
});
})
->save($path);
$this->episode->update([
'video' => $path,
]);
FFMpeg::cleanupTemporaryFiles();
}