
Recherche avancée
Médias (1)
-
Somos millones 1
21 juillet 2014, par
Mis à jour : Juin 2015
Langue : français
Type : Video
Autres articles (65)
-
HTML5 audio and video support
13 avril 2011, parMediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
For older browsers the Flowplayer flash fallback is used.
MediaSPIP allows for media playback on major mobile platforms with the above (...) -
Support audio et vidéo HTML5
10 avril 2011MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...) -
Ajouter notes et légendes aux images
7 février 2011, parPour pouvoir ajouter notes et légendes aux images, la première étape est d’installer le plugin "Légendes".
Une fois le plugin activé, vous pouvez le configurer dans l’espace de configuration afin de modifier les droits de création / modification et de suppression des notes. Par défaut seuls les administrateurs du site peuvent ajouter des notes aux images.
Modification lors de l’ajout d’un média
Lors de l’ajout d’un média de type "image" un nouveau bouton apparait au dessus de la prévisualisation (...)
Sur d’autres sites (9197)
-
Integrating FFMpeg in Native Android Application with C++ results in bunch of errors [closed]
13 décembre 2024, par BraveEvidenceI need to integrate
ffmpeg
in myandroid
app, i don't want to useeffmpegkit
as that is not properly maintained, i cloned ffmpeg-android-maker and then ran./ffmpeg-android-maker.sh
it createdbuild
folder andoutput
folder,
Theoutput
folder looks like this



I have created a
kotlin
android
project usingandroid studio
, so i have written all the code to pick the video and i have the video uri with me inkotlin
, i also added aC++
module with help of Android studio and it did all the configuration inbuild.gradle
and also createdCMake
file for me.

For now I just want to concentrate on building the android project so forget about writing any
C++
code, I then createdjniLibs
in main folder and injniLibs
I copiedarm64-v8a,armeabi-v7a, x86,x86_64
from the output folder offfmpeg-android-maker
and then I want tocpp
folder of my android project which is also inmain
folder and incpp
folder I createdinclude
folder and copiedlibavcodec, libavdevice, libavfilter
etc then I updated myCmakeLists.txt
to following

cmake_minimum_required(VERSION 3.22.1)

project("myandroidapp")

#set(FFMPEG_LIBS_DIR ${CMAKE_SOURCE_DIR}/src/main/jniLibs)

include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp/include)

set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES
 LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}
)

add_library(${CMAKE_PROJECT_NAME} SHARED
 # List C/C++ source files with relative paths to this CMakeLists.txt.
 myandroidapp.cpp)


# Specifies libraries CMake should link to your target library. You
# can link libraries from various origins, such as libraries defined in this
# build script, prebuilt third-party libraries, or Android system libraries.
target_link_libraries(${CMAKE_PROJECT_NAME}
 # List libraries link to the target library
 android
 log
 avcodec
 avdevice
 avfilter
 avformat
 avutil
 swresample
 swscale)



Then in
build.gradle
I did following

externalNativeBuild {
 cmake {
 path = file("src/main/cpp/CMakeLists.txt")
 version = "3.22.1"
 }
 }

 sourceSets {
 getByName("main") {
 jniLibs.srcDirs("src/main/jniLibs")
 }
 }

 packaging {
 jniLibs.pickFirsts.add("lib/arm64-v8a/libavcodec.so")
 jniLibs.pickFirsts.add("lib/arm64-v8a/libavformat.so")
 jniLibs.pickFirsts.add("lib/arm64-v8a/libavutil.so")
 jniLibs.pickFirsts.add("lib/arm64-v8a/libswscale.so")
 jniLibs.pickFirsts.add("lib/armeabi-v7a/libavcodec.so")
 jniLibs.pickFirsts.add("lib/armeabi-v7a/libavformat.so")
 jniLibs.pickFirsts.add("lib/armeabi-v7a/libavutil.so")
 jniLibs.pickFirsts.add("lib/armeabi-v7a/libswscale.so")
 jniLibs.pickFirsts.add("lib/x86/libavcodec.so")
 jniLibs.pickFirsts.add("lib/x86/libavformat.so")
 jniLibs.pickFirsts.add("lib/x86/libavutil.so")
 jniLibs.pickFirsts.add("lib/x86/libswscale.so")
 jniLibs.pickFirsts.add("lib/x86_64/libavcodec.so")
 jniLibs.pickFirsts.add("lib/x86_64/libavformat.so")
 jniLibs.pickFirsts.add("lib/x86_64/libavutil.so")
 jniLibs.pickFirsts.add("lib/x86_64/libswscale.so")
 }



when I try to build my project I get following error


[CXX1429] error when building with cmake using /Users/transformhub/Downloads/mycam/ffmpeg/MyAndroidapp/app/src/main/cpp/CMakeLists.txt: -- Configuring incomplete, errors occurred!
See also "/Users/transformhub/Downloads/mycam/ffmpeg/MyAndroidapp/app/.cxx/Debug/406wr1e2/arm64-v8a/CMakeFiles/CMakeOutput.log".

C++ build system [configure] failed while executing:
 /Users/transformhub/Library/Android/sdk/cmake/3.22.1/bin/cmake \
 -H/Users/transformhub/Downloads/mycam/ffmpeg/MyAndroidapp/app/src/main/cpp \
 -DCMAKE_SYSTEM_NAME=Android \
 -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
 -DCMAKE_SYSTEM_VERSION=24 \
 -DANDROID_PLATFORM=android-24 \
 -DANDROID_ABI=arm64-v8a \
 -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a \
 -DANDROID_NDK=/Users/transformhub/Library/Android/sdk/ndk/26.1.10909125 \
 -DCMAKE_ANDROID_NDK=/Users/transformhub/Library/Android/sdk/ndk/26.1.10909125 \
 -DCMAKE_TOOLCHAIN_FILE=/Users/transformhub/Library/Android/sdk/ndk/26.1.10909125/build/cmake/android.toolchain.cmake \
 -DCMAKE_MAKE_PROGRAM=/Users/transformhub/Library/Android/sdk/cmake/3.22.1/bin/ninja \
 -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/transformhub/Downloads/mycam/ffmpeg/MyAndroidapp/app/build/intermediates/cxx/Debug/406wr1e2/obj/arm64-v8a \
 -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/Users/transformhub/Downloads/mycam/ffmpeg/MyAndroidapp/app/build/intermediates/cxx/Debug/406wr1e2/obj/arm64-v8a \
 -DCMAKE_BUILD_TYPE=Debug \
 -B/Users/transformhub/Downloads/mycam/ffmpeg/MyAndroidapp/app/.cxx/Debug/406wr1e2/arm64-v8a \
 -GNinja
 from /Users/transformhub/Downloads/mycam/ffmpeg/MyAndroidapp/app
CMake Error at CMakeLists.txt:15 (set_target_properties):
 set_target_properties Can not find target to add properties to:
 myandroidapp : com.android.ide.common.process.ProcessException: -- Configuring incomplete, errors occurred!
See also "/Users/transformhub/Downloads/mycam/ffmpeg/MyAndroidapp/app/.cxx/Debug/406wr1e2/arm64-v8a/CMakeFiles/CMakeOutput.log".

C++ build system [configure] failed while executing:
 /Users/transformhub/Library/Android/sdk/cmake/3.22.1/bin/cmake \
 -H/Users/transformhub/Downloads/mycam/ffmpeg/MyAndroidapp/app/src/main/cpp \
 -DCMAKE_SYSTEM_NAME=Android \
 -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
 -DCMAKE_SYSTEM_VERSION=24 \
 -DANDROID_PLATFORM=android-24 \
 -DANDROID_ABI=arm64-v8a \
 -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a \
 -DANDROID_NDK=/Users/transformhub/Library/Android/sdk/ndk/26.1.10909125 \
 -DCMAKE_ANDROID_NDK=/Users/transformhub/Library/Android/sdk/ndk/26.1.10909125 \
 -DCMAKE_TOOLCHAIN_FILE=/Users/transformhub/Library/Android/sdk/ndk/26.1.10909125/build/cmake/android.toolchain.cmake \
 -DCMAKE_MAKE_PROGRAM=/Users/transformhub/Library/Android/sdk/cmake/3.22.1/bin/ninja \
 -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/transformhub/Downloads/mycam/ffmpeg/MyAndroidapp/app/build/intermediates/cxx/Debug/406wr1e2/obj/arm64-v8a \
 -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/Users/transformhub/Downloads/mycam/ffmpeg/MyAndroidapp/app/build/intermediates/cxx/Debug/406wr1e2/obj/arm64-v8a \
 -DCMAKE_BUILD_TYPE=Debug \
 -B/Users/transformhub/Downloads/mycam/ffmpeg/MyAndroidapp/app/.cxx/Debug/406wr1e2/arm64-v8a \
 -GNinja
 from /Users/transformhub/Downloads/mycam/ffmpeg/MyAndroidapp/app
CMake Error at CMakeLists.txt:15 (set_target_properties):
 set_target_properties Can not find target to add properties to:
 myandroidapp
 at com.android.build.gradle.internal.cxx.process.ExecuteProcessKt.execute(ExecuteProcess.kt:288)
 at com.android.build.gradle.internal.cxx.process.ExecuteProcessKt$executeProcess$1.invoke(ExecuteProcess.kt:108)
 at com.android.build.gradle.internal.cxx.process.ExecuteProcessKt$executeProcess$1.invoke(ExecuteProcess.kt:106)
 at com.android.build.gradle.internal.cxx.timing.TimingEnvironmentKt.time(TimingEnvironment.kt:32)
 at com.android.build.gradle.internal.cxx.process.ExecuteProcessKt.executeProcess(ExecuteProcess.kt:106)
 at com.android.build.gradle.internal.cxx.process.ExecuteProcessKt.executeProcess$default(ExecuteProcess.kt:85)
 at com.android.build.gradle.tasks.CmakeQueryMetadataGenerator.executeProcess(CmakeFileApiMetadataGenerator.kt:59)
 at com.android.build.gradle.tasks.ExternalNativeJsonGenerator$configureOneAbi$1$1$3.invoke(ExternalNativeJsonGenerator.kt:247)
 at com.android.build.gradle.tasks.ExternalNativeJsonGenerator$configureOneAbi$1$1$3.invoke(ExternalNativeJsonGenerator.kt:247)
 at com.android.build.gradle.internal.cxx.timing.TimingEnvironmentKt.time(TimingEnvironment.kt:32)
 at com.android.build.gradle.tasks.ExternalNativeJsonGenerator.configureOneAbi(ExternalNativeJsonGenerator.kt:247)
 at com.android.build.gradle.tasks.ExternalNativeJsonGenerator.configure(ExternalNativeJsonGenerator.kt:113)
 at com.android.build.gradle.tasks.ExternalNativeBuildJsonTask.doTaskAction(ExternalNativeBuildJsonTask.kt:89)
 at com.android.build.gradle.internal.tasks.UnsafeOutputsTask$taskAction$$inlined$recordTaskAction$1.invoke(BaseTask.kt:66)
 at com.android.build.gradle.internal.tasks.Blocks.recordSpan(Blocks.java:51)
 at com.android.build.gradle.internal.tasks.UnsafeOutputsTask.taskAction(UnsafeOutputsTask.kt:81)
 at jdk.internal.reflect.GeneratedMethodAccessor172.invoke(Unknown Source)
 at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.base/java.lang.reflect.Method.invoke(Unknown Source)
 at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:125)
 at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58)
 at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
 at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
 at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:244)
 at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
 at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
 at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
 at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
 at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
 at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
 at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
 at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
 at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:229)
 at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:212)
 at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:195)
 at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:162)
 at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:105)
 at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:44)
 at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:59)
 at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:56)
 at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
 at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
 at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
 at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
 at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
 at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
 at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
 at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
 at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:56)
 at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:44)
 at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41)
 at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74)
 at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55)
 at org.gradle.internal.execution.steps.PreCreateOutputParentsStep.execute(PreCreateOutputParentsStep.java:50)
 at org.gradle.internal.execution.steps.PreCreateOutputParentsStep.execute(PreCreateOutputParentsStep.java:28)
 at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:67)
 at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:37)
 at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:61)
 at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:26)
 at org.gradle.internal.execution.steps.CaptureOutputsAfterExecutionStep.execute(CaptureOutputsAfterExecutionStep.java:67)
 at org.gradle.internal.execution.steps.CaptureOutputsAfterExecutionStep.execute(CaptureOutputsAfterExecutionStep.java:45)
 at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:40)
 at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:29)
 at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:189)
 at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$1(BuildCacheStep.java:75)
 at org.gradle.internal.Either$Right.fold(Either.java:175)
 at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:62)
 at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:73)
 at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:48)
 at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:46)
 at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:35)
 at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:76)
 at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:54)
 at java.base/java.util.Optional.orElseGet(Unknown Source)
 at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:54)
 at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:36)
 at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
 at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
 at org.gradle.internal.execution.steps.ResolveIncrementalCachingStateStep.executeDelegate(ResolveIncrementalCachingStateStep.java:49)
 at org.gradle.internal.execution.steps.ResolveIncrementalCachingStateStep.executeDelegate(ResolveIncrementalCachingStateStep.java:27)
 at org.gradle.internal.execution.steps.AbstractResolveCachingStateStep.execute(AbstractResolveCachingStateStep.java:71)
 at org.gradle.internal.execution.steps.AbstractResolveCachingStateStep.execute(AbstractResolveCachingStateStep.java:39)
 at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:65)
 at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:36)
 at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:106)
 at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:55)
 at org.gradle.internal.execution.steps.AbstractCaptureStateBeforeExecutionStep.execute(AbstractCaptureStateBeforeExecutionStep.java:64)
 at org.gradle.internal.execution.steps.AbstractCaptureStateBeforeExecutionStep.execute(AbstractCaptureStateBeforeExecutionStep.java:43)
 at org.gradle.internal.execution.steps.AbstractSkipEmptyWorkStep.executeWithNonEmptySources(AbstractSkipEmptyWorkStep.java:125)
 at org.gradle.internal.execution.steps.AbstractSkipEmptyWorkStep.execute(AbstractSkipEmptyWorkStep.java:56)
 at org.gradle.internal.execution.steps.AbstractSkipEmptyWorkStep.execute(AbstractSkipEmptyWorkStep.java:36)
 at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
 at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:36)
 at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:23)
 at org.gradle.internal.execution.steps.HandleStaleOutputsStep.execute(HandleStaleOutputsStep.java:75)
 at org.gradle.internal.execution.steps.HandleStaleOutputsStep.execute(HandleStaleOutputsStep.java:41)
 at org.gradle.internal.execution.steps.AssignMutableWorkspaceStep.lambda$execute$0(AssignMutableWorkspaceStep.java:35)
 at org.gradle.api.internal.tasks.execution.TaskExecution$4.withWorkspace(TaskExecution.java:289)
 at org.gradle.internal.execution.steps.AssignMutableWorkspaceStep.execute(AssignMutableWorkspaceStep.java:31)
 at org.gradle.internal.execution.steps.AssignMutableWorkspaceStep.execute(AssignMutableWorkspaceStep.java:22)
 at org.gradle.internal.execution.steps.ChoosePipelineStep.execute(ChoosePipelineStep.java:40)
 at org.gradle.internal.execution.steps.ChoosePipelineStep.execute(ChoosePipelineStep.java:23)
 at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.lambda$execute$2(ExecuteWorkBuildOperationFiringStep.java:67)
 at java.base/java.util.Optional.orElseGet(Unknown Source)
 at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.execute(ExecuteWorkBuildOperationFiringStep.java:67)
 at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.execute(ExecuteWorkBuildOperationFiringStep.java:39)
 at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:46)
 at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:34)
 at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:48)
 at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:35)
 at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:61)
 at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:127)
 at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:116)
 at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
 at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
 at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
 at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:74)
 at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
 at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
 at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
 at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
 at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
 at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
 at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
 at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
 at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
 at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
 at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
 at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
 at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
 at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:42)
 at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:331)
 at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:318)
 at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.lambda$execute$0(DefaultTaskExecutionGraph.java:314)
 at org.gradle.internal.operations.CurrentBuildOperationRef.with(CurrentBuildOperationRef.java:80)
 at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:314)
 at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:303)
 at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:463)
 at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:380)
 at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
 at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47)
 at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
 at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
 at java.base/java.lang.Thread.run(Unknown Source)
Caused by: com.android.ide.common.process.ProcessException: Error while executing process /Users/transformhub/Library/Android/sdk/cmake/3.22.1/bin/cmake with arguments {-H/Users/transformhub/Downloads/mycam/ffmpeg/MyAndroidapp/app/src/main/cpp -DCMAKE_SYSTEM_NAME=Android -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_SYSTEM_VERSION=24 -DANDROID_PLATFORM=android-24 -DANDROID_ABI=arm64-v8a -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a -DANDROID_NDK=/Users/transformhub/Library/Android/sdk/ndk/26.1.10909125 -DCMAKE_ANDROID_NDK=/Users/transformhub/Library/Android/sdk/ndk/26.1.10909125 -DCMAKE_TOOLCHAIN_FILE=/Users/transformhub/Library/Android/sdk/ndk/26.1.10909125/build/cmake/android.toolchain.cmake -DCMAKE_MAKE_PROGRAM=/Users/transformhub/Library/Android/sdk/cmake/3.22.1/bin/ninja -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/Users/transformhub/Downloads/mycam/ffmpeg/MyAndroidapp/app/build/intermediates/cxx/Debug/406wr1e2/obj/arm64-v8a -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=/Users/transformhub/Downloads/mycam/ffmpeg/MyAndroidapp/app/build/intermediates/cxx/Debug/406wr1e2/obj/arm64-v8a -DCMAKE_BUILD_TYPE=Debug -B/Users/transformhub/Downloads/mycam/ffmpeg/MyAndroidapp/app/.cxx/Debug/406wr1e2/arm64-v8a -GNinja}
 at com.android.build.gradle.internal.process.GradleProcessResult.buildProcessException(GradleProcessResult.java:73)
 at com.android.build.gradle.internal.process.GradleProcessResult.assertNormalExitValue(GradleProcessResult.java:48)
 at com.android.build.gradle.internal.cxx.process.ExecuteProcessKt.execute(ExecuteProcess.kt:277)
 ... 143 more
Caused by: org.gradle.process.internal.ExecException: Process 'command '/Users/transformhub/Library/Android/sdk/cmake/3.22.1/bin/cmake'' finished with non-zero exit value 1
 at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:442)
 at com.android.build.gradle.internal.process.GradleProcessResult.assertNormalExitValue(GradleProcessResult.java:46)
 ... 144 more



Here is the complete source code


-
I have a ffmpeg command to concatenate 300+ videos of different formats. What is the proper syntax for the concat complex filter ?
25 avril 2022, par jokoonI plan to concatenate a large amount of video files of different formats and resolution, some without sound, and add a short black screen "pause" of about 0.5s between each.


I wrote a python script to generate such command.


I created a 0.5s video file using
ffmpeg.exe -t 0.5 -f lavfi -i color=c=black:s=640x480 -c:v libx264 -tune stillimage -pix_fmt yuv420p blank500ms.mp4
.

I then added a silent audio to it with
-f lavfi -i anullsrc -c:v copy -c:a aac -shortest


I now have the problem of adding a blank audio track for streams without one, but I don't want to generate new file, I want to add it to my complex filter.


This is my complex script and generate command.


The command (there are line returns, because I send this with the python subprocess module)


ffmpeg.exe
-i
input0.mp4
-i
input1.mp4
-i
input2.mp4
-i
input3.mp4
-i
input4.mp4
-i
input5.mp4
-i
input6.mp4
-i
input7.mp4
-i
input8.mp4
-i
input9.mp4
-i
input10.mp4
-f
lavfi
-i
anullsrc
-filter_complex_script
C:/filter_complex_script.txt
-map
"[final_video]"
-map
"[final_audio]"
output.mp4



The complex_filter_script :


[0]fps=24[fps0];
[fps0]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2,setsar=1,setpts=PTS-STARTPTS[rescaled0];
[1]fps=24[fps1];
[fps1]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2,setsar=1,setpts=PTS-STARTPTS[rescaled1];
[2]fps=24[fps2];
[fps2]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2,setsar=1,setpts=PTS-STARTPTS[rescaled2];
[3]fps=24[fps3];
[fps3]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2,setsar=1,setpts=PTS-STARTPTS[rescaled3];
[4]fps=24[fps4];
[fps4]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2,setsar=1,setpts=PTS-STARTPTS[rescaled4];
[5]fps=24[fps5];
[fps5]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2,setsar=1,setpts=PTS-STARTPTS[rescaled5];
[6]fps=24[fps6];
[fps6]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2,setsar=1,setpts=PTS-STARTPTS[rescaled6];
[7]fps=24[fps7];
[fps7]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2,setsar=1,setpts=PTS-STARTPTS[rescaled7];
[8]fps=24[fps8];
[fps8]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2,setsar=1,setpts=PTS-STARTPTS[rescaled8];
[9]fps=24[fps9];
[fps9]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2,setsar=1,setpts=PTS-STARTPTS[rescaled9];
[10]fps=24[fps10];
[fps10]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2,setsar=1,setpts=PTS-STARTPTS[rescaled10];
[10]split=10[blank0][blank1][blank2][blank3][blank4][blank5][blank6][blank7][blank8][blank9];
[rescaled0:v][0:a][blank0][rescaled1:v][1:a][blank1][rescaled2:v][2:a][blank2][rescaled3:v][3:a][blank3][rescaled4:v][4:a][blank4][rescaled5:v][5:a][blank5][rescaled6:v][11:a][blank6][rescaled7:v][11:a][blank7][rescaled8:v][11:a][blank8][rescaled9:v][11:a][blank9]concat=n=22:v=1:a=1[final_video][final_audio]



As you can see, some video use
[11:a]
, because it's a silent audio stream.

input10.mp4, mapped to [10] and then split (or "cloned") into blanked0 to 9, is a short pause separator.


ffmpeg tells me the error


[Parsed_split_55 @ 000001591c33b280] Media type mismatch between the 'Parsed_split_55' filter output pad 1 (video) and the 'Parsed_concat_56' filter input pad 5 (audio)
[AVFilterGraph @ 000001591bf1e6c0] Cannot create the link split:1 -> concat:5
Error initializing complex filters.
Invalid argument



I'm a bit lost when it comes to using the [X:Y:Z] syntax, and how the order matter in the concat argument list.


I'm open to any other suggestion to solve my problem. I would rather do this in a single command, without intermediate file.


EDIT :


For details, I already wrote a large concat+xstack filter that worked well with 8GB of memory.


In this case, there are a lot of inputs, but those inputs are small, most of them are between 1 and 10MB, so it would probably not generate out-of-memory problems, although I'm not certain.


-
How to stack several videos using ffmpeg ?
13 juillet 2019, par JohnI have four cameras that are recording videos and wand to stack all videos into one video file. The final video must be a 2x2 grid.
THE HARD PART is that sometimes cameras are not recording simultaneously.
Here you can see one situation of how cameras are recording :
Camera 1 timeline: |recording....................................|
Camera 2 timeline: |stopped....|recording........................|
Camera 3 timeline: |recording.........|stopped....|recording.....|
Camera 4 timeline: |recording..................|stopped..........|Explanation :
- Camera 1 is recording all time.
- Camera 2 is starting recording later.
- Camera 3 is recording, then stopped a period of time, then again recording.
- Camera 4 is recording a period of time, then stopped.
In the final video I want to synchronize each video by timestamps.
If a camera is stopped a period of time then at its position must be a black portion.
How can I do this ?