Recherche avancée

Médias (0)

Mot : - Tags -/xmlrpc

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (65)

  • Personnaliser en ajoutant son logo, sa bannière ou son image de fond

    5 septembre 2013, par

    Certains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;

  • Les tâches Cron régulières de la ferme

    1er décembre 2010, par

    La gestion de la ferme passe par l’exécution à intervalle régulier de plusieurs tâches répétitives dites Cron.
    Le super Cron (gestion_mutu_super_cron)
    Cette tâche, planifiée chaque minute, a pour simple effet d’appeler le Cron de l’ensemble des instances de la mutualisation régulièrement. Couplée avec un Cron système sur le site central de la mutualisation, cela permet de simplement générer des visites régulières sur les différents sites et éviter que les tâches des sites peu visités soient trop (...)

  • Les autorisations surchargées par les plugins

    27 avril 2010, par

    Mediaspip core
    autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs

Sur d’autres sites (9416)

  • Stage-Whisper is not working because of missing files

    24 novembre 2023, par Tingtong

    I tried to install this here : https://github.com/Stage-Whisper/Stage-Whisper

    


    Once i put the audio file in it, it is still loading and loading but not transcribing it.

    


    So after that i checked the requirements and packages, if there is something missing and there is. I installed those here :

    


    Node (required for Electron)
Yarn (required for Electron)
Python 3.x (required for backend)
Rust (required for backend)
ffmpeg (required for backend)
Poetry (required for backend)


    


    I installed them with homebrew. There are some errors showing up, once i launch the electron programm with "yarn dev" : ERROR : "could not locate binding files"

    


    I also tried "poetry run python stagewhisper —input /path/to/audio/file.mp3", but got following message. Poetry could not find a pyproject.toml file in /Users/Administrator/Desktop/Stage-Whisper or its parents.

    


    Where do i have to put the file pyproject.toml and what do i have to write in it ?

    


    So i checked with brew info all tools which i need for Stage-Whisper. Screenshots :enter image description here
[enter image description here](https://i.stack.imgur.com/sirb3.png)

    


    What i tried was to update those packages/requirements which where missing, with "sudo port install requirementPackageName ". But after checking with brew info again, those parts are still missing. So does that actually work or do i have to install those missing stuff with homebrew ? I have Mac Mojave 10.14.6 and Homebrew 4.1.18 Version.

    


    I also got an error, while i installed those tools with homebrew :

    


    ERROR : You are using macOS 10.14.
We (and Apple) do not provide support for this old version. It is expected behaviour that some formulae will fail to build in this old version... etc

    


    Thank you for your help guys.

    


    Edit :

    


    


    yarn install v1.22.19 warning ../../../package.json : No license field
[1/4] 🔍 Resolving packages... [2/4] 🚚 Fetching packages... [3/4]
🔗 Linking dependencies... warning "@emotion/react >
@emotion/babel-plugin@11.10.2" has unmet peer dependency
"@babel/core@^7.0.0". warning "@emotion/react > @emotion/babel-plugin

    


    


    @babel/plugin-syntax-jsx@7.18.6" has unmet peer dependency "@babel/core@^7.0.0-0". warning " > autoprefixer@10.4.4" has unmet
peer dependency "postcss@^8.1.0". warning " >
eslint-config-airbnb@19.0.4" has unmet peer dependency
"eslint-plugin-react-hooks@^4.3.0".
[----------------------------------------------------------------------------------------------------------------------------------------------------------------------------] 0/890^[4/4] 🔨 Building fresh packages... [1/7] ⠁ better-sqlite3
[-/7] ⠁ waiting... [3/7] ⠁ sqlite3 [4/7] ⠁ esbuild error
/Users/administrator/Desktop/Stage-Whisper/electron/node_modules/better-sqlite3 :
Command failed. Exit code : 1 Command : prebuild-install || npm run
build-release Arguments : Directory :
/Users/administrator/Desktop/Stage-Whisper/electron/node_modules/better-sqlite3
Output : prebuild-install warn install No prebuilt binaries found
(target=20.9.0 runtime=node arch=x64 libc= platform=darwin)

    


    


    


    better-sqlite3@7.6.2 build-release
node-gyp rebuild —release

    


    


    gyp info it worked if it ends with ok gyp info using node-gyp@9.3.0
gyp info using node@20.9.0 | darwin | x64 gyp info find Python using
Python version 3.9.14 found at "/usr/local/bin/python3" gyp info spawn
/usr/local/bin/python3 gyp info spawn args [ gyp info spawn args
    
'/Users/administrator/Desktop/Stage-Whisper/electron/node_modules/electron-rebuild/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args 'binding.gyp', gyp info spawn args '-f', gyp
info spawn args 'make', gyp info spawn args '-I', gyp info spawn
args
    
'/Users/administrator/Desktop/Stage-Whisper/electron/node_modules/better-sqlite3/build/config.gypi',
gyp info spawn args '-I', gyp info spawn args
    
'/Users/administrator/Desktop/Stage-Whisper/electron/node_modules/electron-rebuild/node_modules/node-gyp/addon.gypi',
gyp info spawn args '-I', gyp info spawn args
    
'/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/common.gypi',
gyp info spawn args '-Dlibrary=shared_library', gyp info spawn args
'-Dvisibility=default', gyp info spawn args
    
'-Dnode_root_dir=/Users/administrator/Library/Caches/node-gyp/20.9.0',
gyp info spawn args
    
'-Dnode_gyp_dir=/Users/administrator/Desktop/Stage-Whisper/electron/node_modules/electron-rebuild/node_modules/node-gyp',
gyp info spawn args
    &#xA;'-Dnode_lib_file=/Users/administrator/Library/Caches/node-gyp/20.9.0/<(target_arch)/node.lib',&#xA;gyp info spawn args
    &#xA;'-Dmodule_root_dir=/Users/administrator/Desktop/Stage-Whisper/electron/node_modules/better-sqlite3',&#xA;gyp info spawn args '-Dnode_engine=v8', gyp info spawn args
    &#xA;'—depth=.', gyp info spawn args '—no-parallel', gyp info spawn&#xA;args '—generator-output', gyp info spawn args 'build', gyp info&#xA;spawn args '-Goutput_dir=.' gyp info spawn args ] gyp info spawn&#xA;make gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
    &#xA;TOUCH ba23eeee118cd63e16015df367567cb043fed872.intermediate ACTION&#xA;deps_sqlite3_gyp_locate_sqlite3_target_copy_builtin_sqlite3&#xA;ba23eeee118cd63e16015df367567cb043fed872.intermediate TOUCH&#xA;Release/obj.target/deps/locate_sqlite3.stamp CC(target)&#xA;Release/obj.target/sqlite3/gen/sqlite3/sqlite3.o LIBTOOL-STATIC&#xA;Release/sqlite3.a CXX(target)&#xA;Release/obj.target/better_sqlite3/src/better_sqlite3.o In file&#xA;included from ../src/better_sqlite3.cpp:4 : In file included from&#xA;./src/better_sqlite3.lzz:11 : In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/node.h:73 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8.h:24 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-array-buffer.h:12 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-local-handle.h:12 :&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:465:30 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;SHARED_EXTERNAL_POINTER_TAGS(CHECK_SHARED_EXTERNAL_POINTER_TAGS)&#xA;^ /Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:465:30 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:465:30 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:465:30 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:465:30 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:466:35 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;PER_ISOLATE_EXTERNAL_POINTER_TAGS(CHECK_NON_SHARED_EXTERNAL_POINTER_TAGS)&#xA;^ /Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:466:35 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:466:35 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:466:35 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:466:35 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:466:35 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:466:35 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:466:35 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:466:35 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:466:35 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:466:35 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:466:35 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:693:61 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;static_assert(kJSObjectType + 1 == kFirstJSApiObjectType) ;&#xA;^&#xA;, "" /Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:694:55 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;static_assert(kJSObjectType < kLastJSApiObjectType) ;&#xA;^&#xA;, "" /Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-internal.h:695:63 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;static_assert(kFirstJSApiObjectType < kLastJSApiObjectType) ;&#xA;^&#xA;, "" In file included from ../src/better_sqlite3.cpp:4 : In file included from&#xA;./src/better_sqlite3.lzz:11 : In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/node.h:73 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8.h:24 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-array-buffer.h:13 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-object.h:9 :&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-maybe.h:106:45 :&#xA;error : no template named 'is_lvalue_reference_v' in namespace 'std' ;&#xA;did you mean 'is_lvalue_reference' ? template >&#xA; ^ &#xA;is_lvalue_reference /Library/Developer/CommandLineTools/usr/include/c++/v1/type_traits:780:50 :&#xA;note : 'is_lvalue_reference' declared here template struct&#xA;_LIBCPP_TEMPLATE_VIS is_lvalue_reference : public false_type {} ;&#xA;^ In file included from ../src/better_sqlite3.cpp:4 : In file included from&#xA;./src/better_sqlite3.lzz:11 : In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/node.h:73 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8.h:24 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-array-buffer.h:13 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-object.h:9 :&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-maybe.h:106:69 :&#xA;error : expected '(' for function-style cast or type construction
    &#xA;template
    >&#xA; ^ /Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-maybe.h:123:43 :&#xA;error : no template named 'is_lvalue_reference_v' in namespace 'std' ;&#xA;did you mean 'is_lvalue_reference' ? template * = nullptr>&#xA; ^ &#xA;is_lvalue_reference /Library/Developer/CommandLineTools/usr/include/c++/v1/type_traits:780:50 :&#xA;note : 'is_lvalue_reference' declared here template struct&#xA;_LIBCPP_TEMPLATE_VIS is_lvalue_reference : public false_type {} ;&#xA;^ In file included from ../src/better_sqlite3.cpp:4 : In file included from&#xA;./src/better_sqlite3.lzz:11 : In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/node.h:73 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8.h:24 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-array-buffer.h:13 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-object.h:9 :&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-maybe.h:123:67 :&#xA;error : expected '(' for function-style cast or type construction&#xA;template * =&#xA;nullptr>&#xA; ^ In file included from ../src/better_sqlite3.cpp:4 : In file included from&#xA;./src/better_sqlite3.lzz:11 : In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/node.h:73 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8.h:33 :&#xA;In file included from&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-function.h:11 :&#xA;/Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-function-callback.h:151:66 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;kReturnValueDefaultValueIndex - kReturnValueIndex) ;&#xA;^&#xA;, "" /Users/administrator/Library/Caches/node-gyp/20.9.0/include/node/v8-function-callback.h:153:50 :&#xA;warning : static_assert with no message is a C++17 extension&#xA;[-Wc++17-extensions]&#xA;kIsolateIndex - kReturnValueIndex) ;&#xA;^&#xA;, "" ./src/util/macros.lzz:157:21 : error : no member named&#xA;'AccessorSignature' in namespace 'v8'&#xA;v8::AccessorSignature::New(isolate, recv)&#xA; ^ ./src/util/binder.lzz:37:51 : error : no member named 'CreationContext' in 'v8::Object'&#xA;v8::Local ctx = obj->CreationContext() ;&#xA; ^ 22 warnings and 6 errors generated. make : ***&#xA;[Release/obj.target/better_sqlite3/src/better_sqlite3.o] Error 1 rm&#xA;ba23eeee118cd63e16015df367567cb043fed872.intermediate gyp ERR ! build&#xA;error gyp ERR ! stack Error : make failed with exit code : 2 gyp ERR !&#xA;stack at ChildProcess.onExit&#xA;(/Users/administrator/Desktop/Stage-Whisper/electron/node_modules/electron-rebuild/node_modules/node-gyp/lib/build.js:203:23)&#xA;gyp ERR ! stack at ChildProcess.emit (node:events:514:28) gyp ERR !&#xA;stack at ChildProcess._handle.onexit&#xA;(node:internal/child_process:294:12) gyp ERR ! System Darwin 18.7.0 gyp&#xA;ERR ! command "/usr/local/bin/node"&#xA;"/Users/administrator/Desktop/Stage-Whisper/electron/node_modules/.bin/node-gyp"&#xA;"rebuild" "—release" gyp ERR ! cwd&#xA;/Users/administrator/Desktop/Stage-Whisper/electron/node_modules/better-sqlite3

    &#xA;

    &#xA;

    Same goes for the the "poetry install" command in the backend folder :

    &#xA;

    8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/build/onig_sys-3a9a2f947b5ad744/outwarning: variable does not need to be mutable --> tokenizers-lib/src/models/unigram/model.rs:265:21 | 265 |                 let mut target_node = &amp;mut best_path_ends_at[key_pos]; |                     ----^^^^^^^^^^^ |                     | |                     help: remove thismut| = note:#[warn(unused_mut)]` on by default

    &#xA;

    warning : variable does not need to be mutable&#xA;—> tokenizers-lib/src/models/unigram/model.rs:282:21&#xA;|&#xA;282 | let mut target_node = &mut best_path_ends_at[starts_at + mblen] ;&#xA;| ----^^^^^^^^^^^&#xA;| |&#xA;| help : remove this mut

    &#xA;

    warning : variable does not need to be mutable&#xA;—> tokenizers-lib/src/pre_tokenizers/byte_level.rs:200:59&#xA;|&#xA;200 | encoding.process_tokens_with_offsets_mut(|(i, (token, mut offsets))| &#xA;| ----^^^^^^^&#xA;| |&#xA;| help : remove this mut

    &#xA;

    error : casting &amp;T to &amp;mut T is undefined behavior, even if the reference is unused, consider instead using an UnsafeCell&#xA;—> tokenizers-lib/src/models/bpe/trainer.rs:526:47&#xA;|&#xA;522 | let w = &words[*i] as *const _ as *mut _ ;&#xA;| -------------------------------- casting happend here&#xA;...&#xA;526 | let word : &mut Word = &mut (*w) ;&#xA;| ^^^^^^^^^&#xA;|&#xA;= note : #[deny(invalid_reference_casting)] on by default

    &#xA;

    warning : tokenizers (lib) generated 3 warnings&#xA;error : could not compile tokenizers (lib) due to previous error ; 3 warnings emitted

    &#xA;

    Caused by :&#xA;process didn't exit successfully : /Users/administrator/.rustup/toolchains/stable-x86_64-apple-darwin/bin/rustc --crate-name tokenizers --edition=2018 tokenizers-lib/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 -C embed-bitcode=no --cfg &#x27;feature="cached-path"&#x27; --cfg &#x27;feature="clap"&#x27; --cfg &#x27;feature="cli"&#x27; --cfg &#x27;feature="default"&#x27; --cfg &#x27;feature="http"&#x27; --cfg &#x27;feature="indicatif"&#x27; --cfg &#x27;feature="progressbar"&#x27; --cfg &#x27;feature="reqwest"&#x27; -C metadata=cb36f9861d265e60 -C extra-filename=-cb36f9861d265e60 --out-dir /private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps -L dependency=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps --extern aho_corasick=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libaho_corasick-021885281f13d108.rmeta --extern cached_path=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libcached_path-767095c4d4a77107.rmeta --extern clap=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libclap-c92d2593d8a75e62.rmeta --extern derive_builder=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libderive_builder-833217c2af636976.dylib --extern dirs=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libdirs-f12e99ecd3a76eae.rmeta --extern esaxx_rs=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libesaxx_rs-b694f04df571686b.rmeta --extern indicatif=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libindicatif-39491a3282a24810.rmeta --extern itertools=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libitertools-b322e49e83853c17.rmeta --extern lazy_static=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/liblazy_static-28a96417d88df3c9.rmeta --extern log=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/liblog-937f94f366843d8a.rmeta --extern macro_rules_attribute=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libmacro_rules_attribute-d4d77bee9330e675.rmeta --extern onig=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libonig-7f9dab4334743bdf.rmeta --extern paste=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libpaste-a36a4a0dbc2ac63f.dylib --extern rand=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/librand-4b1adc86e35ea892.rmeta --extern rayon=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/librayon-d134e48f83d52e6e.rmeta --extern rayon_cond=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/librayon_cond-5715a923c66c54a9.rmeta --extern regex=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libregex-a5c54f2d0034ab98.rmeta --extern regex_syntax=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libregex_syntax-58c405f62323b6ed.rmeta --extern reqwest=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libreqwest-1551c89d20e17f58.rmeta --extern serde=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libserde-f4748cc953dd1338.rmeta --extern serde_json=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libserde_json-5fba404e8440399e.rmeta --extern spm_precompiled=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libspm_precompiled-6bd24072bd3c9d31.rmeta --extern thiserror=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libthiserror-bcbb2769006ee534.rmeta --extern unicode_normalization_alignments=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libunicode_normalization_alignments-658520cf6a5461dc.rmeta --extern unicode_segmentation=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libunicode_segmentation-fffd829ab6256bb0.rmeta --extern unicode_categories=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/deps/libunicode_categories-e3815c3d18c1086b.rmeta -L native=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/build/bzip2-sys-d2cb72d65b178690/out/lib -L native=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/build/zstd-sys-ddff0154a55a136c/out -L native=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/build/esaxx-rs-69d9e34a40d41449/out -L native=/private/var/folders/zc/c2qvlcjd5cgcg5l84484t8vh0000gt/T/tmp2yohvwu_/tokenizers-0.12.1/target/release/build/onig_sys-3a9a2f947b5ad744/out (exit status : 1)&#xA;error : cargo rustc --lib --message-format=json-render-diagnostics --manifest-path Cargo.toml --release -v --features pyo3/extension-module --crate-type cdylib -- -C &#x27;link-args=-undefined dynamic_lookup -Wl,-install_name,@rpath/tokenizers.cpython-311-darwin.so&#x27; failed with code 101

    &#xA;

    at /usr/local/lib/python3.11/site-packages/poetry/installation/chef.py:166 in _prepare&#xA;162│&#xA;163│ error = ChefBuildError("\n\n".join(message_parts))&#xA;164│&#xA;165│ if error is not None :&#xA;→ 166│ raise error from None&#xA;167│&#xA;168│ return path&#xA;169│&#xA;170│ def _prepare_sdist(self, archive : Path, destination : Path | None = None) -> Path :

    &#xA;

    Note : This error originates from the build backend, and is likely not a problem with poetry but with tokenizers (0.12.1) not supporting PEP 517 builds. You can verify this by running 'pip wheel —no-cache-dir —use-pep517 "tokenizers (==0.12.1)"'.

    &#xA;

    UPDATE (SOLVED) :

    &#xA;

      &#xA;
    • i found a solution and this worked for me :
    • &#xA;

    &#xA;

    "I had the same problem and nothing mentioned here worked for me. Here is what worked for me :

    &#xA;

    **("Didnt do this Part")"Require all dependencies you need in the main.js file that is run by electron."**    &#xA;

    &#xA;

    What i did was :&#xA;Run npm i -D electron-rebuild to add the electron-rebuild package&#xA;Remove the node-modules folder, as well as the packages-lock.json file.&#xA;Run npm i to install all modules.&#xA;Run ./node_modules/.bin/electron-rebuild (.\node_modules.bin\electron-rebuild.cmd for Windows) to rebuild everything

    &#xA;

    It is very important to run ./node_modules/.bin/electron-rebuild directly after npm i otherwise it did not work on my mac."

    &#xA;

    But now i get following Error, when i upload and transcribe the file :

    &#xA;

    > [ELECTRON] NewEntry: Creating new entry with UUID: XY...&#xA;[ELECTRON] NewEntry: Copying audio file to store...&#xA;[ELECTRON] NewEntry: Audio file copied to store.&#xA;[ELECTRON] NewEntry: Entry added to database!&#xA;[ELECTRON] RunWhisper: Running model with args [&#xA;[ELECTRON]   &#x27;--verbose&#x27;,&#xA;[ELECTRON]   &#x27;true&#x27;,&#xA;[ELECTRON]   &#x27;--output_dir&#x27;,&#xA;[ELECTRON]   &#x27;/Users/administrator/Library/Application Support/stagewhisper/store/whisper/2a07203b-ad88-438c-babf-b600cb76aa1d&#x27;,&#xA;[ELECTRON]   &#x27;--task&#x27;,&#xA;[ELECTRON]   &#x27;translate&#x27;,&#xA;[ELECTRON]   &#x27;--model&#x27;,&#xA;[ELECTRON]   &#x27;base&#x27;,&#xA;[ELECTRON]   &#x27;--device&#x27;,&#xA;[ELECTRON]   &#x27;cpu&#x27;,&#xA;[ELECTRON]   &#x27;--input&#x27;,&#xA;[ELECTRON]   &#x27;/Users/administrator/Library/Application Support/stagewhisper/store/audio/harvard.mp3&#x27;&#xA;[ELECTRON] ]&#xA;[ELECTRON] RunWhisper: Child process closed with code 1&#xA;[ELECTRON] RunWhisper: Error running whisper script!&#xA;[ELECTRON] Error occurred in handler for &#x27;run-whisper&#x27;: Error: Error running whisper script!&#xA;[ELECTRON]     at ChildProcess.<anonymous> (/Users/administrator/Desktop/Stage-Whisper/electron/main/handlers/runWhisper/runWhisper.js:234:31)&#xA;[ELECTRON]     at ChildProcess.emit (node:events:390:28)&#xA;[ELECTRON]     at maybeClose (node:internal/child_process:1064:16)&#xA;[ELECTRON]     at Socket.<anonymous> (node:internal/child_process:450:11)&#xA;[ELECTRON]     at Socket.emit (node:events:390:28)&#xA;[ELECTRON]     at Pipe.<anonymous> (node:net:687:12)&#xA;&#xA; &#xA;</anonymous></anonymous></anonymous>

    &#xA;

  • Save video using opencv with H264 codec

    31 octobre 2023, par ldiaz997

    This is beyond me and I don't know what I'm doing wrong. I have read that in order to have my video in h265 codec, I need to build opencv from source. Well, I did that, and I also did it for ffmpeg Docker ffmpeg Compiler. But I'm trying to run my application using docker, and I still can't get over the error :

    &#xA;

    [ERROR:0@93.327] global cap_ffmpeg_impl.hpp:3018 open Could not find encoder for codec_id=27, error: Encoder not found&#xA;[ERROR:0@93.327] global cap_ffmpeg_impl.hpp:3093 open VIDEOIO/FFMPEG: Failed to initialize VideoWriter&#xA;

    &#xA;

    Dockerfile :

    &#xA;

    FROM python:3.10.12-slim-buster&#xA;&#xA;RUN apt-get update&#xA;&#xA;# Set the working directory in the container&#xA;WORKDIR /app&#xA;&#xA;# Copy the application code into the container&#xA;COPY . .&#xA;&#xA;# Set ffmpeg and ffprobe binary files&#xA;RUN mv ffmpeg /usr/local/bin&#xA;RUN mv ffprobe /usr/local/bin&#xA;&#xA;# Build opencv from source, to be able to use h264 codec.&#xA;RUN apt-get install -y cmake \&#xA;    gcc \&#xA;    g&#x2B;&#x2B; \&#xA;    python3-numpy \&#xA;    libavcodec-dev \&#xA;    libavformat-dev \&#xA;    libswscale-dev \&#xA;    libgstreamer-plugins-base1.0-dev \&#xA;    libgstreamer1.0-dev \&#xA;    libpng-dev \&#xA;    libjpeg-dev \&#xA;    libopenexr-dev \&#xA;    libtiff-dev \&#xA;    libwebp-dev \&#xA;    git&#xA;&#xA;RUN git clone --depth 1 --branch 4.8.0 https://github.com/opencv/opencv.git &amp;&amp; \&#xA;    git clone --depth 1 --branch 4.8.0 https://github.com/opencv/opencv_contrib.git &amp;&amp; \&#xA;    cd opencv &amp;&amp; \&#xA;    mkdir build &amp;&amp; \&#xA;    cd build &amp;&amp; \&#xA;    cmake -D OPENCV_EXTRA_MODULES_PATH=/app/opencv_contrib/modules ../ &amp;&amp; \&#xA;    make -j"$(nproc)" &amp;&amp; \&#xA;    make install&#xA;&#xA;# Remove opencv github project&#xA;RUN rm -r opencv&#xA;&#xA;# Remove opencv_contrib github project&#xA;RUN rm -r opencv_contrib&#xA;&#xA;# Prevents Python from writing pyc files to disc&#xA;ENV PYTHONDONTWRITEBYTECODE 1&#xA;&#xA;# Prevents Python from buffering stdout and stderr&#xA;ENV PYTHONUNBUFFERED 1&#xA;&#xA;# Install python dependencies&#xA;RUN pip install --upgrade pip&#xA;RUN pip install --no-cache-dir -r requirements.txt&#xA;&#xA;# Install netcat to know when rabbitmq is running&#xA;RUN apt-get install -y netcat&#xA;&#xA;# Set execute permissions&#xA;RUN chmod &#x2B;x entrypoint.sh&#xA;RUN chmod &#x2B;x web_start.sh&#xA;&#xA;ENTRYPOINT ["./entrypoint.sh"]&#xA;

    &#xA;

    I ran the command ./ffmpeg -i 57b3e3a7-ad22-469d-a7ff-cf76ba780664 -vcodec libx264 -acodec aac output.mp4 to test ffmpeg and this was the result.

    &#xA;

    ffmpeg version N-112515-gba6a5e7a3d Copyright (c) 2000-2023 the FFmpeg developers&#xA;  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.12) 20160609&#xA;  configuration: --prefix=/root/ffmpeg_build --pkg-config-flags=--static --extra-libs=-static --extra-cflags=--static --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --extra-libs=&#x27;-lpthread -lm&#x27; --bindir=/root/bin --enable-gpl --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree&#xA;  libavutil      58. 27.100 / 58. 27.100&#xA;  libavcodec     60. 30.102 / 60. 30.102&#xA;  libavformat    60. 15.101 / 60. 15.101&#xA;  libavdevice    60.  2.101 / 60.  2.101&#xA;  libavfilter     9. 11.100 /  9. 11.100&#xA;  libswscale      7.  4.100 /  7.  4.100&#xA;  libswresample   4. 11.100 /  4. 11.100&#xA;  libpostproc    57.  2.100 / 57.  2.100&#xA;Input #0, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;57b3e3a7-ad22-469d-a7ff-cf76ba780664&#x27;:&#xA;  Metadata:&#xA;    major_brand     : qt  &#xA;    minor_version   : 0&#xA;    compatible_brands: qt  &#xA;    creation_time   : 2023-10-30T15:34:32.000000Z&#xA;    com.apple.quicktime.make: Apple&#xA;    com.apple.quicktime.model: iPhone 13 Pro Max&#xA;    com.apple.quicktime.software: 16.6&#xA;    com.apple.quicktime.creationdate: 2023-10-30T11:34:32-0400&#xA;  Duration: 00:00:03.60, start: 0.000000, bitrate: 16264 kb/s&#xA;  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1920x1080, 16120 kb/s, 29.99 fps, 29.97 tbr, 600 tbn (default)&#xA;    Metadata:&#xA;      creation_time   : 2023-10-30T15:34:32.000000Z&#xA;      handler_name    : Core Media Video&#xA;      vendor_id       : [0][0][0][0]&#xA;      encoder         : H.264&#xA;    Side data:&#xA;      displaymatrix: rotation of -90.00 degrees&#xA;  Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 89 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2023-10-30T15:34:32.000000Z&#xA;      handler_name    : Core Media Audio&#xA;      vendor_id       : [0][0][0][0]&#xA;  Stream #0:2[0x3](und): Data: none (mebx / 0x7862656D), 0 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2023-10-30T15:34:32.000000Z&#xA;      handler_name    : Core Media Metadata&#xA;  Stream #0:3[0x4](und): Data: none (mebx / 0x7862656D), 0 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2023-10-30T15:34:32.000000Z&#xA;      handler_name    : Core Media Metadata&#xA;  Stream #0:4[0x5](und): Data: none (mebx / 0x7862656D), 34 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2023-10-30T15:34:32.000000Z&#xA;      handler_name    : Core Media Metadata&#xA;Stream mapping:&#xA;  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))&#xA;  Stream #0:1 -> #0:1 (aac (native) -> aac (native))&#xA;Press [q] to stop, [?] for help&#xA;[libx264 @ 0x5ae4c00] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2&#xA;[libx264 @ 0x5ae4c00] profile High, level 4.0&#xA;[libx264 @ 0x5ae4c00] 264 - core 148 r2643 5c65704 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - 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=30 lookahead_threads=5 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&#xA;Output #0, mp4, to &#x27;output.mp4&#x27;:&#xA;  Metadata:&#xA;    major_brand     : qt  &#xA;    minor_version   : 0&#xA;    compatible_brands: qt  &#xA;    com.apple.quicktime.creationdate: 2023-10-30T11:34:32-0400&#xA;    com.apple.quicktime.make: Apple&#xA;    com.apple.quicktime.model: iPhone 13 Pro Max&#xA;    com.apple.quicktime.software: 16.6&#xA;    encoder         : Lavf60.15.101&#xA;  Stream #0:0(und): Video: h264 (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1080x1920, q=2-31, 29.97 fps, 30k tbn (default)&#xA;    Metadata:&#xA;      creation_time   : 2023-10-30T15:34:32.000000Z&#xA;      handler_name    : Core Media Video&#xA;      vendor_id       : [0][0][0][0]&#xA;      encoder         : Lavc60.30.102 libx264&#xA;    Side data:&#xA;      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A&#xA;      displaymatrix: rotation of -0.00 degrees&#xA;  Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 69 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2023-10-30T15:34:32.000000Z&#xA;      handler_name    : Core Media Audio&#xA;      vendor_id       : [0][0][0][0]&#xA;      encoder         : Lavc60.30.102 aac&#xA;[out#0/mp4 @ 0x5ae3440] video:2773kB audio:31kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.157082%&#xA;frame=  108 fps= 74 q=-1.0 Lsize=    2809kB time=00:00:03.59 bitrate=6393.3kbits/s speed=2.47x    &#xA;[libx264 @ 0x5ae4c00] frame I:4     Avg QP:22.27  size: 48408&#xA;[libx264 @ 0x5ae4c00] frame P:104   Avg QP:24.58  size: 25440&#xA;[libx264 @ 0x5ae4c00] mb I  I16..4: 10.3% 82.9%  6.8%&#xA;[libx264 @ 0x5ae4c00] mb P  I16..4:  4.6% 18.1%  0.8%  P16..4: 40.3%  6.9%  4.1%  0.0%  0.0%    skip:25.3%&#xA;[libx264 @ 0x5ae4c00] 8x8 transform intra:78.0% inter:85.0%&#xA;[libx264 @ 0x5ae4c00] coded y,uvDC,uvAC intra: 44.9% 29.1% 0.1% inter: 22.5% 23.3% 0.0%&#xA;[libx264 @ 0x5ae4c00] i16 v,h,dc,p: 17% 49% 14% 19%&#xA;[libx264 @ 0x5ae4c00] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 19% 25% 37%  3%  3%  5%  3%  2%  4%&#xA;[libx264 @ 0x5ae4c00] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 30% 17%  3%  4%  8%  3%  2%  3%&#xA;[libx264 @ 0x5ae4c00] i8c dc,h,v,p: 67% 20% 12%  0%&#xA;[libx264 @ 0x5ae4c00] Weighted P-Frames: Y:1.9% UV:0.0%&#xA;[libx264 @ 0x5ae4c00] ref P L0: 61.8% 10.4% 18.3%  9.4%  0.2%&#xA;[libx264 @ 0x5ae4c00] kb/s:6303.40&#xA;[aac @ 0x68c9880] Qavg: 119.986&#xA;

    &#xA;

    The resulting video had an h264 codec. In my opinion, the problem is in opencv. Basically this is what I do in my python code :

    &#xA;

    cap = cv2.VideoCapture(video)&#xA;shoot_frames = []&#xA;while True:&#xA;    ret, img = cap.read()&#xA;    if not ret:&#xA;       break&#xA;    if some_condition:&#xA;       shoot_frames.append(img)&#xA;    if len(shoot_frames) > 41:&#xA;       out1 = cv2.VideoWriter(upload_path(name , dir), cv2.VideoWriter_fourcc(*&#x27;avc1&#x27;), int(fps), (int(width), int(height)), True)&#xA;       for shoot_frame in shoot_frames:&#xA;           out1.write(shoot_frame)&#xA;       out1.release()&#xA;       shoot_frames = []&#xA;

    &#xA;

    Output from print(cv2.getBuildInformation()) :

    &#xA;

    General configuration for OpenCV 4.8.1 =====================================&#xA;  Version control:               4.8.1-dirty&#xA;&#xA;  Platform:&#xA;    Timestamp:                   2023-09-27T14:20:56Z&#xA;    Host:                        Linux 5.15.0-1046-azure x86_64&#xA;    CMake:                       3.27.5&#xA;    CMake generator:             Unix Makefiles&#xA;    CMake build tool:            /bin/gmake&#xA;    Configuration:               Release&#xA;&#xA;  CPU/HW features:&#xA;    Baseline:                    SSE SSE2 SSE3&#xA;      requested:                 SSE3&#xA;    Dispatched code generation:  SSE4_1 SSE4_2 FP16 AVX AVX2 AVX512_SKX&#xA;      requested:                 SSE4_1 SSE4_2 AVX FP16 AVX2 AVX512_SKX&#xA;      SSE4_1 (16 files):         &#x2B; SSSE3 SSE4_1&#xA;      SSE4_2 (1 files):          &#x2B; SSSE3 SSE4_1 POPCNT SSE4_2&#xA;      FP16 (0 files):            &#x2B; SSSE3 SSE4_1 POPCNT SSE4_2 FP16 AVX&#xA;      AVX (7 files):             &#x2B; SSSE3 SSE4_1 POPCNT SSE4_2 AVX&#xA;      AVX2 (35 files):           &#x2B; SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2&#xA;      AVX512_SKX (5 files):      &#x2B; SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2 AVX_512F AVX512_COMMON AVX512_SKX&#xA;&#xA;  C/C&#x2B;&#x2B;:&#xA;    Built as dynamic libs?:      NO&#xA;    C&#x2B;&#x2B; standard:                11&#xA;    C&#x2B;&#x2B; Compiler:                /opt/rh/devtoolset-10/root/usr/bin/c&#x2B;&#x2B;  (ver 10.2.1)&#xA;    C&#x2B;&#x2B; flags (Release):         -Wl,-strip-all   -fsigned-char -W -Wall -Wreturn-type -Wnon-virtual-dtor -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections  -msse -msse2 -msse3 -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG  -DNDEBUG&#xA;    C&#x2B;&#x2B; flags (Debug):           -Wl,-strip-all   -fsigned-char -W -Wall -Wreturn-type -Wnon-virtual-dtor -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections  -msse -msse2 -msse3 -fvisibility=hidden -fvisibility-inlines-hidden -g  -O0 -DDEBUG -D_DEBUG&#xA;    C Compiler:                  /opt/rh/devtoolset-10/root/usr/bin/cc&#xA;    C flags (Release):           -Wl,-strip-all   -fsigned-char -W -Wall -Wreturn-type -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections  -msse -msse2 -msse3 -fvisibility=hidden -O3 -DNDEBUG  -DNDEBUG&#xA;    C flags (Debug):             -Wl,-strip-all   -fsigned-char -W -Wall -Wreturn-type -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections  -msse -msse2 -msse3 -fvisibility=hidden -g  -O0 -DDEBUG -D_DEBUG&#xA;    Linker flags (Release):      -Wl,--exclude-libs,libippicv.a -Wl,--exclude-libs,libippiw.a -L/ffmpeg_build/lib  -Wl,--gc-sections -Wl,--as-needed -Wl,--no-undefined  &#xA;    Linker flags (Debug):        -Wl,--exclude-libs,libippicv.a -Wl,--exclude-libs,libippiw.a -L/ffmpeg_build/lib  -Wl,--gc-sections -Wl,--as-needed -Wl,--no-undefined  &#xA;    ccache:                      YES&#xA;    Precompiled headers:         NO&#xA;    Extra dependencies:          /lib64/libopenblas.so Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Test Qt5::Concurrent /usr/local/lib/libpng.so /lib64/libz.so dl m pthread rt&#xA;    3rdparty dependencies:       libprotobuf ade ittnotify libjpeg-turbo libwebp libtiff libopenjp2 IlmImf quirc ippiw ippicv&#xA;&#xA;  OpenCV modules:&#xA;    To be built:                 calib3d core dnn features2d flann gapi highgui imgcodecs imgproc ml objdetect photo python3 stitching video videoio&#xA;    Disabled:                    world&#xA;    Disabled by dependency:      -&#xA;    Unavailable:                 java python2 ts&#xA;    Applications:                -&#xA;    Documentation:               NO&#xA;    Non-free algorithms:         NO&#xA;&#xA;  GUI:                           QT5&#xA;    QT:                          YES (ver 5.15.0 )&#xA;      QT OpenGL support:         NO&#xA;    GTK&#x2B;:                        NO&#xA;    VTK support:                 NO&#xA;&#xA;  Media I/O: &#xA;    ZLib:                        /lib64/libz.so (ver 1.2.7)&#xA;    JPEG:                        libjpeg-turbo (ver 2.1.3-62)&#xA;    WEBP:                        build (ver encoder: 0x020f)&#xA;    PNG:                         /usr/local/lib/libpng.so (ver 1.6.40)&#xA;    TIFF:                        build (ver 42 - 4.2.0)&#xA;    JPEG 2000:                   build (ver 2.5.0)&#xA;    OpenEXR:                     build (ver 2.3.0)&#xA;    HDR:                         YES&#xA;    SUNRASTER:                   YES&#xA;    PXM:                         YES&#xA;    PFM:                         YES&#xA;&#xA;  Video I/O:&#xA;    DC1394:                      NO&#xA;    FFMPEG:                      YES&#xA;      avcodec:                   YES (59.37.100)&#xA;      avformat:                  YES (59.27.100)&#xA;      avutil:                    YES (57.28.100)&#xA;      swscale:                   YES (6.7.100)&#xA;      avresample:                NO&#xA;    GStreamer:                   NO&#xA;    v4l/v4l2:                    YES (linux/videodev2.h)&#xA;&#xA;  Parallel framework:            pthreads&#xA;&#xA;  Trace:                         YES (with Intel ITT)&#xA;&#xA;  Other third-party libraries:&#xA;    Intel IPP:                   2021.8 [2021.8.0]&#xA;           at:                   /io/_skbuild/linux-x86_64-3.7/cmake-build/3rdparty/ippicv/ippicv_lnx/icv&#xA;    Intel IPP IW:                sources (2021.8.0)&#xA;              at:                /io/_skbuild/linux-x86_64-3.7/cmake-build/3rdparty/ippicv/ippicv_lnx/iw&#xA;    VA:                          NO&#xA;    Lapack:                      YES (/lib64/libopenblas.so)&#xA;    Eigen:                       NO&#xA;    Custom HAL:                  NO&#xA;    Protobuf:                    build (3.19.1)&#xA;    Flatbuffers:                 builtin/3rdparty (23.5.9)&#xA;&#xA;  OpenCL:                        YES (no extra features)&#xA;    Include path:                /io/opencv/3rdparty/include/opencl/1.2&#xA;    Link libraries:              Dynamic load&#xA;&#xA;  Python 3:&#xA;    Interpreter:                 /opt/python/cp37-cp37m/bin/python3.7 (ver 3.7.17)&#xA;    Libraries:                   libpython3.7m.a (ver 3.7.17)&#xA;    numpy:                       /home/ci/.local/lib/python3.7/site-packages/numpy/core/include (ver 1.17.0)&#xA;    install path:                python/cv2/python-3&#xA;&#xA;  Python (for build):            /opt/python/cp37-cp37m/bin/python3.7&#xA;&#xA;  Java:                          &#xA;    ant:                         NO&#xA;    Java:                        NO&#xA;    JNI:                         NO&#xA;    Java wrappers:               NO&#xA;    Java tests:                  NO&#xA;&#xA;  Install to:                    /io/_skbuild/linux-x86_64-3.7/cmake-install&#xA;-----------------------------------------------------------------&#xA;&#xA;&#xA;

    &#xA;

    Update

    &#xA;

    I made my docker image more simpler, and therefore my question. Install ffmpeg from the repository :

    &#xA;

    FROM python:3.10.12-slim-buster&#xA;&#xA;RUN apt-get update&#xA;&#xA;# Set the working directory in the container&#xA;WORKDIR /app&#xA;&#xA;# Install ffmpeg for opencv&#xA;RUN apt-get install -y ffmpeg&#xA;&#xA;# Copy the application code into the container&#xA;COPY . .&#xA;&#xA;# Build opencv from source, to be able to use h264 codec.&#xA;RUN apt-get install -y cmake \&#xA;    gcc \&#xA;    g&#x2B;&#x2B; \&#xA;    python3-numpy \&#xA;    libavcodec-dev \&#xA;    libavformat-dev \&#xA;    libswscale-dev \&#xA;    libgstreamer-plugins-base1.0-dev \&#xA;    libgstreamer1.0-dev \&#xA;    libpng-dev \&#xA;    libjpeg-dev \&#xA;    libopenexr-dev \&#xA;    libtiff-dev \&#xA;    libwebp-dev \&#xA;    git&#xA;&#xA;RUN git clone --depth 1 --branch 4.8.0 https://github.com/opencv/opencv.git &amp;&amp; \&#xA;    git clone --depth 1 --branch 4.8.0 https://github.com/opencv/opencv_contrib.git &amp;&amp; \&#xA;    cd opencv &amp;&amp; \&#xA;    mkdir build &amp;&amp; \&#xA;    cd build &amp;&amp; \&#xA;    cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=/app/opencv_contrib/modules -D OPENCV_ENABLE_NONFREE=ON ../ &amp;&amp; \&#xA;    make -j"$(nproc)" &amp;&amp; \&#xA;    make install&#xA;&#xA;# Remove opencv github project&#xA;RUN rm -r opencv&#xA;&#xA;# Remove opencv_contrib github project&#xA;RUN rm -r opencv_contrib&#xA;&#xA;# Prevents Python from writing pyc files to disc&#xA;ENV PYTHONDONTWRITEBYTECODE 1&#xA;&#xA;# Prevents Python from buffering stdout and stderr&#xA;ENV PYTHONUNBUFFERED 1&#xA;&#xA;# Install python dependencies&#xA;RUN pip install --upgrade pip&#xA;RUN pip install --no-cache-dir -r requirements.txt&#xA;&#xA;# Install netcat to know when rabbitmq is running&#xA;RUN apt-get install -y netcat&#xA;&#xA;# Set execute permissions&#xA;RUN chmod &#x2B;x entrypoint.sh&#xA;RUN chmod &#x2B;x web_start.sh&#xA;&#xA;ENTRYPOINT ["./entrypoint.sh"]&#xA;

    &#xA;

    Run the following commands inside the docker container :

    &#xA;

    $ ffmpeg -version&#xA;&#xA;ffmpeg version 4.1.11-0&#x2B;deb10u1 Copyright (c) 2000-2023 the FFmpeg developers&#xA;built with gcc 8 (Debian 8.3.0-6)&#xA;configuration: --prefix=/usr --extra-version=0&#x2B;deb10u1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared&#xA;libavutil      56. 22.100 / 56. 22.100&#xA;libavcodec     58. 35.100 / 58. 35.100&#xA;libavformat    58. 20.100 / 58. 20.100&#xA;libavdevice    58.  5.100 / 58.  5.100&#xA;libavfilter     7. 40.101 /  7. 40.101&#xA;libavresample   4.  0.  0 /  4.  0.  0&#xA;libswscale      5.  3.100 /  5.  3.100&#xA;libswresample   3.  3.100 /  3.  3.100&#xA;libpostproc    55.  3.100 / 55.  3.100&#xA;

    &#xA;

    $ ffmpeg -i cf91f302-c357-49ba-b59c-bcfb8b7f4866 -vcodec libx264 -f mp4 output.mp4&#xA;&#xA;ffmpeg version 4.1.11-0&#x2B;deb10u1 Copyright (c) 2000-2023 the FFmpeg developers&#xA;  built with gcc 8 (Debian 8.3.0-6)&#xA;  configuration: --prefix=/usr --extra-version=0&#x2B;deb10u1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared&#xA;  libavutil      56. 22.100 / 56. 22.100&#xA;  libavcodec     58. 35.100 / 58. 35.100&#xA;  libavformat    58. 20.100 / 58. 20.100&#xA;  libavdevice    58.  5.100 / 58.  5.100&#xA;  libavfilter     7. 40.101 /  7. 40.101&#xA;  libavresample   4.  0.  0 /  4.  0.  0&#xA;  libswscale      5.  3.100 /  5.  3.100&#xA;  libswresample   3.  3.100 /  3.  3.100&#xA;  libpostproc    55.  3.100 / 55.  3.100&#xA;Input #0, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;cf91f302-c357-49ba-b59c-bcfb8b7f4866&#x27;:&#xA;  Metadata:&#xA;    major_brand     : qt  &#xA;    minor_version   : 0&#xA;    compatible_brands: qt  &#xA;    creation_time   : 2023-10-31T10:38:42.000000Z&#xA;    com.apple.quicktime.make: Apple&#xA;    com.apple.quicktime.model: iPhone 13 Pro Max&#xA;    com.apple.quicktime.software: 16.6&#xA;    com.apple.quicktime.creationdate: 2023-10-31T06:38:42-0400&#xA;  Duration: 00:00:04.23, start: 0.000000, bitrate: 15915 kb/s&#xA;    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080, 15767 kb/s, 30 fps, 30 tbr, 600 tbn, 1200 tbc (default)&#xA;    Metadata:&#xA;      rotate          : 90&#xA;      creation_time   : 2023-10-31T10:38:42.000000Z&#xA;      handler_name    : Core Media Video&#xA;      encoder         : H.264&#xA;    Side data:&#xA;      displaymatrix: rotation of -90.00 degrees&#xA;    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 89 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2023-10-31T10:38:42.000000Z&#xA;      handler_name    : Core Media Audio&#xA;    Stream #0:2(und): Data: none (mebx / 0x7862656D), 0 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2023-10-31T10:38:42.000000Z&#xA;      handler_name    : Core Media Metadata&#xA;    Stream #0:3(und): Data: none (mebx / 0x7862656D), 0 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2023-10-31T10:38:42.000000Z&#xA;      handler_name    : Core Media Metadata&#xA;    Stream #0:4(und): Data: none (mebx / 0x7862656D), 34 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2023-10-31T10:38:42.000000Z&#xA;      handler_name    : Core Media Metadata&#xA;Stream mapping:&#xA;  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))&#xA;  Stream #0:1 -> #0:1 (aac (native) -> aac (native))&#xA;Press [q] to stop, [?] for help&#xA;[libx264 @ 0x55db965ee980] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2&#xA;[libx264 @ 0x55db965ee980] profile High, level 4.0&#xA;[libx264 @ 0x55db965ee980] 264 - core 155 r2917 0a84d98 - 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=6 lookahead_threads=1 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&#xA;Output #0, mp4, to &#x27;output.mp4&#x27;:&#xA;  Metadata:&#xA;    major_brand     : qt  &#xA;    minor_version   : 0&#xA;    compatible_brands: qt  &#xA;    com.apple.quicktime.creationdate: 2023-10-31T06:38:42-0400&#xA;    com.apple.quicktime.make: Apple&#xA;    com.apple.quicktime.model: iPhone 13 Pro Max&#xA;    com.apple.quicktime.software: 16.6&#xA;    encoder         : Lavf58.20.100&#xA;    Stream #0:0(und): Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 1080x1920, q=-1--1, 30 fps, 15360 tbn, 30 tbc (default)&#xA;    Metadata:&#xA;      encoder         : Lavc58.35.100 libx264&#xA;      creation_time   : 2023-10-31T10:38:42.000000Z&#xA;      handler_name    : Core Media Video&#xA;    Side data:&#xA;      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1&#xA;      displaymatrix: rotation of -0.00 degrees&#xA;    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 69 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2023-10-31T10:38:42.000000Z&#xA;      handler_name    : Core Media Audio&#xA;      encoder         : Lavc58.35.100 aac&#xA;frame=  127 fps= 27 q=-1.0 Lsize=    2005kB time=00:00:04.24 bitrate=3866.2kbits/s speed=0.909x    &#xA;video:1964kB audio:36kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.282549%&#xA;[libx264 @ 0x55db965ee980] frame I:1     Avg QP:21.43  size: 36791&#xA;[libx264 @ 0x55db965ee980] frame P:59    Avg QP:23.61  size: 22380&#xA;[libx264 @ 0x55db965ee980] frame B:67    Avg QP:24.20  size:  9743&#xA;[libx264 @ 0x55db965ee980] consecutive B-frames: 20.5% 22.0% 16.5% 40.9%&#xA;[libx264 @ 0x55db965ee980] mb I  I16..4: 29.4% 58.6% 11.9%&#xA;[libx264 @ 0x55db965ee980] mb P  I16..4: 15.0% 21.8%  1.3%  P16..4: 26.1%  7.5%  3.1%  0.0%  0.0%    skip:25.2%&#xA;[libx264 @ 0x55db965ee980] mb B  I16..4:  1.9%  1.7%  0.1%  B16..8: 36.3%  3.6%  0.5%  direct: 3.9%  skip:52.1%  L0:42.9% L1:52.1% BI: 5.0%&#xA;[libx264 @ 0x55db965ee980] 8x8 transform intra:56.2% inter:86.6%&#xA;[libx264 @ 0x55db965ee980] coded y,uvDC,uvAC intra: 19.5% 27.3% 2.1% inter: 11.7% 18.9% 0.1%&#xA;[libx264 @ 0x55db965ee980] i16 v,h,dc,p: 25% 54%  8% 12%&#xA;[libx264 @ 0x55db965ee980] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 22% 25% 44%  1%  2%  2%  2%  1%  1%&#xA;[libx264 @ 0x55db965ee980] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 16% 45% 13%  2%  7%  6%  6%  3%  3%&#xA;[libx264 @ 0x55db965ee980] i8c dc,h,v,p: 62% 27% 10%  1%&#xA;[libx264 @ 0x55db965ee980] Weighted P-Frames: Y:3.4% UV:0.0%&#xA;[libx264 @ 0x55db965ee980] ref P L0: 65.2% 18.0% 12.2%  4.6%  0.1%&#xA;[libx264 @ 0x55db965ee980] ref B L0: 89.1%  9.3%  1.6%&#xA;[libx264 @ 0x55db965ee980] ref B L1: 97.2%  2.8%&#xA;[libx264 @ 0x55db965ee980] kb/s:3798.37&#xA;[aac @ 0x55db965edf00] Qavg: 125.454&#xA;

    &#xA;

    The errors persist.

    &#xA;

    >>> import cv2&#xA;>>> out = cv2.VideoWriter("./out.mp4", cv2.VideoWriter_fourcc(*&#x27;avc1&#x27;), 30, (800, 600), True)&#xA;[ERROR:0@91.872] global cap_ffmpeg_impl.hpp:3018 open Could not find encoder for codec_id=27, error: Encoder not found&#xA;[ERROR:0@91.872] global cap_ffmpeg_impl.hpp:3093 open VIDEOIO/FFMPEG: Failed to initialize VideoWriter&#xA;

    &#xA;

    Could someone please tell me what I'm doing wrong ?

    &#xA;

  • GDPR Compliance and Personal Data : The Ultimate Guide

    22 septembre 2023, par Erin — GDPR

    According to the International Data Corporation (IDC), the world generated 109 zettabytes of data in 2022 alone, and that number is on track to nearly triple to 291 zettabytes in 2027. For scale, that’s one trillion gigs or one followed by 21 zeros in bytes.

    A major portion of that data is generated online, and the conditions for securing that digital data can have major real-world consequences. For example, online identifiers that fall into the wrong hands can be used nefariously for cybercrime, identity theft or unwanted targeting. Users also want control over how their actions are tracked online and transparency into how their information is used.

    Therefore, regional and international regulations are necessary to set the terms for respecting users’ privacy and control over personal information. Perhaps the most widely known of these laws is the European Union’s General Data Protection Regulation (GDPR).

    What is personal data under GDPR ?

    Under the General Data Protection Regulation (GDPR), “personal data” refers to information linked to an identifiable natural person. An “identifiable natural person” is someone directly or indirectly recognisable via individually specific descriptors such as physical, genetic, economic, cultural, employment and social details.

    It’s important to note that under GDPR, the definition of personal data is very broad, and it encompasses both information that is commonly considered personal (e.g., names and addresses) and more technical or specialised data (e.g., IP addresses or device IDs) that can be used to identify individuals indirectly.

    Organisations that handle personal data must adhere to strict rules and principles regarding the processing and protection of this data to ensure individuals’ privacy rights are respected and upheld.

    Personal data can include, but is not limited to, the following :

    1. Basic Identity Information : This includes a person’s name, government-issued ID number, social address, phone number, email address or other similar identifiers.
    2. Biographical Information : Details such as date of birth, place of birth, nationality and gender.
    3. Contact Information : Information that allows communication with the individual, such as phone numbers, email addresses or mailing addresses.
    4. Financial Information : Data related to a person’s finances, including credit card numbers, bank account numbers, income records or financial transactions.
    5. Health and Medical Information : Information about a person’s health, medical history or healthcare treatments.
    6. Location Data : Data that can pinpoint a person’s geographical location, such as GPS coordinates or information derived from mobile devices.
    7. Online Identifiers : Information like IP addresses, cookies or other online tracking mechanisms that can be used to identify or track individuals online.
    8. Biometric Data : Unique physical or behavioural characteristics used for identification, such as fingerprints, facial recognition data or voiceprints.

    Sensitive Data

    Sensitive data is a special category of personal data prohibited from processing unless specific conditions are met, including users giving explicit consent. The data must also be necessary to fulfil one or more of a limited set of allowed purposes, such as reasons related to employment, social protections or legal claims.

    Sensitive information includes details about a person’s racial or ethnic origin, sexual orientation, political opinions, religion, trade union membership, biometric data or genetic data.

    What are the 7 main principles of GDPR ?

    The 7 principles of GDPR guide companies in how to properly handle personal data gathered from their users.

    A list of the main principles to follow for GDPR personal data handling

    The seven principles of GDPR are :

    1. Lawfulness, fairness and transparency

    Lawfulness means having legal grounds for data processing, such as consent, legitimate interests, contract and legal obligation. If you can achieve your objective without processing personal data, the basis is no longer lawful.

    Fairness means you’re processing data reasonably and in line with users’ best interests, and they wouldn’t be shocked if they find out what you’re using it for.

    Transparency means being open regarding when you’re processing user data, what you’re using it for and who you’re collecting it from.

    To get started with this, use our guide on creating a GDPR-compliant privacy policy.

    2. Purpose limitation

    You should only process user data for the original purposes you communicated to users when requesting their explicit consent. If you aim to undertake a new purpose, it must be compatible with the original stated purpose. Otherwise, you’ll need to ask for consent again.

    3. Data minimisation

    You should only collect as much data as you need to accomplish compliant objectives and nothing more, especially not other personally identifiable information (PII).

    Matomo provides several features for extensive data minimisation, including the ability to anonymize IP addresses.

    Data minimisation is well-liked by users. Around 70% of people have taken active steps towards protecting their identity online, so they’ll likely appreciate any principles that help them in this effort.

    4. Accuracy

    The user data you process should be accurate and up-to-date where necessary. You should have reasonable systems to catch inaccurate data and correct or delete it. If there are mistakes that you need to store, then you need to label them clearly as mistakes to keep them from being processed as accurate.

    5. Storage limitation

    This principle requires you to eliminate data you’re no longer using for the original purposes. You must implement time limits, after which you’ll delete or anonymize any user data on record. Matomo allows you to configure your system such that logs are automatically deleted after some time.

    6. Integrity and confidentiality

    This requires that data processors have security measures in place to protect data from threats such as hackers, loss and damage. As an open-source web analytics solution, Matomo enables you to verify its security first-hand.

    7. Accountability

    Accountability means you’re responsible for what you do with the data you collect. It’s your duty to maintain compliance and document everything for audits. Matomo tracks a lot of the data you’d need for this, including activity, task and application logs.

    Who does GDPR apply to ?

    The GDPR applies to any company that processes the personal data of EU citizens and residents (regardless of the location of the company). 

    If this is the first time you’ve heard about this, don’t worry ! Matomo provides tools that allow you to determine exactly what kinds of data you’re collecting and how they must be handled for full compliance. 

    Best practices for processing personal data under GDPR

    Companies subject to the GDPR need to be aware of several key principles and best practices to ensure they process personal data in a lawful and responsible manner.

    Here are some essential practices to implement :

    1. Lawful basis for processing : Organisations must have a lawful basis for processing personal data. Common lawful bases include the necessity of processing for compliance with a legal obligation, the performance of a contract, the protection of vital interests and tasks carried out in the public interest. Your organisation’s legitimate interests for processing must not override the individual’s legal rights. 
    2. Data minimisation : Collect and process only the personal data that is necessary for the specific purpose for which it was collected. Matomo’s anonymisation capabilities help you avoid collecting excessive or irrelevant data.
    3. Transparency : Provide clear and concise information to individuals about how their data will be processed. Privacy statements should be clear and accessible to users to allow them to easily understand how their data is used.
    4. Consent : If you are relying on consent as a lawful basis, make sure you design your privacy statements and consent forms to be usable. This lets you ensure that consent is freely given, specific, informed and unambiguous. Also, individuals must be able to withdraw their consent at any time.
    5. Data subject rights : You must have mechanisms in place to uphold the data subject’s individual rights, such as the rights to access, erase, rectify errors and restrict processing. Establish internal processes for handling such requests.
    6. Data protection impact assessments (DPIAs) : Conduct DPIAs for high-risk processing activities, especially when introducing new technologies or processing sensitive data.
    7. Security measures : You must implement appropriate technical security measures to maintain the safety of personal data. This can include ‌security tools such as encryption, firewalls and limited access controls, as well as organisational practices like regular security assessments. 
    8. Data breach response : Develop and maintain a data breach response plan. Notify relevant authorities and affected individuals of data breaches within the required timeframe.
    9. International data transfers : If transferring personal data outside the EU, ensure that appropriate safeguards are in place and consider GDPR provisions. These provisions allow data transfers from the EU to non-EU countries in three main ways :
      1. When the destination country has been deemed by the European Commission to have adequate data protection, making it similar to transferring data within the EU.
      2. Through the use of safeguards like binding corporate rules, approved contractual clauses or adherence to codes of conduct.
      3. In specific situations when none of the above apply, such as when an individual explicitly consents to the transfer after being informed of the associated risks.
    10. Data protection officers (DPOs) : Appoint a data protection officer if required by GDPR. DPOs are responsible for overseeing data protection compliance within the organisation.
    11. Privacy by design and default : Integrate data protection into the design of systems and processes. Default settings should prioritise user privacy, as is the case with something like Matomo’s first-party cookies.
    12. Documentation : Maintain records of data processing activities, including data protection policies, procedures and agreements. Matomo logs and backs up web server access, activity and more, providing a solid audit trail.
    13. Employee training : Employees who handle personal data must be properly trained to uphold data protection principles and GDPR compliance best practices. 
    14. Third-party contracts : If sharing data with third parties, have data processing agreements in place that outline the responsibilities and obligations of each party regarding data protection.
    15. Regular audits and assessments : Conduct periodic audits and assessments of data processing activities to ensure ongoing compliance. As mentioned previously, Matomo tracks and saves several key statistics and metrics that you’d need for a successful audit.
    16. Accountability : Demonstrate accountability by documenting and regularly reviewing compliance efforts. Be prepared to provide evidence of compliance to data protection authorities.
    17. Data protection impact on data analytics and marketing : Understand how GDPR impacts data analytics and marketing activities, including obtaining valid consent for marketing communications.

    Organisations should be on the lookout for GDPR updates, as the regulations may evolve over time. When in doubt, consult legal and privacy professionals to ensure compliance, as non-compliance could potentially result in significant fines, damage to reputation and legal consequences.

    What constitutes a GDPR breach ?

    Security incidents that compromise the confidentiality, integrity and/or availability of personal data are considered a breach under GDPR. This means a breach is not limited to leaks ; if you accidentally lose or delete personal data, its availability is compromised, which is technically considered a breach.

    What are the penalty fines for GDPR non-compliance ?

    The penalty fines for GDPR non-compliance are up to €20 million or up to 4% of the company’s revenue from the previous fiscal year, whichever is higher. This makes it so that small companies can also get fined, no matter how low-profile the breach is.

    In 2022, for instance, a company found to have mishandled user data was fined €2,000, and the webmaster responsible was personally fined €150.

    Is Matomo GDPR compliant ?

    Matomo is fully GDPR compliant and can ensure you achieve compliance, too. Here’s how :

    • Data anonymization and IP anonymization
    • GDPR Manager that helps you identify gaps in your compliance and address them effectively
    • Users can opt-out of all tracking
    • First-party cookies by default
    • Users can view the data collected
    • Capabilities to delete visitor data when requested
    • You own your data and it is not used for any other purposes (like advertising)
    • Visitor logs and profiles can be disabled
    • Data is stored in the EU (Matomo Cloud) or in any country of your choice (Matomo On-Premise)

    Is there a GDPR in the US ?

    There is no GDPR-equivalent law that covers the US as a whole. That said, US-based companies processing data from persons in the EU still need to adhere to GDPR principles.

    While there isn’t a federal data protection law, several states have enacted their own. One notable example is the California Consumer Privacy Act (CCPA), which Matomo is fully compliant with.

    Ready for GDPR-compliant analytics ?

    The GDPR lays out a set of regulations and penalties that govern the collection and processing of personal data from EU citizens and residents. A breach under GDPR attracts a fine of either up to €20 million or 4% of the company’s revenue, and the penalty applies to companies of all sizes.

    Matomo is fully GDPR compliant and provides several features and advanced privacy settings to ensure you ‌are as well, without sacrificing the resources you need for effective analytics. If you’re ready to get started, sign up for a 21-day free trial of Matomo — no credit card required.

    Disclaimer
    We are not lawyers and don’t claim to be. The information provided here is to help give an introduction to GDPR. We encourage every business and website to take data privacy seriously and discuss these issues with your lawyer if you have any concerns.