
Recherche avancée
Médias (1)
-
Rennes Emotion Map 2010-11
19 octobre 2011, par
Mis à jour : Juillet 2013
Langue : français
Type : Texte
Autres articles (104)
-
Publier sur MédiaSpip
13 juin 2013Puis-je poster des contenus à partir d’une tablette Ipad ?
Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir -
Encoding and processing into web-friendly formats
13 avril 2011, parMediaSPIP automatically converts uploaded files to internet-compatible formats.
Video files are encoded in MP4, Ogv and WebM (supported by HTML5) and MP4 (supported by Flash).
Audio files are encoded in MP3 and Ogg (supported by HTML5) and MP3 (supported by Flash).
Where possible, text is analyzed in order to retrieve the data needed for search engine detection, and then exported as a series of image files.
All uploaded files are stored online in their original format, so you can (...) -
Les formats acceptés
28 janvier 2010, parLes commandes suivantes permettent d’avoir des informations sur les formats et codecs gérés par l’installation local de ffmpeg :
ffmpeg -codecs ffmpeg -formats
Les format videos acceptés en entrée
Cette liste est non exhaustive, elle met en exergue les principaux formats utilisés : h264 : H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 m4v : raw MPEG-4 video format flv : Flash Video (FLV) / Sorenson Spark / Sorenson H.263 Theora wmv :
Les formats vidéos de sortie possibles
Dans un premier temps on (...)
Sur d’autres sites (9737)
-
In ffmpeg, how do I scale dvdsub subtitles to match video size, using scale2ref filter ?
24 janvier 2017, par Steve MoseleyI have an mpeg file, recorded from live TV, containing video and multiple audio and subtitles streams. My eventual goal is to be able to create a smaller video file as the mpeg file is multi-gigabytes in size. My first step on that path is just to be able to select one each of the video, audio and subtitle streams and copy them to an mkv file, discarding the streams I’m not interested in. (I chose mkv as it will allow storing a dvdsub subtitle stream where other container formats wont.)
The problem I’m having is that the dvdsub subtitles appear very small when I play the output video, when I researched this I found that ffmpeg doesn’t automatically scale the subtitles to match the source video : https://trac.ffmpeg.org/ticket/4744
I have tried using the
scale2ref
filter, but I don’t understand the documentation, and the example they give makes no sense to me (see examples below).I have a command that selects the three streams and copies 1 minute to the output, as follows :
ffmpeg -ss 00:28:00.200 -i Hillary-2016-08-21.mpg -t 00:01:00.000 -map 0:0 -c:v copy -map 0:3 -c:a copy -map 0:6 -c:s dvdsub cut.mkv
Here’s the output :
Input #0, mpegts, from 'Hillary-2016-08-21.mpg':
Duration: 01:30:00.06, start: 20852.199389, bitrate: 6813 kb/s
Program 1
Stream #0:0[0xfa]: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p(tv, bt709, top first), 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 50 tbr, 90k tbn, 50 tbc
Stream #0:1[0x12c](eng): Audio: aac_latm (HE-AAC) ([17][0][0][0] / 0x0011), 48000 Hz, stereo, fltp
Stream #0:2[0x131](ita): Audio: aac_latm (HE-AAC) ([17][0][0][0] / 0x0011), 48000 Hz, stereo, fltp (visual impaired)
Stream #0:3[0x191](eng): Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz, 5.1(side), fltp, 384 kb/s
Stream #0:4[0x3ea]: Unknown: none ([11][0][0][0] / 0x000B)
Stream #0:5[0x3ec]: Unknown: none ([11][0][0][0] / 0x000B)
Stream #0:6[0x3fc](eng): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006) (hearing impaired)
Stream #0:7[0x1f40]: Unknown: none ([5][0][0][0] / 0x0005)
File 'cut.mkv' already exists. Overwrite ? [y/N] y
Output #0, matroska, to 'cut.mkv':
Metadata:
encoder : Lavf57.56.100
Stream #0:0: Video: h264 (Main) (H264 / 0x34363248), yuv420p(tv, bt709, top first), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 25 fps, 50 tbr, 1k tbn, 90k tbc
Stream #0:1(eng): Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, 5.1(side), 384 kb/s
Stream #0:2(eng): Subtitle: dvd_subtitle (dvdsub) (hearing impaired)
Metadata:
encoder : Lavc57.64.101 dvdsub
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:3 -> #0:1 (copy)
Stream #0:6 -> #0:2 (dvb_subtitle (dvbsub) -> dvd_subtitle (dvdsub))
Press [q] to stop, [?] for help
frame= 2956 fps=0.0 q=-1.0 Lsize= 39612kB time=00:00:59.99 bitrate=5408.7kbits/s speed= 216x
video:36702kB audio:2896kB subtitle:23kB other streams:0kB global headers:0kB muxing overhead: unknownThe documentation for
scale2ref
gives an example with an overlay, and I don’t want to overlay anything, I just want to resize the subtitles stream. Here’s their example :'scale2ref[b][a];[a][b]overlay'
The closest I’ve got is something like this :
ffmpeg -ss 00:28:00.200 -i Hillary-2016-08-21.mpg -t 00:01:00.000 -map 0:0 -c:v copy -map 0:3 -c:a copy -filter_complex "[0:6]scale2ref[b]" -map "[b]" cut.mkv
And the output is :
Input #0, mpegts, from 'Hillary-2016-08-21.mpg':
Duration: 01:30:00.06, start: 20852.199389, bitrate: 6813 kb/s
Program 1
Stream #0:0[0xfa]: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p(tv, bt709, top first), 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 50 tbr, 90k tbn, 50 tbc
Stream #0:1[0x12c](eng): Audio: aac_latm (HE-AAC) ([17][0][0][0] / 0x0011), 48000 Hz, stereo, fltp
Stream #0:2[0x131](ita): Audio: aac_latm (HE-AAC) ([17][0][0][0] / 0x0011), 48000 Hz, stereo, fltp (visual impaired)
Stream #0:3[0x191](eng): Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz, 5.1(side), fltp, 384 kb/s
Stream #0:4[0x3ea]: Unknown: none ([11][0][0][0] / 0x000B)
Stream #0:5[0x3ec]: Unknown: none ([11][0][0][0] / 0x000B)
Stream #0:6[0x3fc](eng): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006) (hearing impaired)
Stream #0:7[0x1f40]: Unknown: none ([5][0][0][0] / 0x0005)
Streamcopy requested for output stream 0:0, which is fed from a complex filtergraph. Filtering and streamcopy cannot be used together.And I don’t really understand how I can use a filter and direct my resized subtitle stream into the output file.
Any help appreciated ! Thanks !
-
Pointers returned by xlib don't match any existing window IDs
1er septembre 2022, par KroltanI'm using some X11 bindings to query some window information and later pass it to FFmpeg. FFmpeg expects a "window ID" given in hexadecimal notation.


This notation seems somewhat standard, as it is returned by programs like
xwininfo
orwmctrl
. I haven't found much information about it, but it seems to just be the hexadecimal representation of the window pointer ? If I take the ID string given by these programs and give it to FFmpeg, it is able to capture the window correctly :

$ xwininfo

xwininfo: Please select the window about which you
 would like information by clicking the
 mouse in that window.

xwininfo: Window id: 0x2800014 "Desktop — Plasma"

$ ffmpeg -f x11grab -window_id 0x2800014 -i :0+0,0 -f apng -vframes 1 out.png
# works fine



However, if I try listing all the windows in code :


var root = Window.None;
var parent = Window.None;
Xlib.XQueryTree(_display, Xlib.XDefaultRootWindow(_display), ref root, ref parent, out var children);

var ids = children
 .Select(ptr => $"0x{(ulong) ptr:x}")
 .ToArray();



I don't see
0x2800014
in the results (even disregardingleading zeroes), and if I try running FFmpeg on one of those results, it fails terribly :

$ ffmpeg -f x11grab -window_id 0x4400003 -i :0+0,0 -f apng -vframes 1

# snipped for brevity

Trailing option(s) found in the command: may be ignored.
[x11grab @ 0x55b811a8da40] Cannot get the image data event_error: response_type:0 error_code:8 sequence:10 resource_id:167772160 minor_code:4 major_code:130.
[x11grab @ 0x55b811a8da40] Continuing without shared memory.
[x11grab @ 0x55b811a8da40] Cannot get the image data event_error: response_type:0 error_code:8 sequence:11 resource_id:71303171 minor_code:0 major_code:73.
Input #0, x11grab, from ':0+0,0':
 Duration: N/A, bitrate: 38361 kb/s
 Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 200x200, 38361 kb/s, 29.97 fps, 1000k tbr, 1000k tbn
At least one output file must be specified



So I must conclude my guess that they are hex pointers is incorrect, or that the
Window
type is not the pointer itself, but then the question stands, how can I get the actual window IDs so I can pass them to FFmpeg ?

-
PHP FFMPEG match Instagram aspect ratio requirements
19 mai 2021, par LinesofcodeAs stated here, the Instagram API requirements to upload a video are :


- Picture size
- - Maximum columns (horizontal pixels): 1920
- - Minimum aspect ratio [cols / rows]: 4 / 5
- - Maximum aspect ratio [cols / rows]: 16 / 9



I'm having some problems figuring it out if the aspect ratio matches. I grab the
width
andheight
of the video like this :

$ffprobe = \FFMpeg\FFProbe::create();
$video = $ffprobe->streams($file)->videos()->first();
$width = $video->get('width');
$height = $video->get('height');



And then I know the ratio by dividing the
width
byheight
.

The Instagram requirements about Portrait & Landscape videos are :


Portrait - min: 0.8 ; max: 0.99
Landscape - min: 1.01 ; max: 1.78



So why does a video of 848x480 (aspect ratio of 1.76) fails to upload to Instagram by returning "The video format is not supported" and how can I be completely sure that the aspect ratio matches the requirements before trying to upload ?


Edit


The full validation of Instagram requirements :


$video = $ffprobe->streams($file)->videos()->first();
$audio = $ffprobe->streams($file)->audios()->first();
$codec = $video->get('codec_name');
$frameRate = eval('return ' . $video->get('avg_frame_rate') . ';'); // 30/1 -> 30
$width = $video->get('width');
$height = $video->get('height');
$duration = $video->get('duration');

$ratio = round($width / $height, 3);

// Portrait
if ($width < $height)
 if ($ratio < 0.8 || $ratio > 0.99)
 return false;
 
// Landscape
if ($width > $height)
 if ($ratio < 1.01 || $ratio > 1.78)
 return false;


if (!in_array($codec, ['h264', 'hevc']))
 return false;

if ($frameRate < 23 || $frameRate > 60)
 return false;

if ($width > 1920)
 return false;

if ($duration < 3 || $duration > 60)
 return false;

if ($audio)
{
 $aCodec = $audio->get('codec_name');

 if ($aCodec != 'aac')
 return false;
}

return true;



Sample not uploading into Instagram :