
Recherche avancée
Médias (3)
-
MediaSPIP Simple : futur thème graphique par défaut ?
26 septembre 2013, par
Mis à jour : Octobre 2013
Langue : français
Type : Video
-
GetID3 - Bloc informations de fichiers
9 avril 2013, par
Mis à jour : Mai 2013
Langue : français
Type : Image
-
GetID3 - Boutons supplémentaires
9 avril 2013, par
Mis à jour : Avril 2013
Langue : français
Type : Image
Autres articles (99)
-
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 (...) -
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" ; -
Configuration spécifique pour PHP5
4 février 2011, parPHP5 est obligatoire, vous pouvez l’installer en suivant ce tutoriel spécifique.
Il est recommandé dans un premier temps de désactiver le safe_mode, cependant, s’il est correctement configuré et que les binaires nécessaires sont accessibles, MediaSPIP devrait fonctionner correctement avec le safe_mode activé.
Modules spécifiques
Il est nécessaire d’installer certains modules PHP spécifiques, via le gestionnaire de paquet de votre distribution ou manuellement : php5-mysql pour la connectivité avec la (...)
Sur d’autres sites (12825)
-
PHP FFMPEG match the Instagram Video Requirements
19 février 2021, par LinesofcodeThis are the Instagram requirements in order to upload a video :


- Container: MOV or MP4 (MPEG-4 Part 14), no edit lists, moov atom at the front of the file.
- Audio codec: AAC, 48khz sample rate maximum, 1 or 2 channels (mono or stereo).
- Video codec: HEVC or H264, progressive scan, closed GOP, 4:2:0 chroma subsampling.
- Frame rate: 23-60 FPS.
- Picture size:
 - Maximum columns (horizontal pixels): 1920
 - Minimum aspect ratio [cols / rows]: 4 / 5
 - Maximum aspect ratio [cols / rows]: 16 / 9
 - Video bitrate: VBR, 5Mbps maximum
- Audio bitrate: 128kbps
- Duration: 60 seconds maximum, 3 seconds minimum
- File size: 100MB maximum



I'm using the https://github.com/PHP-FFMpeg/PHP-FFMpeg library and I'm able to get the metadata of the video this way :


$ffprobe = \FFMpeg\FFProbe::create();
$video = $ffprobe->streams('my_sample_video.mp4')->videos()->first();
$audio = $ffprobe->streams('my_sample_video.mp4')->audios()->first();



Printing
$video
&$audio
returns respectively the following data :

--- video ---
[index] => 0
[codec_name] => h264
[codec_long_name] => H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
[profile] => Baseline
[codec_type] => video
[codec_time_base] => 1/1200
[codec_tag_string] => avc1
[codec_tag] => 0x31637661
[width] => 848
[height] => 480
[coded_width] => 848
[coded_height] => 480
[has_b_frames] => 0
[sample_aspect_ratio] => 0:1
[display_aspect_ratio] => 0:1
[pix_fmt] => yuv420p
[level] => 31
[color_range] => tv
[color_space] => bt709
[color_transfer] => bt709
[color_primaries] => bt709
[chroma_location] => left
[refs] => 1
[is_avc] => 1
[nal_length_size] => 4
[r_frame_rate] => 25/1
[avg_frame_rate] => 25/1
[time_base] => 1/600
[start_pts] => 0
[start_time] => 0.000000
[duration_ts] => 57888
[duration] => 96.480000
[bit_rate] => 1436391
[bits_per_raw_sample] => 8
[nb_frames] => 2412

--- audio ---
[index] => 1
[codec_name] => aac
[codec_long_name] => AAC (Advanced Audio Coding)
[profile] => LC
[codec_type] => audio
[codec_time_base] => 1/44100
[codec_tag_string] => mp4a
[codec_tag] => 0x6134706d
[sample_fmt] => fltp
[sample_rate] => 44100
[channels] => 2
[channel_layout] => stereo
[bits_per_sample] => 0
[r_frame_rate] => 0/0
[avg_frame_rate] => 0/0
[time_base] => 1/44100
[start_pts] => 0
[start_time] => 0.000000
[duration_ts] => 4255744
[duration] => 96.502132
[bit_rate] => 62026
[max_bit_rate] => 64000
[nb_frames] => 4156



Some things are easy to verify like the Video Codec, Audio Codec & Duration, but how to I manage to verify the rest ?


I also noticed that all the MP4 & MOV video samples I use, the metadata of
codec_long_name
always returns "MPEG-4 part 10" and the requirement is "MPEG-4 Part 14".

-
Compress video from Android before upload to server
26 juillet 2016, par Rahul PatelI am working with compress video using FFmpeg library.
selectedImagePath = getPath(selectedImage); // this is video path from gallery
File dir = new File(Environment.getExternalStorageDirectory().getPath(), "MyAPP" + "/" + "Video");
if (!dir.exists()) {
dir.mkdirs();
}
long time = System.currentTimeMillis();
String ffmpegCode = "ffmpeg -y -i " + selectedImagePath + " -strict experimental -s 480x320 -r 25 -vcodec mpeg4 -b 900k -ab 48000 -ac 2 -ar 22050 " + dir + "/" + time + "out.mp4";using this code I can compress video, but if there is
space between selected image path then this is not working
.I found the below solution from this LINK.
// Use this format to support files that contains spaces and special characters
String[] complexCommand = {"ffmpeg","-y" ,"-i", selectedImagePath,"-strict","experimental","-s", "480x320","-r","25", "-vcodec", "mpeg4", "-b", "900k", "-ab","48000", "-ac", "2", "-ar", "22050", dir + "/" + time + "out.mp4"};
Runtime.getRuntime().exec("chmod 744 "+dir + "/");
Process p = Runtime.getRuntime().exec(complexCommand);and Logcat :
07-26 18:59:24.609 29512-29535/com.examples.ffmpeg4android_demo I/OpenGLRenderer: Initialized EGL, version 1.4
07-26 18:59:24.616 29512-30045/com.examples.ffmpeg4android_demo W/System.err: java.io.IOException: Error running exec(). Command: [ffmpeg, -y, -i, /storage/emulated/0/WhatsApp/Media/WhatsApp Video/VID-20160726-WA0001.mp4, -strict, experimental, -s, 480x320, -r, 25, -vcodec, mpeg4, -b, 900k, -ab, 48000, -ac, 2, -ar, 22050, /storage/emulated/0/MyAPP/Video/1469539764559out.mp4] Working Directory: null Environment: null
07-26 18:59:24.622 29512-30045/com.examples.ffmpeg4android_demo W/System.err: at java.lang.ProcessManager.exec(ProcessManager.java:211)
07-26 18:59:24.622 29512-30045/com.examples.ffmpeg4android_demo W/System.err: at java.lang.Runtime.exec(Runtime.java:174)
07-26 18:59:24.623 29512-30045/com.examples.ffmpeg4android_demo W/System.err: at java.lang.Runtime.exec(Runtime.java:129)
07-26 18:59:24.623 29512-30045/com.examples.ffmpeg4android_demo W/System.err: at com.examples.ffmpeg4android.SimpleExample$TranscdingBackground1.doInBackground(SimpleExample.java:577)
07-26 18:59:24.623 29512-30045/com.examples.ffmpeg4android_demo W/System.err: at com.examples.ffmpeg4android.SimpleExample$TranscdingBackground1.doInBackground(SimpleExample.java:531)
07-26 18:59:24.623 29512-30045/com.examples.ffmpeg4android_demo W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:295)
07-26 18:59:24.623 29512-30045/com.examples.ffmpeg4android_demo W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
07-26 18:59:24.623 29512-30045/com.examples.ffmpeg4android_demo W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
07-26 18:59:24.623 29512-30045/com.examples.ffmpeg4android_demo W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
07-26 18:59:24.623 29512-30045/com.examples.ffmpeg4android_demo W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
07-26 18:59:24.623 29512-30045/com.examples.ffmpeg4android_demo W/System.err: at java.lang.Thread.run(Thread.java:818)
07-26 18:59:24.623 29512-30045/com.examples.ffmpeg4android_demo W/System.err: Caused by: java.io.IOException: Permission denied
07-26 18:59:24.624 29512-30045/com.examples.ffmpeg4android_demo W/System.err: at java.lang.ProcessManager.exec(Native Method)
07-26 18:59:24.624 29512-30045/com.examples.ffmpeg4android_demo W/System.err: at java.lang.ProcessManager.exec(ProcessManager.java:209)
07-26 18:59:24.624 29512-30045/com.examples.ffmpeg4android_demo W/System.err: ... 10 moreI already given permission
android.permission.WRITE_EXTERNAL_STORAGE
how can I compress video before upload to server like whatsapp and facebook ? Is there any other solution ?
Please guide me.
-
FFmpeg stream extraction modifies subtitles [closed]
21 mai 2024, par user18812922I have a video with the following ffprobe output :


Input #0, matroska,webm, from 'video.mkv':
 Metadata:
 title : Video - 01
 creation_time : 2021-07-14T02:49:59.000000Z
 ENCODER : Lavf58.29.100
 Duration: 00:22:57.28, start: 0.000000, bitrate: 392 kb/s
 Chapters:
 Chapter #0:0: start 0.000000, end 86.169000
 Metadata:
 title : Opening
 Chapter #0:1: start 86.169000, end 641.266000
 Metadata:
 title : Part A
 Chapter #0:2: start 641.266000, end 651.359000
 Metadata:
 title : Eyecatch
 Chapter #0:3: start 651.359000, end 1286.160000
 Metadata:
 title : Part B
 Chapter #0:4: start 1286.160000, end 1356.355000
 Metadata:
 title : Ending
 Chapter #0:5: start 1356.355000, end 1376.876000
 Metadata:
 title : Preview
 Stream #0:0: Video: hevc (Main 10), yuv420p10le(tv, bt709), 854x480 [SAR 1280:1281 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn (default)
 Metadata:
 DURATION : 00:22:56.959000000
 Stream #0:1(eng): Audio: vorbis, 48000 Hz, stereo, fltp (default)
 Metadata:
 title : English [FLAC 2.0]
 DURATION : 00:22:57.278000000
 Stream #0:2(jpn): Audio: vorbis, 48000 Hz, stereo, fltp
 Metadata:
 title : Japanese [FLAC 2.0]
 DURATION : 00:22:57.276000000
 Stream #0:3(eng): Subtitle: ass (ssa)
 Metadata:
 title : Signs and Songs [FMA1394/Redc4t]
 DURATION : 00:22:51.090000000
 Stream #0:4(eng): Subtitle: ass (ssa)
 Metadata:
 title : English [FMA1394/Redc4t]
 DURATION : 00:22:51.090000000
 Stream #0:5(eng): Subtitle: hdmv_pgs_subtitle (pgssub), 1920x1080
 Metadata:
 title : Full English Retail
 DURATION : 00:22:51.120000000
 Stream #0:6: Attachment: ttf
 Metadata:
 filename : 8bitoperator.ttf
 mimetype : application/x-truetype-font
 Stream #0:7: Attachment: ttf
 Metadata:
 filename : Cabin-Bold.ttf
 mimetype : application/x-truetype-font
 Stream #0:8: Attachment: ttf
 Metadata:
 filename : calibrib.ttf
 mimetype : application/x-truetype-font
 Stream #0:9: Attachment: ttf
 Metadata:
 filename : daniel_0.ttf
 mimetype : application/x-truetype-font
 Stream #0:10: Attachment: ttf
 Metadata:
 filename : DEATH_FONT.TTF
 mimetype : application/x-truetype-font
 Stream #0:11: Attachment: ttf
 Metadata:
 filename : Dominican.ttf
 mimetype : application/x-truetype-font
 Stream #0:12: Attachment: ttf
 Metadata:
 filename : gishabd.ttf
 mimetype : application/x-truetype-font
 Stream #0:13: Attachment: ttf
 Metadata:
 filename : PATRICK_0.TTF
 mimetype : application/x-truetype-font
 Stream #0:14: Attachment: ttf
 Metadata:
 filename : Qlassik-Medium.ttf
 mimetype : application/x-truetype-font
Unsupported codec with id 98304 for input stream 6
Unsupported codec with id 98304 for input stream 7
Unsupported codec with id 98304 for input stream 8
Unsupported codec with id 98304 for input stream 9
Unsupported codec with id 98304 for input stream 10
Unsupported codec with id 98304 for input stream 11
Unsupported codec with id 98304 for input stream 12
Unsupported codec with id 98304 for input stream 13
Unsupported codec with id 98304 for input stream 14



I am trying to extract the subtitles, edit them and reattach them to the video.
(I need my program to do that so I don't want to use other software)


Command 1


ffmpeg -i video.mkv -map 0:3 -c:s ssa subs.ass
ffmpeg -i video.mkv -i subs.ass -map 0 -map -0:s -map 1 -c copy out.mkv



Command 2


ffmpeg -i video.mkv -map 0:3 subs.ass
ffmpeg -i video.mkv -i subs.ass -map 0 -map -0:s -map 1 -c copy out.mkv



Command 3


ffmpeg -i video.mkv -map 0:3 subs.srt
ffmpeg -i video.mkv -i subs.srt -map 0 -map -0:s -map 1 -c copy out.mkv



Command 4


ffmpeg -i video.mkv -map 0:3 subs.srt
ffmpeg -i subs.srt subs.ass
ffmpeg -i video.mkv -i subs.ass -map 0 -map -0:s -map 1 -c copy out.mkv



Command 5


ffmpeg -i video.mkv -map 0:3 subs.ass
ffmpeg -i subs.ass subs.srt
ffmpeg -i video.mkv -i subs.srt -map 0 -map -0:s -map 1 -c copy out.mkv



The problem


After extraction the subtitles seem to be really quick, meaning they are displayed and disappear really quickly.


For example the first subtitle is as follows in srt :


1
00:00:03,100 --> 00:00:03,560
<font face="Dominican" size="77" color="#f7f7f7">Within the spreading darkness</font>



Now, in srt it also has wrong size but I assume that's because of the conversion from ass to srt.


If I reattach the subtitle file in the video and open it, it is displayed and disappears way too fast and it doesn't match the original subtitles in the video.


(ie, the original video subtitles are showing for at least a second)


Expected behaviour


The subtitles should be displayed for the same duration as the original subtitles.


NOTE


It's my first question for ffmpeg related issues so feel free to ask me for anything else you may need.


UPDATE 1


I realized that the subtitles were ok for the timings as they had the same line multiple times, so the problem for not playing is something else.


Example of the file


1
00:00:03,100 --> 00:00:03,560
<font face="Dominican" size="77" color="#f7f7f7">Within the spreading darkness</font>

2
00:00:03,560 --> 00:00:04,650
<font face="Dominican" size="77" color="#f7f7f7">Within the spreading darkness</font>

3
00:00:04,650 --> 00:00:05,100
<font face="Dominican" size="77" color="#f7f7f7">Within the spreading darkness</font>



So the problem is that VLC doesn't show more than the first subtitle.


The strange thing is when I use the below command


ffmpeg -i video.mkv -i subs.srt -map 0 -map -0:s -map 1 -c copy -c:s subrip out.mkv



Then more lines of the subtitle (but not all) play.


It stops at the 17th line.


I believe that's an encoder's problem ? but I really don't know.


Also what I noticed is that VLC stops the subtitles but Windows Media Player (Windows 11 version) display the subtitles correctly even after the 17th line.


BUT, if I add subtitles from another video they are played correctly in both VLC and Windows Media Player.


Update 2
As @Gyan said in his answer I should use the following command


ffmpeg -i video.mkv -map 0:3 -c:s copy subs.ass



But then if I attach the subs again with


ffmpeg -i video.mkv -i subs.ass -map 0 -map -0:s -map 1 -c copy -c:s ass out.mkv



The subtitles show up to 17th line in both VLC and Windows Media Player.


or


ffmpeg -i video.mkv -i .\subs.ass -map 0 -map -0:s -map 1 -c copy out.mkv



The subtitles do not show up at all. (Not even in Windows Media Player)