
Recherche avancée
Médias (1)
-
Revolution of Open-source and film making towards open film making
6 octobre 2011, par
Mis à jour : Juillet 2013
Langue : English
Type : Texte
Autres articles (75)
-
Gestion de la ferme
2 mars 2010, parLa ferme est gérée dans son ensemble par des "super admins".
Certains réglages peuvent être fais afin de réguler les besoins des différents canaux.
Dans un premier temps il utilise le plugin "Gestion de mutualisation" -
Utilisation et configuration du script
19 janvier 2011, parInformations spécifiques à la distribution Debian
Si vous utilisez cette distribution, vous devrez activer les dépôts "debian-multimedia" comme expliqué ici :
Depuis la version 0.3.1 du script, le dépôt peut être automatiquement activé à la suite d’une question.
Récupération du script
Le script d’installation peut être récupéré de deux manières différentes.
Via svn en utilisant la commande pour récupérer le code source à jour :
svn co (...) -
Script d’installation automatique de MediaSPIP
25 avril 2011, parAfin de palier aux difficultés d’installation dues principalement aux dépendances logicielles coté serveur, un script d’installation "tout en un" en bash a été créé afin de faciliter cette étape sur un serveur doté d’une distribution Linux compatible.
Vous devez bénéficier d’un accès SSH à votre serveur et d’un compte "root" afin de l’utiliser, ce qui permettra d’installer les dépendances. Contactez votre hébergeur si vous ne disposez pas de cela.
La documentation de l’utilisation du script d’installation (...)
Sur d’autres sites (10590)
-
Php - Get video duration from a file hosted on amazon S3 server
8 mai 2017, par Michael LeeI am developing back-end API with php to get the duration from a video file hosted on amazon S3. The API server is hosted on amazon EC2 and the video file is uploaded on amazon S3. The problem is when I request to API server, it has to response the information of the video file hosted on amazon S3 such as duration, file size, resolution etc. At least, it must response the video. I’ve followed codes by using ffmpeg such as below, but it’s not working.
<?php
$file = 'https://videoapptest-bucket.s3.amazonaws.com/video/10/44__55_f03876434e48d5fed7d6982b0cf578de_u_00000.ts';
$result = shell_exec('ffmpeg -i ' . escapeshellcmd($file) . ' 2>&1');
preg_match('/(?<=Duration: )(\d{2}:\d{2}:\d{2})\.\d{2}/', $result, $match);
print_r($match);
?>How can I get the video duration from a file hosted on amazon s3 with ffmpeg or another tool ?
-
FFMPEG convert NV12 format to NV12 with the same height and width
7 septembre 2022, par Chun WangI want to use FFmpeg4.2.2 to convert the input NV12 format to output NV12 format with the same height and width. I used sws_scale conversion, but the output frame's colors are all green.


P.S. It seems no need to use swscale to get the same width,same height and same format frame,but it is neccessary in my project for dealing with other frames.


I have successfully converted the input NV12 format to output NV12 format with the different height and width, the output frame's colors were right.But I FAILED to convert NV12 to NV12 with the same height and width. It was so weird, I couldn't know why :(


I want to know what the reason is and what I should do.
The following is my code.swsCtx4 was used for converting NV12 format to output NV12 format. Others were used for other formats converted test.
Thank you for you help


//the main code is 
 AVFrame* frame_nv12 = av_frame_alloc();
 frame_nv12->width = in_width;
 frame_nv12->height = in_height;
 frame_nv12->format = AV_PIX_FMT_NV12;
 uint8_t* frame_buffer_nv12 = (uint8_t*)av_malloc(av_image_get_buffer_size(AV_PIX_FMT_NV12, in_width, in_height , 1));
 av_image_fill_arrays(frame_nv12->data, frame_nv12->linesize, frame_buffer_nv12, AV_PIX_FMT_NV12, in_width, in_height, 1);


 AVFrame* frame2_nv12 = av_frame_alloc();
 frame2_nv12->width = in_width1;
 frame2_nv12->height = in_height1;
 frame2_nv12->format = AV_PIX_FMT_NV12;

 uint8_t* frame2_buffer_nv12 = (uint8_t*)av_malloc(av_image_get_buffer_size(AV_PIX_FMT_NV12, in_width1, in_height1, 1));
 av_image_fill_arrays(frame2_nv12->data, frame2_nv12->linesize, frame2_buffer_nv12, AV_PIX_FMT_NV12, in_width1, in_height1, 1);
 
 SwsContext* swsCtx4 = nullptr;
 swsCtx4 = sws_getContext(in_width, in_height, AV_PIX_FMT_NV12, in_width1, in_height1, AV_PIX_FMT_NV12,
 SWS_BILINEAR | SWS_PRINT_INFO, NULL, NULL, NULL);
 printf("swsCtx4\n");
 
 ret = sws_scale(swsCtx4, frame_nv12->data, frame_nv12->linesize, 0, frame_nv12->height, frame2_nv12->data, frame2_nv12->linesize);
 if (ret < 0) {
 printf("sws_4scale failed\n");
 }
 



//the complete code
extern "C" {
#include <libavcodec></libavcodec>avcodec.h>
#include <libavformat></libavformat>avformat.h>
#include <libavutil></libavutil>imgutils.h>
#include <libswscale></libswscale>swscale.h>
}
#include <seeker></seeker>loggerApi.h>
#include "seeker/common.h"
#include <iostream>

//解决原因:pts设置为0,dts设置为0
#define FILE_SRC "testPicFilter.yuv" //源文件
#define FILE_DES "test11.yuv" //源文件

int count = 0;


int main(int argc, char* argv[])
{
 av_register_all();

 int ret = 0;
 
 //std::this_thread::sleep_for(std::chrono::milliseconds(5000));
 int count1 = 1;
 int piccount;
 int align = 1;


 /*打开输入yuv文件*/
 FILE* fp_in = fopen(FILE_SRC, "rb+");
 if (fp_in == NULL)
 {
 printf("文件打开失败\n");
 return 0;
 }
 int in_width = 640;
 int in_height = 360;
 int in_width1 = 640;
 int in_height1 = 360;
 


 /*处理后的文件*/
 FILE* fp_out = fopen(FILE_DES, "wb+");
 if (fp_out == NULL)
 {
 printf("文件创建失败\n");
 return 0;
 }
 char buff[50];

 AVFrame* frame_in = av_frame_alloc();
 unsigned char* frame_buffer_in;
 frame_buffer_in = (unsigned char*)av_malloc(av_image_get_buffer_size(AV_PIX_FMT_YUV420P, in_width, in_height, 1));
 /*根据图像设置图像指针和内存对齐方式*/
 av_image_fill_arrays(frame_in->data, frame_in->linesize, frame_buffer_in, AV_PIX_FMT_YUV420P, in_width, in_height, 1);

 frame_in->width = in_width;
 frame_in->height = in_height;
 frame_in->format = AV_PIX_FMT_YUV420P;


 //输入yuv转成frame_nv12
 AVFrame* frame_nv12 = av_frame_alloc();
 frame_nv12->width = in_width;
 frame_nv12->height = in_height;
 frame_nv12->format = AV_PIX_FMT_NV12;
 uint8_t* frame_buffer_nv12 = (uint8_t*)av_malloc(av_image_get_buffer_size(AV_PIX_FMT_NV12, in_width, in_height , 1));
 av_image_fill_arrays(frame_nv12->data, frame_nv12->linesize, frame_buffer_nv12, AV_PIX_FMT_NV12, in_width, in_height, 1);


 AVFrame* frame2_nv12 = av_frame_alloc();
 frame2_nv12->width = in_width1;
 frame2_nv12->height = in_height1;
 frame2_nv12->format = AV_PIX_FMT_NV12;

 uint8_t* frame2_buffer_nv12 = (uint8_t*)av_malloc(av_image_get_buffer_size(AV_PIX_FMT_NV12, in_width1, in_height1, 1));
 av_image_fill_arrays(frame2_nv12->data, frame2_nv12->linesize, frame2_buffer_nv12, AV_PIX_FMT_NV12, in_width1, in_height1, 1);


 
 //输入rgb转成yuv
 AVFrame* frame_yuv = av_frame_alloc();
 frame_yuv->width = in_width;
 frame_yuv->height = in_height;
 frame_yuv->format = AV_PIX_FMT_YUV420P;
 uint8_t* frame_buffer_yuv = (uint8_t*)av_malloc(av_image_get_buffer_size(AV_PIX_FMT_YUV420P, in_width, in_height, 1));
 av_image_fill_arrays(frame_yuv->data, frame_yuv->linesize, frame_buffer_yuv,
 AV_PIX_FMT_YUV420P, in_width, in_height, 1);



 SwsContext* swsCtx = nullptr;
 swsCtx = sws_getContext(in_width, in_height, AV_PIX_FMT_YUV420P, in_width, in_height, AV_PIX_FMT_NV12,
 SWS_BILINEAR | SWS_PRINT_INFO, NULL, NULL, NULL);
 printf("swsCtx\n");

 SwsContext* swsCtx4 = nullptr;
 swsCtx4 = sws_getContext(in_width, in_height, AV_PIX_FMT_NV12, in_width1, in_height1, AV_PIX_FMT_NV12,
 SWS_BILINEAR | SWS_PRINT_INFO, NULL, NULL, NULL);
 printf("swsCtx4\n");

 
 SwsContext* swsCtx2 = nullptr;
 swsCtx2 = sws_getContext(in_width1, in_height1, AV_PIX_FMT_NV12, in_width, in_height, AV_PIX_FMT_YUV420P,
 SWS_BILINEAR | SWS_PRINT_INFO, NULL, NULL, NULL);
 printf("swsCtx2\n");





 while (1)
 {


 count++;

 if (fread(frame_buffer_in, 1, in_width * in_height * 3 / 2, fp_in) != in_width * in_height * 3 / 2)
 {
 break;
 }

 frame_in->data[0] = frame_buffer_in;
 frame_in->data[1] = frame_buffer_in + in_width * in_height;
 frame_in->data[2] = frame_buffer_in + in_width * in_height * 5 / 4;


 //转NV12格式
 int ret = sws_scale(swsCtx, frame_in->data, frame_in->linesize, 0, frame_in->height, frame_nv12->data, frame_nv12->linesize);
 if (ret < 0) {
 printf("sws_scale swsCtx failed\n");
 }


 ret = sws_scale(swsCtx4, frame_nv12->data, frame_nv12->linesize, 0, frame_nv12->height, frame2_nv12->data, frame2_nv12->linesize);
 if (ret < 0) {
 printf("sws_scale swsCtx4 failed\n");
 }
 

 if (ret > 0) {
 
 int ret2 = sws_scale(swsCtx2, frame2_nv12->data, frame2_nv12->linesize, 0, frame2_nv12->height, frame_yuv->data, frame_yuv->linesize);
 if (ret2 < 0) {
 printf("sws_scale swsCtx2 failed\n");
 }
 I_LOG("frame_yuv:{},{}", frame_yuv->width, frame_yuv->height);

 
 //I_LOG("frame_yuv:{}", frame_yuv->format);

 if (frame_yuv->format == AV_PIX_FMT_YUV420P)
 {

 for (int i = 0; i < frame_yuv->height; i++)
 {
 fwrite(frame_yuv->data[0] + frame_yuv->linesize[0] * i, 1, frame_yuv->width, fp_out);
 }
 for (int i = 0; i < frame_yuv->height / 2; i++)
 {
 fwrite(frame_yuv->data[1] + frame_yuv->linesize[1] * i, 1, frame_yuv->width / 2, fp_out);
 }
 for (int i = 0; i < frame_yuv->height / 2; i++)
 {
 fwrite(frame_yuv->data[2] + frame_yuv->linesize[2] * i, 1, frame_yuv->width / 2, fp_out);
 }
 printf("yuv to file\n");
 }
 }

 }


 fclose(fp_in);
 fclose(fp_out);
 av_frame_free(&frame_in);
 av_frame_free(&frame_nv12);
 av_frame_free(&frame_yuv);
 sws_freeContext(swsCtx);
 sws_freeContext(swsCtx2);
 sws_freeContext(swsCtx4);

 //std::this_thread::sleep_for(std::chrono::milliseconds(8000));

 return 0;

}



</iostream>


-
ffmpeg image sequence from text file not rendering correctly
4 juillet 2018, par RichI’ve been working with ffmpeg and I have got it to work perfectly quite a few times, but as of recent I am running into an issue where all the images from my text file arent used.
My text file looks like -
ffconcat version 1.0
file 'gallery-house-77-west-55th-street-01.jpg'
duration 4.44
file 'img03.jpg'
duration 4.44
file 'inside.png'
duration 4.44
file 'placeholder.png'(amount of files, file names and extensions will always vary)
And I’ve tried several combinations but as of now my ffmpeg function looks like —
ffmpeg -i audio.mp3 -safe 0 -f concat -i paths.txt -c:a copy -c:v libx264 \
-vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,fps=25,format=yuv420p" -vsync vfr -movflags +faststart -y output.mp4 2>&1');When trying to run it, the video seems to convert but has various weird behaviors - sometimes only the middle file(image) in the list is shown or the first 2 only are shown/rendered.
The audio is playing correctly though.
I’ve tried setting the framerate for the input and I also tried setting it for the output but it leads to more strange behavior.
This is what is echoed when running my above ffmpeg command -
libavutil 56. 15.100 / 56. 15.100
libavcodec 58. 19.100 / 58. 19.100
libavformat 58. 13.100 / 58. 13.100
libavdevice 58. 4.100 / 58. 4.100
libavfilter 7. 18.100 / 7. 18.100
libswscale 5. 2.100 / 5. 2.100
libswresample 3. 2.100 / 3. 2.100
libpostproc 55. 2.100 / 55. 2.100
[mp3 @ 0xb46780] Estimating duration from bitrate, this may be inaccurate
Input #0, mp3, from 'audio.mp3':
Metadata:
encoder : Lavf57.71.100
Duration: 00:00:19.98, start: 0.000000, bitrate: 48 kb/s
Stream #0:0: Audio: mp3, 22050 Hz, mono, fltp, 48 kb/s
Input #1, concat, from 'paths.txt':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #1:0: Video: mjpeg, yuvj444p(pc, bt470bg/unknown/unknown), 754x424 [SAR 72:72 DAR 377:212], 25 tbr, 25 tbn, 25 tbc
Stream mapping:
Stream #1:0 -> #0:0 (mjpeg (native) -> h264 (libx264))
Stream #0:0 -> #0:1 (copy)
Press [q] to stop, [?] for help
[swscaler @ 0xba25c0] deprecated pixel format used, make sure you did set range correctly
[libx264 @ 0xb710c0] using SAR=3393/3392
[libx264 @ 0xb710c0] using cpu capabilities: none!
[libx264 @ 0xb710c0] profile High, level 3.1
[libx264 @ 0xb710c0] 264 - core 155 r2901 7d0ff22 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=22 lookahead_threads=3 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'output.mp4':
Metadata:
encoder : Lavf58.13.100
Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 3393:3392 DAR 377:212], q=-1--1, 25 fps, 12800 tbn, 25 tbc
Metadata:
encoder : Lavc58.19.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream #0:1: Audio: mp3 (mp4a / 0x6134706D), 22050 Hz, mono, fltp, 48 kb/s
[swscaler @ 0xb93140] deprecated pixel format used, make sure you did set range correctly
[swscaler @ 0xb93140] Warning: data is not aligned! This can lead to a speed loss
[mjpeg @ 0xb6e200] mjpeg: unsupported coding type (cd)
[mjpeg @ 0xb6e200] mjpeg: unsupported coding type (c8)
[mjpeg @ 0xb6e200] Found EOI before any SOF, ignoring
[mjpeg @ 0xb6e200] mjpeg: unsupported coding type (c7)
Error while decoding stream #1:0: Invalid data found when processing input
[mjpeg @ 0xb6e200] invalid id 94
Error while decoding stream #1:0: Invalid data found when processing input
[mp4 @ 0xb6f8c0] Starting second pass: moving the moov atom to the beginning of the file
frame= 1 fps=0.0 q=28.0 Lsize= 179kB time=00:00:19.95 bitrate= 73.6kbits/s speed=44.1x
video:58kB audio:117kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 2.446521%
[libx264 @ 0xb710c0] frame I:1 Avg QP:28.86 size: 58683
[libx264 @ 0xb710c0] mb I I16..4: 21.2% 59.8% 19.0%
[libx264 @ 0xb710c0] 8x8 transform intra:59.8%
[libx264 @ 0xb710c0] coded y,uvDC,uvAC intra: 50.5% 65.2% 31.6%
[libx264 @ 0xb710c0] i16 v,h,dc,p: 10% 60% 3% 28%
[libx264 @ 0xb710c0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 20% 27% 26% 4% 4% 4% 6% 4% 7%
[libx264 @ 0xb710c0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 20% 33% 10% 5% 6% 5% 8% 5% 7%
[libx264 @ 0xb710c0] i8c dc,h,v,p: 47% 34% 11% 8%
[libx264 @ 0xb710c0] kb/s:11736.60Any ideas whats causing the image sequence to fail ?
EDIT
After some more debugging I think it may be related to the fact that all the files dont have the same extension. How can I make it so that it doesn’t have to be that way or is that already a default setting and the issue is else where ?