
Recherche avancée
Autres articles (57)
-
Gestion des droits de création et d’édition des objets
8 février 2011, parPar défaut, beaucoup de fonctionnalités sont limitées aux administrateurs mais restent configurables indépendamment pour modifier leur statut minimal d’utilisation notamment : la rédaction de contenus sur le site modifiables dans la gestion des templates de formulaires ; l’ajout de notes aux articles ; l’ajout de légendes et d’annotations sur les images ;
-
Supporting all media types
13 avril 2011, parUnlike most software and media-sharing platforms, MediaSPIP aims to manage as many different media types as possible. The following are just a few examples from an ever-expanding list of supported formats : images : png, gif, jpg, bmp and more audio : MP3, Ogg, Wav and more video : AVI, MP4, OGV, mpg, mov, wmv and more text, code and other data : OpenOffice, Microsoft Office (Word, PowerPoint, Excel), web (html, CSS), LaTeX, Google Earth and (...)
-
Dépôt de média et thèmes par FTP
31 mai 2013, parL’outil MédiaSPIP traite aussi les média transférés par la voie FTP. Si vous préférez déposer par cette voie, récupérez les identifiants d’accès vers votre site MédiaSPIP et utilisez votre client FTP favori.
Vous trouverez dès le départ les dossiers suivants dans votre espace FTP : config/ : dossier de configuration du site IMG/ : dossier des média déjà traités et en ligne sur le site local/ : répertoire cache du site web themes/ : les thèmes ou les feuilles de style personnalisées tmp/ : dossier de travail (...)
Sur d’autres sites (10027)
-
ffmpeg produces bad output when called from execve in c++
31 mai 2016, par Arheiselim writing a c++ program that involves ffmpeg being called from a c++ program. a couple of days ago i got it working using std::system
std::system("ffmpeg -threads auto -y -r 1.74659 -i /mnt/ev_ramdsk/1/%05d-capture.jpg -px_fmt yuv420p -preset ultrafast -r 10 /mnt/ev_ramdsk/1/video.mp4");
but this only worked once now this produces .mp4 videos of 8MB or so that cannot be played anywhere.. so because of a suggestion in a previous question i moved to execve.
Here is my code
child_pid = fork();
if(child_pid < 0){
syslog(LOG_ERR, "ERROR: ffmpeg forking failed");
return false;
}
else if(child_pid > 0){
syslog(LOG_DEBUG, "DEBUG: forking succeeded, pid: %d", child_pid);
}
else if(child_pid == 0){
char *newargv[16];
for(int i=0; i < 15; i++) newargv[i] = (char *)malloc(sizeof(char) * 60); //allocate the array in memory
strcpy(newargv[0], "/usr/bin/ffmpeg");
strcpy(newargv[1], "-threads");
strcpy(newargv[2], "auto");
strcpy(newargv[3], "-y");
strcpy(newargv[4], "-framerate");
tempSS << fps;
strcpy(newargv[5], tempSS.str().c_str());
tempSS.str(std::string());
strcpy(newargv[6], "-i");
strcpy(newargv[7], std::string(conf->dir_ram + dest + "%05d-capture.jpg").c_str());
strcpy(newargv[8], "-pix_fmt");
strcpy(newargv[9], "yuv420p");
strcpy(newargv[10], "-preset");
strcpy(newargv[11], "ultrafast");
strcpy(newargv[12], "-r");
strcpy(newargv[13], "25");
strcpy(newargv[14], std::string(conf->dir_ram + dest + "video.mp4").c_str());
newargv[15] = NULL;
for(int i=0; i < 15; i++){
tempSS << "newargv[" << i << "] = \"" << newargv[i] << "\", ";
}
syslog(LOG_DEBUG, "DEBUG:newargv: %s", tempSS.str().c_str());
tempSS.str(std::string());
char *newenviron[] = { NULL };
if(execve(newargv[0], newargv, newenviron) == -1){
syslog(LOG_ERR, "ERROR: execve returned -1");
exit(EXIT_SUCCESS);
}
}
wpid = wait(&status);
syslog(LOG_DEBUG, "DEBUG: ffmpeg child terminated, pid: %d, status: %d", wpid, status);the output of syslog is :
May 28 00:25:03 SERVER dt_ev_maker[10471]: DEBUG: forking succeeded, pid: 10658
May 28 00:25:03 SERVER dt_ev_maker[10658]: DEBUG:newargv:
newargv[0] = "/usr/bin/ffmpeg",
newargv[1] = "-threads",
newargv[2] = "auto",
newargv[3] = "-y",
newargv[4] = "-framerate",
newargv[5] = "1.45097",
newargv[6] = "-i",
newargv[7] = "/mnt/ev_ramdsk/1/%05d-capture.jpg",
newargv[8] = "-pix_fmt",
newargv[9] = "yuv420p",
newargv[10] = "-preset",
newargv[11] = "ultrafast",
newargv[12] = "-r",
newargv[13] = "25",
newargv[14] = "/mnt/ev_ramdsk/1/video.mp4",
May 28 00:25:03 SERVER dt_ev_maker[10471]: DEBUG: ffmpeg child terminated, pid: 10658, status: 256in this case the video has about 90B size and is also corrupted.
NOTE : if i run the same command from the command line the video can be played normally.
what am i doing wrong ?
Thanks in advance !
EDIT
Thanks to ouroborus (changes submitted above) i got it to make 18MB videos, but i cant play them.
-
avformat/hlsenc : add hls_flag option to write segments to temporary file until complete
7 février 2017, par Aman Guptaavformat/hlsenc : add hls_flag option to write segments to temporary file until complete
Adds a `-hls_flags +temp_file` which will write segment data to
filename.tmp, and then rename to filename when the segment is complete.This patch is similar in spirit to one used in Plex’s ffmpeg fork, and
allows a transcoding webserver to ensure incomplete segment files are
never served up accidentally.Reviewed-by : Hendrik Leppkes <h.leppkes@gmail.com>
Reviewed-by : Bodecs Bela <bodecsb@vivanet.hu>
Signed-off-by : Aman Gupta <aman@tmm1.net>
Signed-off-by : Steven Liu <lq@chinaffmpeg.org> -
Got a crash when I run a ffmpeg comand on an certain phone
31 août 2016, par Kingty Tenghere is the code I change from ffmpeg.c ,it can be run correct.
BUT,IT ALWAYS crashed on an cenrtain phone after run this code.JNIEXPORT jstring JNICALL Java_com_p1_mobile_android_media_VideoKit_run(
JNIEnv* env, jobject thiz, jobjectArray strArray)
{
int ret, i, pid;
int pipeFD[2];
char retBuffer[2];
char resultString[4096];
int argc = (*env)->GetArrayLength(env, strArray);
char ** argv = (char **)malloc(sizeof(char*)*argc);
for (i = 0; i < argc; i++) {
argv[i] = (*env)->GetStringUTFChars(env,
(jstring)(*env)->GetObjectArrayElement(env, strArray, i), NULL);
}
// reset to FAIL
ret = 1;
memset(retBuffer, 0, sizeof(retBuffer));
memset(resultString, 0, sizeof(resultString));
pipe(pipeFD);
pid = fork();
if (pid < 0) {
goto done;
} else if (pid == 0) {
// in child process, do command work
close(pipeFD[0]);
init();
av_log_set_callback(log_callback);
ret = run_ffempeg_command(argc, argv);
s_task_completed = 1;
sprintf(retBuffer, "%d", ret);
write(pipeFD[1], retBuffer, sizeof(retBuffer));
char * result_record = get_record_result();
if (result_record != NULL && strlen(result_record) > 0) {
sprintf(resultString, "%s", result_record);
} else {
if (ret == 0 && s_task_completed == 1) {
sprintf(resultString, "%s", "SUCCESS");
} else {
sprintf(resultString, "%s", "FAIL");
}
}
write(pipeFD[1], resultString, sizeof(resultString));
exit(0);
} else {
close(pipeFD[1]);
read(pipeFD[0], retBuffer, sizeof(retBuffer));
ret = (retBuffer[0] == '1') ? 1 : 0;
memset(resultString, 0, sizeof(resultString));
read(pipeFD[0], resultString, sizeof(resultString));
}
done:
for (i=0; iReleaseStringUTFChars(env,
(jstring)(*env)->GetObjectArrayElement(env, strArray, i), argv[i]);
}
free(argv);
//close();
if (strlen(resultString) > 0) {
// workaround for UTF-8 issue
jbyteArray array = (*env)->NewByteArray(env, sizeof(resultString));
(*env)->SetByteArrayRegion(env, array, 0, sizeof(resultString), resultString);
jstring strEncode = (*env)->NewStringUTF(env, "UTF-8");
jclass cls = (*env)->FindClass(env, "java/lang/String");
jmethodID ctor = (*env)->GetMethodID(env, cls, "<init>", "([BLjava/lang/String;)V");
jstring object = (jstring) (*env)->NewObject(env, cls, ctor, array, strEncode);
return object;
} else {
return (*env)->NewStringUTF(env, "FAIL");
}
}
</init>here is the crash log.almost phone can run this well,only on one phone after run the jni ,any button i touched will bring this crash
,it’s really appreciate if anybody can help08-31 14:59:23.580 279-279/? D/AEE/AED: $===AEE===AEE===AEE===$
08-31 14:59:23.580 279-279/? D/AEE/AED: p 0 poll events 1 revents 0
08-31 14:59:23.580 279-279/? D/AEE/AED: not know revents:0
08-31 14:59:23.580 279-279/? D/AEE/AED: p 1 poll events 1 revents 0
08-31 14:59:23.580 279-279/? D/AEE/AED: not know revents:0
08-31 14:59:23.580 279-279/? D/AEE/AED: p 2 poll events 1 revents 1
08-31 14:59:23.580 279-279/? D/AEE/AED: aed_main_fork_worker: generator 0xf7017148, worker 0xffbe76d8, recv_fd 0
08-31 14:59:23.580 279-279/? D/AEE/AED: p 3 poll events 1 revents 0
08-31 14:59:23.580 279-279/? D/AEE/AED: not know revents:0
08-31 14:59:23.580 279-279/? D/AEE/AED: p 4 poll events 1 revents 0
08-31 14:59:23.580 279-279/? D/AEE/AED: not know revents:0
08-31 14:59:23.580 279-279/? D/AEE/AED: p 5 poll events 0 revents 0
08-31 14:59:23.580 279-279/? D/AEE/AED: not know revents:0
08-31 14:59:23.580 8546-8546/? I/AEE/AED: handle_request(0)
08-31 14:59:23.581 8546-8546/? I/AEE/AED: check process 29910 name:1.mobile.putong
08-31 14:59:23.581 8546-8546/? I/AEE/AED: tid 29961 abort msg address is:0x83b09000, si_code is:-6 (request from 29910:10152)
08-31 14:59:23.581 8546-8546/? I/AEE/AED: BOOM: pid=29910 uid=10152 gid=10152 tid=29961
08-31 14:59:23.582 8546-8546/? I/AEE/AED: [OnPurpose Redunant in void preset_info(aed_report_record*, int, int)] pid: 29910, tid: 29961, name: RenderThread >>> com.p1.mobile.putong <<<
08-31 14:59:23.634 8546-8546/? I/AEE/AED: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
08-31 14:59:23.634 8546-8546/? I/AEE/AED: Build fingerprint: 'Letv/Le1s_CN/X3:5.0.2/DBXCNOP5501304201S/66:user/release-keys'
08-31 14:59:23.634 8546-8546/? I/AEE/AED: Revision: '0'
08-31 14:59:23.634 8546-8546/? I/AEE/AED: ABI: 'arm'
08-31 14:59:23.635 8546-8546/? I/AEE/AED: pid: 29910, tid: 29961, name: RenderThread >>> com.p1.mobile.putong <<<
08-31 14:59:23.635 8546-8546/? I/AEE/AED: signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
08-31 14:59:23.662 8546-8546/? I/AEE/AED: Abort message: 'Failed to make current on surface 0x8c8b6e40, error=EGL_BAD_NATIVE_WINDOW'
08-31 14:59:23.662 8546-8546/? I/AEE/AED: r0 00000000 r1 00007509 r2 00000006 r3 00000000
08-31 14:59:23.662 8546-8546/? I/AEE/AED: r4 863fddc8 r5 00000006 r6 0000000b r7 0000010c
08-31 14:59:23.662 8546-8546/? I/AEE/AED: r8 675bdb6c r9 863fdd30 sl 863fdd28 fp 675bdba8
08-31 14:59:23.662 8546-8546/? I/AEE/AED: ip 00007509 sp 863fd838 lr 4002ee43 pc 4005206c cpsr 600f0010
08-31 14:59:23.662 8546-8546/? I/AEE/AED: backtrace:
08-31 14:59:23.662 8546-8546/? I/AEE/AED: #00 pc 0003a06c /system/lib/libc.so (tgkill+12)
08-31 14:59:23.662 8546-8546/? I/AEE/AED: #01 pc 00016e3f /system/lib/libc.so (pthread_kill+66)
08-31 14:59:23.662 8546-8546/? I/AEE/AED: #02 pc 00017a0b /system/lib/libc.so (raise+10)
08-31 14:59:23.662 8546-8546/? I/AEE/AED: #03 pc 00014317 /system/lib/libc.so (__libc_android_abort+34)
08-31 14:59:23.662 8546-8546/? I/AEE/AED: #04 pc 00012a4c /system/lib/libc.so (abort+4)
08-31 14:59:23.662 8546-8546/? I/AEE/AED: #05 pc 000083c1 /system/lib/libcutils.so (__android_log_assert+88)
08-31 14:59:23.662 8546-8546/? I/AEE/AED: #06 pc 0003f07b /system/lib/libhwui.so
08-31 14:59:23.662 8546-8546/? I/AEE/AED: #07 pc 0003d9e1 /system/lib/libhwui.so
08-31 14:59:23.662 8546-8546/? I/AEE/AED: #08 pc 0003ec23 /system/lib/libhwui.so
08-31 14:59:23.662 8546-8546/? I/AEE/AED: #09 pc 0003ed1b /system/lib/libhwui.so
08-31 14:59:23.662 8546-8546/? I/AEE/AED: #10 pc 00040257 /system/lib/libhwui.so
08-31 14:59:23.662 8546-8546/? I/AEE/AED: #11 pc 00040eab /system/lib/libhwui.so (android::uirenderer::renderthread::RenderThread::threadLoop()+66)
08-31 14:59:23.662 8546-8546/? I/AEE/AED: #12 pc 00010973 /system/lib/libutils.so (android::Thread::_threadLoop(void*)+110)
08-31 14:59:23.662 8546-8546/? I/AEE/AED: #13 pc 000609dd /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+72)
08-31 14:59:23.662 8546-8546/? I/AEE/AED: #14 pc 000165bf /system/lib/libc.so (__pthread_start(void*)+30)
08-31 14:59:23.662 8546-8546/? I/AEE/AED: #15 pc 0001466b /system/lib/libc.so (__start_thread+6)
08-31 14:59:33.720 8546-8546/? E/AEE/AED: timed out waiting for tid=29910 to stop
08-31 14:59:33.821 8546-8546/? E/AEE/AED: timed out waiting for tid=29915 to stop
08-31 14:59:36.912 8546-8546/? E/AEE/AED: timed out waiting for tid=8434 to stop