
Recherche avancée
Autres articles (26)
-
La file d’attente de SPIPmotion
28 novembre 2010, parUne file d’attente stockée dans la base de donnée
Lors de son installation, SPIPmotion crée une nouvelle table dans la base de donnée intitulée spip_spipmotion_attentes.
Cette nouvelle table est constituée des champs suivants : id_spipmotion_attente, l’identifiant numérique unique de la tâche à traiter ; id_document, l’identifiant numérique du document original à encoder ; id_objet l’identifiant unique de l’objet auquel le document encodé devra être attaché automatiquement ; objet, le type d’objet auquel (...) -
Changer son thème graphique
22 février 2011, parLe thème graphique ne touche pas à la disposition à proprement dite des éléments dans la page. Il ne fait que modifier l’apparence des éléments.
Le placement peut être modifié effectivement, mais cette modification n’est que visuelle et non pas au niveau de la représentation sémantique de la page.
Modifier le thème graphique utilisé
Pour modifier le thème graphique utilisé, il est nécessaire que le plugin zen-garden soit activé sur le site.
Il suffit ensuite de se rendre dans l’espace de configuration du (...) -
Les vidéos
21 avril 2011, parComme les documents de type "audio", Mediaspip affiche dans la mesure du possible les vidéos grâce à la balise html5 .
Un des inconvénients de cette balise est qu’elle n’est pas reconnue correctement par certains navigateurs (Internet Explorer pour ne pas le nommer) et que chaque navigateur ne gère en natif que certains formats de vidéos.
Son avantage principal quant à lui est de bénéficier de la prise en charge native de vidéos dans les navigateur et donc de se passer de l’utilisation de Flash et (...)
Sur d’autres sites (3481)
-
Revision 34958 : _TT renommée en _T_ou_typo
5 février 2010, par joseph@… — Log_TT renommée en _T_ou_typo
-
On-premise analytics demand grows as Google Analytics GDPR uncertainties continue
7 janvier 2020, par Jake Thornton — Privacy -
FFMPEG in Android Kotlin - processed video should have specific resolution
31 mai 2024, par UtsavI'm recording video from both the front and back cameras and I get a PIP video and a horizontal stacked video. I need to merge both videos after that. The problem with merging is that it requires both the videos (PIP and stacked) to have the same resolution and aspect ratio. This is not the case. So the FFMPEG command being executed in code to generate both these videos needs to be modified to make the resolution and aspect ratio the same.


//app -> build.gradle
implementation "com.writingminds:FFmpegAndroid:0.3.2"



private fun connectFfmPeg() {
 val overlayX = 10
 val overlayY = 10
 val overlayWidth = 200
 val overlayHeight = 350

 outputFile1 = createVideoPath().absolutePath
 outputFile2 = createVideoPath().absolutePath
 //Command to generate PIP video
 val cmd1 = arrayOf(
 "-y",
 "-i",
 videoPath1,
 "-i",
 videoPath2,
 "-filter_complex",
 "[1:v]scale=$overlayWidth:$overlayHeight [pip]; [0:v][pip] overlay=$overlayX:$overlayY",
 "-preset",
 "ultrafast",
 outputFile1
 )

 //Command to generate horizontal stack video
 val cmd2 = arrayOf(
 "-y",
 "-i",
 videoPath1,
 "-i",
 videoPath2,
 "-filter_complex",
 "hstack",
 "-preset",
 "ultrafast",
 outputFile2
 )

 val ffmpeg = FFmpeg.getInstance(this)
 //Both commands are executed
 //Following execution code is OK
 //Omitted for brevity
 }



Here is
mergeVideos()
executed lastly.

private fun mergeVideos(ffmpeg: FFmpeg) {
 //Sample command:
 /*
 ffmpeg -y -i output_a.mp4 -i output_b.mp4 \
 -filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0]concat=n=2:v=1:a=1[outv][outa]" \
 -map "[outv]" -map "[outa]" -preset "ultrafast" output.mp4
 */
 finalOutputFile = createVideoPath().absolutePath

 val cmd = arrayOf(
 "-y",
 "-i",
 outputFile1,
 "-i",
 outputFile2,
 "-filter_complex",
 "[0:v:0][0:a:0][1:v:0][1:a:0]concat=n=2:v=1:a=1[outv][outa]",
 "-map", "[outv]",
 "-map", "[outa]",
 "-preset", "ultrafast",
 finalOutputFile
 )
 //Execution code omitted for brevity
}



Error : Upon execution of
mergeVideos()
, there is no progress or failure method called. The Logcat stays where it is and the app does not crash either.

Possible solution :
Once I got the generated PIP and horizontal stacked videos to my device's local storage, I tried out some FFMPEG commands on the prompt to process them after moving them to my laptop and it works on the command line :


//First two commands can't be executed in Kotlin code
//This is the main problem
ffmpeg -i v1.mp4 -vf "scale=640:640,setdar=1:1" output_a.mp4
ffmpeg -i v2.mp4 -vf "scale=640:640,setdar=1:1" output_b.mp4
ffmpeg -y -i output_a.mp4 -i output_b.mp4 -filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0]concat=n=2:v=1:a=1[outv][outa]" -map "[outv]" -map "[outa]" -preset "ultrafast" output.mp4
//Merge is successful via command prompt



Please suggest a solution