
Recherche avancée
Médias (91)
-
999,999
26 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
The Slip - Artworks
26 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Texte
-
Demon seed (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
-
The four of us are dying (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
-
Corona radiata (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
-
Lights in the sky (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
Autres articles (72)
-
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 (...) -
Encodage et transformation en formats lisibles sur Internet
10 avril 2011MediaSPIP transforme et ré-encode les documents mis en ligne afin de les rendre lisibles sur Internet et automatiquement utilisables sans intervention du créateur de contenu.
Les vidéos sont automatiquement encodées dans les formats supportés par HTML5 : MP4, Ogv et WebM. La version "MP4" est également utilisée pour le lecteur flash de secours nécessaire aux anciens navigateurs.
Les documents audios sont également ré-encodés dans les deux formats utilisables par HTML5 :MP3 et Ogg. La version "MP3" (...) -
Emballe médias : à quoi cela sert ?
4 février 2011, parCe plugin vise à gérer des sites de mise en ligne de documents de tous types.
Il crée des "médias", à savoir : un "média" est un article au sens SPIP créé automatiquement lors du téléversement d’un document qu’il soit audio, vidéo, image ou textuel ; un seul document ne peut être lié à un article dit "média" ;
Sur d’autres sites (3568)
-
Android FFmpeg Video Player
11 mars 2013, par DilipI want to play video using
FFmpeg
for this have used some code,But it open file but not drawing frames thowing Unhandled page fault exception.Java Code :
public class MainActivity extends Activity {
private static native void openFile();
private static native void drawFrame(Bitmap bitmap);
private static native void drawFrameAt(Bitmap bitmap, int secs);
private Bitmap mBitmap;
private int mSecs = 0;
static {
System.loadLibrary("ffmpegutils");
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(new VideoView(this));
setContentView(R.layout.main);
mBitmap = Bitmap.createBitmap(320, 240, Bitmap.Config.ARGB_8888);
openFile();
Button btn = (Button) findViewById(R.id.frame_adv);
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
try {
drawFrame(mBitmap);
ImageView i = (ImageView) findViewById(R.id.frame);
i.setImageBitmap(mBitmap);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}}Jni code :
#include
#include
#include
#include <android></android>log.h>
#include <android></android>bitmap.h>
#include <libavcodec></libavcodec>avcodec.h>
#include <libavformat></libavformat>avformat.h>
#include <libswscale></libswscale>swscale.h>
#define LOG_TAG "FFMPEGSample"
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)
/* Cheat to keep things simple and just use some globals. */
AVFormatContext *pFormatCtx;
AVCodecContext *pCodecCtx;
AVFrame *pFrame;
AVFrame *pFrameRGB;
int videoStream;
/*
* Write a frame worth of video (in pFrame) into the Android bitmap
* described by info using the raw pixel buffer. It's a very inefficient
* draw routine, but it's easy to read. Relies on the format of the
* bitmap being 8bits per color component plus an 8bit alpha channel.
*/
static void fill_bitmap(AndroidBitmapInfo* info, void *pixels, AVFrame *pFrame) {
uint8_t *frameLine;
int yy;
for (yy = 0; yy < info->height; yy++) {
uint8_t* line = (uint8_t*) pixels;
frameLine = (uint8_t *) pFrame->data[0] + (yy * pFrame->linesize[0]);
int xx;
for (xx = 0; xx < info->width; xx++) {
int out_offset = xx * 4;
int in_offset = xx * 3;
line[out_offset] = frameLine[in_offset];
line[out_offset + 1] = frameLine[in_offset + 1];
line[out_offset + 2] = frameLine[in_offset + 2];
line[out_offset + 3] = 0;
}
pixels = (char*) pixels + info->stride;
}
}
void Java_com_churnlabs_ffmpegsample_MainActivity_openFile(JNIEnv * env,
jobject this) {
int ret;
int err;
int i;
AVCodec *pCodec;
uint8_t *buffer;
int numBytes;
av_register_all();
LOGE("Registered formats***********************************");
err = av_open_input_file(&pFormatCtx, "file:///mnt/sdcard/android.3gp",
NULL, 0, NULL);
LOGE("Called open file***************************************************");
if (err != 0) {
LOGE(
"Couldn't open file****************************************************");
return;
}
LOGE(
"Opened file***********************************************************");
if (av_find_stream_info(pFormatCtx) < 0) {
LOGE(
"Unable to get stream info*****************************************");
return;
}
videoStream = -1;
for (i = 0; i < pFormatCtx->nb_streams; i++) {
if (pFormatCtx->streams[i]->codec->codec_type == CODEC_TYPE_VIDEO) {
videoStream = i;
break;
}
}
if (videoStream == -1) {
LOGE("Unable to find video stream");
return;
}
LOGI("Video stream is [%d]", videoStream);
pCodecCtx = pFormatCtx->streams[videoStream]->codec;
pCodec = avcodec_find_decoder(pCodecCtx->codec_id);
if (pCodec == NULL) {
LOGE("Unsupported codec**********************************************");
return;
}
if (avcodec_open(pCodecCtx, pCodec) < 0) {
LOGE("Unable to open codec***************************************");
return;
}
pFrame = avcodec_alloc_frame();
pFrameRGB = avcodec_alloc_frame();
LOGI("Video size is [%d x %d]", pCodecCtx->width, pCodecCtx->height);
numBytes = avpicture_get_size(PIX_FMT_RGB24, pCodecCtx->width,
pCodecCtx->height);
buffer = (uint8_t *) av_malloc(numBytes * sizeof(uint8_t));
avpicture_fill((AVPicture *) pFrameRGB, buffer, PIX_FMT_RGB24,
pCodecCtx->width, pCodecCtx->height);
}
void Java_com_churnlabs_ffmpegsample_MainActivity_drawFrame(JNIEnv * env,
jobject this, jstring bitmap) {
AndroidBitmapInfo info;
void* pixels;
int ret;
int err;
int i;
int frameFinished = 0;
AVPacket packet;
static struct SwsContext *img_convert_ctx;
int64_t seek_target;
if ((ret = AndroidBitmap_getInfo(env, bitmap, &info)) < 0) {
LOGE("AndroidBitmap_getInfo() failed ! error=%d", ret);
return;
}
LOGE(
"Checked on the bitmap*************************************************");
if ((ret = AndroidBitmap_lockPixels(env, bitmap, &pixels)) < 0) {
LOGE("AndroidBitmap_lockPixels() failed ! error=%d", ret);
}
LOGE(
"Grabbed the pixels*******************************************************");
i = 0;
while ((i == 0) && (av_read_frame(pFormatCtx, &packet) >= 0)) {
if (packet.stream_index == videoStream) {
avcodec_decode_video2(pCodecCtx, pFrame, &frameFinished, &packet);
if (frameFinished) {
LOGE("packet pts %llu", packet.pts);
// This is much different than the tutorial, sws_scale
// replaces img_convert, but it's not a complete drop in.
// This version keeps the image the same size but swaps to
// RGB24 format, which works perfect for PPM output.
int target_width = 320;
int target_height = 240;
img_convert_ctx = sws_getContext(pCodecCtx->width,
pCodecCtx->height, pCodecCtx->pix_fmt, target_width,
target_height, PIX_FMT_RGB24, SWS_BICUBIC, NULL, NULL,
NULL);
if (img_convert_ctx == NULL) {
LOGE("could not initialize conversion context\n");
return;
}
sws_scale(img_convert_ctx,
(const uint8_t* const *) pFrame->data, pFrame->linesize,
0, pCodecCtx->height, pFrameRGB->data,
pFrameRGB->linesize);
// save_frame(pFrameRGB, target_width, target_height, i);
fill_bitmap(&info, pixels, pFrameRGB);
i = 1;
}
}
av_free_packet(&packet);
}
AndroidBitmap_unlockPixels(env, bitmap);
}
int seek_frame(int tsms) {
int64_t frame;
frame = av_rescale(tsms, pFormatCtx->streams[videoStream]->time_base.den,
pFormatCtx->streams[videoStream]->time_base.num);
frame /= 1000;
if (avformat_seek_file(pFormatCtx, videoStream, 0, frame, frame,
AVSEEK_FLAG_FRAME) < 0) {
return 0;
}
avcodec_flush_buffers(pCodecCtx);
return 1;
}Log Trace
0): <6>AUO_TOUCH: ts_irqHandler: before disable_irq()
D/PrintK ( 57): <6>AUO_TOUCH: ts_irqWorkHandler: P1(313,750),P2(0,0)
D/PrintK ( 0): <6>AUO_TOUCH: ts_irqHandler: before disable_irq()
D/PrintK ( 57): <6>AUO_TOUCH: ts_irqWorkHandler: P1(0,0),P2(0,0)
E/FFMPEGSample( 2882): Checked on the bitmap*************************************************
E/FFMPEGSample( 2882): Grabbed the pixels*******************************************************
E/FFMPEGSample( 2882): packet pts 0
F/PrintK ( 2882): <2>Exception!!! bs.ffmpegsample: unhandled page fault (11) at 0x0000000c, code 0x017
F/PrintK ( 2882): <2>Exception!!! bs.ffmpegsample: unhandled page fault (11) at 0x0000000c, code 0x017
I/DEBUG ( 86): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
F/DEBUG ( 86): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG ( 86): Build fingerprint: 'dell/streak/streak/8x50:2.2.2/FRG83G/eng.cmbuild.20110317.163900:user/release-keys'
I/DEBUG ( 86): Exception!!! pid: 2882, tid: 2882 >>> com.churnlabs.ffmpegsample <<<
F/DEBUG ( 86): Exception!!! pid: 2882, tid: 2882 >>> com.churnlabs.ffmpegsample <<<
I/DEBUG ( 86): signal 11 (SIGSEGV), fault addr 0000000c
F/DEBUG ( 86): signal 11 (SIGSEGV), fault addr 0000000c
I/DEBUG ( 86): r0 00000070 r1 00000000 r2 0024fca8 r3 afd42328
F/DEBUG ( 86): r0 00000070 r1 00000000 r2 0024fca8 r3 afd42328
I/DEBUG ( 86): r4 00000000 r5 00000000 r6 0000062c r7 0000a000
F/DEBUG ( 86): r4 00000000 r5 00000000 r6 0000062c r7 0000a000
I/DEBUG ( 86): r8 be9794f0 r9 428ab9d8 10 00000003 fp be979830
F/DEBUG ( 86): r8 be9794f0 r9 428ab9d8 10 00000003 fp be979830
I/DEBUG ( 86): ip ffffff90 sp be979448 lr afd0c633 pc afd0c320 cpsr 80000030
F/DEBUG ( 86): ip ffffff90 sp be979448 lr afd0c633 pc afd0c320 cpsr 80000030
I/DEBUG ( 86): d0 6472656767756265 d1 0000000000000000
I/DEBUG ( 86): d2 0000000000000000 d3 0000000044480000
I/DEBUG ( 86): d4 8000000000000000 d5 000000003f800000
I/DEBUG ( 86): d6 0000000000000000 d7 4448000043f00000
I/DEBUG ( 86): d8 0000000000000000 d9 0000000000000000
I/DEBUG ( 86): d10 0000000000000000 d11 0000000000000000
I/DEBUG ( 86): d12 0000000000000000 d13 0000000000000000
I/DEBUG ( 86): d14 0000000000000000 d15 0000000000000000
I/DEBUG ( 86): d16 0000000000000000 d17 0000000000000000
I/DEBUG ( 86): d18 0000000000000000 d19 0000000000000000
I/DEBUG ( 86): d20 3ff0000000000000 d21 8000000000000000
I/DEBUG ( 86): d22 0000000000000000 d23 0000000500010004
I/DEBUG ( 86): d24 0101010101010101 d25 0000000000000000
I/DEBUG ( 86): d26 0000000000000000 d27 0000000000000000
I/DEBUG ( 86): d28 0000000000000000 d29 3ff0000000000000
I/DEBUG ( 86): d30 0000000000000000 d31 3ff0000000000000
I/DEBUG ( 86): scr 80000012
I/DEBUG ( 86):
I/DEBUG ( 86): #00 pc 0000c320 /system/lib/libc.so
F/DEBUG ( 86): #00 pc 0000c320 /system/lib/libc.so
I/DEBUG ( 86): #01 pc 0000c62e /system/lib/libc.so
F/DEBUG ( 86): #01 pc 0000c62e /system/lib/libc.so
I/DEBUG ( 86): #02 pc 0000cd3e /system/lib/libc.so
F/DEBUG ( 86): #02 pc 0000cd3e /system/lib/libc.so
I/DEBUG ( 86): #03 pc 0002d2c4 /system/lib/libskia.so
F/DEBUG ( 86): #03 pc 0002d2c4 /system/lib/libskia.so
I/DEBUG ( 86): #04 pc 000693ec /system/lib/libskia.so
F/DEBUG ( 86): #04 pc 000693ec /system/lib/libskia.so
I/DEBUG ( 86): #05 pc 00064d70 /system/lib/libskia.so
F/DEBUG ( 86): #05 pc 00064d70 /system/lib/libskia.so
I/DEBUG ( 86): #06 pc 0004dea8 /system/lib/libandroid_runtime.so
F/DEBUG ( 86): #06 pc 0004dea8 /system/lib/libandroid_runtime.so
I/DEBUG ( 86): #07 pc 00016df4 /system/lib/libdvm.so
F/DEBUG ( 86): #07 pc 00016df4 /system/lib/libdvm.so
I/DEBUG ( 86): #08 pc 00042904 /system/lib/libdvm.so
F/DEBUG ( 86): #08 pc 00042904 /system/lib/libdvm.so
I/DEBUG ( 86): #09 pc 0001bd58 /system/lib/libdvm.so
F/DEBUG ( 86): #09 pc 0001bd58 /system/lib/libdvm.so
I/DEBUG ( 86): #10 pc 00022550 /system/lib/libdvm.so
F/DEBUG ( 86): #10 pc 00022550 /system/lib/libdvm.so
I/DEBUG ( 86): #11 pc 000213f0 /system/lib/libdvm.so
F/DEBUG ( 86): #11 pc 000213f0 /system/lib/libdvm.so
I/DEBUG ( 86): #12 pc 00058c4a /system/lib/libdvm.so
F/DEBUG ( 86): #12 pc 00058c4a /system/lib/libdvm.so
I/DEBUG ( 86): #13 pc 00060e72 /system/lib/libdvm.so
F/DEBUG ( 86): #13 pc 00060e72 /system/lib/libdvm.so
I/DEBUG ( 86): #14 pc 0001bd58 /system/lib/libdvm.so
F/DEBUG ( 86): #14 pc 0001bd58 /system/lib/libdvm.so
I/DEBUG ( 86): #15 pc 00022550 /system/lib/libdvm.so
F/DEBUG ( 86): #15 pc 00022550 /system/lib/libdvm.so
I/DEBUG ( 86): #16 pc 000213f0 /system/lib/libdvm.so
F/DEBUG ( 86): #16 pc 000213f0 /system/lib/libdvm.so
I/DEBUG ( 86): #17 pc 00058a90 /system/lib/libdvm.so
F/DEBUG ( 86): #17 pc 00058a90 /system/lib/libdvm.so
I/DEBUG ( 86): #18 pc 0004525e /system/lib/libdvm.so
F/DEBUG ( 86): #18 pc 0004525e /system/lib/libdvm.so
I/DEBUG ( 86): #19 pc 0002e574 /system/lib/libandroid_runtime.so
F/DEBUG ( 86): #19 pc 0002e574 /system/lib/libandroid_runtime.so
I/DEBUG ( 86): #20 pc 0002f5f6 /system/lib/libandroid_runtime.so
F/DEBUG ( 86): #20 pc 0002f5f6 /system/lib/libandroid_runtime.so
I/DEBUG ( 86): #21 pc 00008ca8 /system/bin/app_process
F/DEBUG ( 86): #21 pc 00008ca8 /system/bin/app_process
I/DEBUG ( 86): #22 pc 0000d3d0 /system/lib/libc.so
F/DEBUG ( 86): #22 pc 0000d3d0 /system/lib/libc.so
I/DEBUG ( 86):
I/DEBUG ( 86): code around pc:
I/DEBUG ( 86): afd0c300 19d94f56 42ba690f 80a4f0c0 94001814
I/DEBUG ( 86): afd0c310 f08042a2 68d1809f 42916994 6895d00e
I/DEBUG ( 86): afd0c320 429668ee 8096f040 4296688e 8092f040
I/DEBUG ( 86): afd0c330 bf2442bd 608d60e9 e08bd21b b1116951
I/DEBUG ( 86): afd0c340 0514f102 6911e007 f102b191 e0020510
I/DEBUG ( 86):
I/DEBUG ( 86): code around lr:
I/DEBUG ( 86): afd0c610 60f11008 f8c1608e 4e31c00c f10319a1
I/DEBUG ( 86): afd0c620 608a0608 e04b614d b1b2684a f7ff4628
I/DEBUG ( 86): afd0c630 e00ffe23 0f41f115 f04fbf88 d80c35ff
I/DEBUG ( 86): afd0c640 350b4927 0507f025 68431860 4628b12b
I/DEBUG ( 86): afd0c650 fc1cf7ff 28004606 4e21d132 689119a2
I/DEBUG ( 86):
I/DEBUG ( 86): stack:
I/DEBUG ( 86): be979408 000001e0
I/DEBUG ( 86): be97940c be979494 [stack]
I/DEBUG ( 86): be979410 be979438 [stack]
I/DEBUG ( 86): be979414 be979478 [stack]
I/DEBUG ( 86): be979418 0012f484 [heap]
I/DEBUG ( 86): be97941c be979428 [stack]
I/DEBUG ( 86): be979420 00000000
I/DEBUG ( 86): be979424 ab163cec /system/lib/libskia.so
I/DEBUG ( 86): be979428 3f800000
I/DEBUG ( 86): be97942c 80000000 /system/lib/libicudata.so
I/DEBUG ( 86): be979430 00000000
I/DEBUG ( 86): be979434 80000000 /system/lib/libicudata.so
I/DEBUG ( 86): be979438 3f800000
I/DEBUG ( 86): be97943c 00000000
I/DEBUG ( 86): be979440 df002777
I/DEBUG ( 86): be979444 e3a070ad
I/DEBUG ( 86): #00 be979448 0024fd18 [heap]
I/DEBUG ( 86): be97944c afd4372c /system/lib/libc.so
I/DEBUG ( 86): be979450 000000c5
I/DEBUG ( 86): be979454 afd42328 /system/lib/libc.so
I/DEBUG ( 86): be979458 00000070
I/DEBUG ( 86): be97945c 0000062c
I/DEBUG ( 86): be979460 00000003
I/DEBUG ( 86): be979464 afd0c633 /system/lib/libc.so
I/DEBUG ( 86): #01 be979468 be9794c8 [stack]
I/DEBUG ( 86): be97946c 00000000
I/DEBUG ( 86): be979470 002576bc [heap]
I/DEBUG ( 86): be979474 ab163d2c /system/lib/libskia.so
I/DEBUG ( 86): be979478 00000000
I/DEBUG ( 86): be97947c 00000000
I/DEBUG ( 86): be979480 44480000 /system/framework/framework-res.apk
I/DEBUG ( 86): be979484 00000068
I/DEBUG ( 86): be979488 00000002
I/DEBUG ( 86): be97948c 00000068
I/DEBUG ( 86): be979490 00000003
I/DEBUG ( 86): be979494 afd0cd41 /system/lib/libc.so
E/Parcel ( 841): Reading a NULL string not supported here.Can any plz suggest me where I'm doing wrong.
-
Anomalie #4438 : Manque Msg :message:lien_reponse_message :
22 mars 2020Ça m’interroge...
Les chaines de langues sont dans ’forum’, là : https://git.spip.net/spip/forum/src/branch/master/lang/forum_fr.php#L129
Donc appeler `_T(’message:lien_reponse_message’)` ne donnera rien, quelque soit la version de SPIP.
Cette chaine (forum:lien_reponse_message) est appelé si le message a un `id_parent`.La question semble plutôt :
- soit `#OBJET` qui vaut ’message’ est erroné (ça devait être autre chose (genre l’objet du parent), mais un bug remplit a rempli ’message’ ?
- soit on avait jamais eu ce cas simplement ? -
Variable in nested for loop not working correctly [duplicate]
30 janvier 2023, par SeanMrndThe code below works pretty much as intended, but it works for only one video file at a time. All attempts at nesting it inside a
for %%a in (\*.mp4)
loop breaks it. The%duration%
no longer outputs a value (or I'm doing something wrong), and as such, all of the arithmetic functions break.

This code works (open to changes suggestions) :


setlocal EnableExtensions EnableDelayedExpansion
IF EXIST output.gif DEL /F output.gif
IF EXIST test_preview.mp4 DEL /F test_preview.mp4
for /F "delims=" %%I in ('ffprobe.exe -v error -show_entries format^=duration -of default^=noprint_wrappers^=1:nokey^=1 test.mp4 2^>^&1') do (
 set "duration=%%I"
)
echo %duration%
set /a r=%duration%
set /a d1=r/10
set /a d2=r*2/10
set /a d3=r*3/10
set /a d4=r*4/10
set /a d5=r*5/10
set /a d6=r*6/10
set /a d7=r*7/10
set /a d8=r*8/10
set /a d9=r*9/10

ffmpeg -y -ss %d1% -i test.mp4 -c copy -t 1.5 "output/test_output1.mp4"
ffmpeg -y -ss %d2% -i test.mp4 -c copy -t 1.5 "output/test_output2.mp4"
ffmpeg -y -ss %d3% -i test.mp4 -c copy -t 1.5 "output/test_output3.mp4"
ffmpeg -y -ss %d4% -i test.mp4 -c copy -t 1.5 "output/test_output4.mp4"
ffmpeg -y -ss %d5% -i test.mp4 -c copy -t 1.5 "output/test_output5.mp4"
ffmpeg -y -ss %d6% -i test.mp4 -c copy -t 1.5 "output/test_output6.mp4"
ffmpeg -y -ss %d7% -i test.mp4 -c copy -t 1.5 "output/test_output7.mp4"
ffmpeg -y -ss %d8% -i test.mp4 -c copy -t 1.5 "output/test_output8.mp4"
ffmpeg -y -ss %d9% -i test.mp4 -c copy -t 1.5 "output/test_output9.mp4"
(
 echo file 'output/test_output1.mp4'
 echo file 'output/test_output2.mp4'
 echo file 'output/test_output3.mp4'
 echo file 'output/test_output4.mp4'
 echo file 'output/test_output5.mp4'
 echo file 'output/test_output6.mp4' 
 echo file 'output/test_output7.mp4'
 echo file 'output/test_output8.mp4'
 echo file 'output/test_output9.mp4'
)>list.txt

ffmpeg -safe 0 -f concat -i list.txt -c copy test_preview.mp4
ffmpeg -i test_preview.mp4 -vf scale=320:-1 output.gif
IF EXIST test_preview.mp4 DEL /F test_preview.mp4

pause



This code does not, in an attempt to automate this for my whole library I replaced most file name references with
%%~na


setlocal EnableExtensions EnableDelayedExpansion
for %%a in (*.mp4) DO (
 IF EXIST %%~na.gif DEL /F %%~na.gif
 set /a y=10
 for /F "delims=" %%I in ('ffprobe.exe -v error -show_entries format^=duration -of default^=noprint_wrappers^=1:nokey^=1 %%~na.mp4 2^>^&1') do set "duration=%%I"
 echo %duration% %%I
 set /a r=%duration%
 set /a d1=r/10
 set /a d2=r*2/10
 set /a d3=r*3/10
 set /a d4=r*4/10
 set /a d5=r*5/10
 set /a d6=r*6/10
 set /a d7=r*7/10
 set /a d8=r*8/10d
 set /a d9=r*9/10

 ffmpeg -y -ss %d1% -i "%%~na.mp4" -c copy -t 1.5 "output/%%~na_output1.mp4"
 ffmpeg -y -ss %d2% -i %%~na.mp4 -c copy -t 1.5 "output/%%~na_output2.mp4"
 ffmpeg -y -ss %d3% -i %%~na.mp4 -c copy -t 1.5 "output/%%~na_output3.mp4"
 ffmpeg -y -ss %d4% -i %%~na.mp4 -c copy -t 1.5 "output/%%~na_output4.mp4"
 ffmpeg -y -ss %d5% -i %%~na.mp4 -c copy -t 1.5 "output/%%~na_output5.mp4"
 ffmpeg -y -ss %d6% -i %%~na.mp4 -c copy -t 1.5 "output/%%~na_output6.mp4"
 ffmpeg -y -ss %d7% -i %%~na.mp4 -c copy -t 1.5 "output/%%~na_output7.mp4"
 ffmpeg -y -ss %d8% -i %%~na.mp4 -c copy -t 1.5 "output/%%~na_output8.mp4"
 ffmpeg -y -ss %d9% -i %%~na.mp4 -c copy -t 1.5 "output/%%~na_output9.mp4"
 (
 echo file 'output/%%~na_output1.mp4'
 echo file 'output/%%~na_output2.mp4'
 echo file 'output/%%~na_output3.mp4'
 echo file 'output/%%~na_output4.mp4'
 echo file 'output/%%~na_output5.mp4'
 echo file 'output/%%~na_output6.mp4' 
 echo file 'output/%%~na_output7.mp4'
 echo file 'output/%%~na_output8.mp4'
 echo file 'output/%%~na_output9.mp4'
 )>%%~na_list.txt
 ffmpeg -safe 0 -f concat -i %%~na_list.txt -c copy %%~na_preview.mp4
 ffmpeg -i %%~na_preview.mp4 -vf scale=320:-1 output.gif
 IF EXIST %%~na_preview.mp4 DEL /F %%~na_preview.mp4
)

pause