Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!
0 Пользователей и 1 Гость просматривают эту тему.
// test_ffmpg.c// victor00000 (c) 2018#define _GNU_SOURCE#include <stdio.h>#include <stdlib.h>#include <stdint.h>// ~$ gcc test_ffmpg.c -o test_ffmpg// ~$ ./test_ffmpg// ~$ totem /tmp/f.mp4//========================void putpix32(uint8_t * a, int x, int y, uint32_t pixel, int w){uint8_t *p = (uint8_t *) a + y * (w * 4) + x * 4;*(uint32_t *) p = pixel;}//=========================void clear32(int w, int h, uint8_t * a){int i;for (i = 0; i < w * h * 4; i++)a[i] = 255;}//========================void swapint(int *a, int *b){int c = *a;*a = *b;*b = c;}//====================void line32(int w, int h, int x1, int y1, int x2, int y2, uint8_t * a, uint32_t col){int xa1 = x1, ya1 = y1, xa2 = x2, ya2 = y2;if (xa1 > xa2)swapint(&xa1, &xa2);if (ya1 > ya2)swapint(&ya1, &ya2);xa2 -= xa1;ya2 -= ya1;if (xa2 < 0)xa2 = 0;if (ya2 < 0)ya2 = 0;int i, x, y;for (i = 0; i < 100; i++) {x = i * xa2 / 100;y = i * ya2 / 100;x += xa1;y += ya1;putpix32(a, x, y, col, w);}}//=================m0int main(){int w = 800 / 10, h = 600 / 10;uint8_t a[w * h * 4];FILE *fp;char *cmd;asprintf(&cmd,//====================dd1 "echo RECORD OPEN;" "ffmpeg -v error -y -f rawvideo " "-s %dx%d -pix_fmt rgba "// bgr24 "-r 15 -i - "// "-i %s "// "-vf vflip " "-acodec copy " "-shortest " "%s;echo \"RECORD CLOSE err:$?\"", w, h,// cmc[0], "/tmp/f.mp4");fp = popen(cmd, "w");int i, x, y;clear32(w, h, a);for (i = 0; i < 100; i++)fwrite(a, w * h * 4, 1, fp);for (i = 0; i < 1000; i++) {// y = 0;for (x = 0; x < w; x++) {clear32(w, h, a);line32(w, h, x, 0, x, h, a, 0);if (y >= i) {y = 0;fwrite(a, w * h * 4, 1, fp);} elsey++;}}pclose(fp);free(cmd);return 0;}
https://gyazo.com/f980ebaa1e29815c99060ea1e16e315c
видео https://youtu.be/SMMHff5D1Gs
Страница сгенерирована за 0.073 секунд. Запросов: 25.