
Recherche avancée
Autres articles (38)
-
La file d’attente de SPIPmotion
28 novembre 2010, parUne file d’attente stockée dans la base de donnée
Lors de son installation, SPIPmotion crée une nouvelle table dans la base de donnée intitulée spip_spipmotion_attentes.
Cette nouvelle table est constituée des champs suivants : id_spipmotion_attente, l’identifiant numérique unique de la tâche à traiter ; id_document, l’identifiant numérique du document original à encoder ; id_objet l’identifiant unique de l’objet auquel le document encodé devra être attaché automatiquement ; objet, le type d’objet auquel (...) -
XMP PHP
13 mai 2011, parDixit Wikipedia, XMP signifie :
Extensible Metadata Platform ou XMP est un format de métadonnées basé sur XML utilisé dans les applications PDF, de photographie et de graphisme. Il a été lancé par Adobe Systems en avril 2001 en étant intégré à la version 5.0 d’Adobe Acrobat.
Étant basé sur XML, il gère un ensemble de tags dynamiques pour l’utilisation dans le cadre du Web sémantique.
XMP permet d’enregistrer sous forme d’un document XML des informations relatives à un fichier : titre, auteur, historique (...) -
MediaSPIP en mode privé (Intranet)
17 septembre 2013, parÀ partir de la version 0.3, un canal de MediaSPIP peut devenir privé, bloqué à toute personne non identifiée grâce au plugin "Intranet/extranet".
Le plugin Intranet/extranet, lorsqu’il est activé, permet de bloquer l’accès au canal à tout visiteur non identifié, l’empêchant d’accéder au contenu en le redirigeant systématiquement vers le formulaire d’identification.
Ce système peut être particulièrement utile pour certaines utilisations comme : Atelier de travail avec des enfants dont le contenu ne doit pas (...)
Sur d’autres sites (5648)
-
Berlin website owners need consent for using Google Analytics
19 novembre 2019, par Joselyn Khor — Uncategorized -
Executing shell script on Google Cloud Functions
9 juillet 2020, par João AbrantesI am trying to encode .mp4 videos into hls using FFmpeg.


I am using
subprocess
to call FFmpeg :

def transcoder(data, context):
 """Background Cloud Function to be triggered by Cloud Storage.
 This generic function logs relevant data when a file is changed.

 Args:
 data (dict): The Cloud Functions event payload.
 context (google.cloud.functions.Context): Metadata of triggering event.
 Returns:
 None; the output is written to Stackdriver Logging
 """
 try:
 input_filename = data['name'].split('/')[-1] #videos have no extension
 input_path = f'/tmp/{input_filename}'
 print(f'filename {input_filename}')
 print(f'input_path {input_path}')
 print(f"bucket {data['bucket']}")
 print(f"name {data['name']}")

 outdir_path = f'/tmp/output/{input_filename}'
 os.makedirs(outdir_path, exist_ok=True)

 bucket = client.get_bucket(data['bucket'])
 blob = bucket.get_blob(data['name'])
 blob.download_to_filename(input_path)

 cmd = f'''ffmpeg -y -i {input_path} \
 -preset ultrafast -g 60 -sc_threshold 0 \
 -map 0:0 -map 0:1 -map 0:0 -map 0:1 \
 -s:v:0 360x640 -c:v:0 libx264 -b:v:0 365k \
 -s:v:1 720x1280 -c:v:1 libx264 -b:v:1 3000k \
 -c:a copy \
 -var_stream_map "v:0,a:0 v:1,a:1" \
 -master_pl_name master.m3u8 \
 -f hls -hls_time 6 -hls_list_size 0 \
 -hls_segment_filename "{outdir_path}/%v_fileSequence%d.ts" \
 -hls_playlist_type vod \
 {outdir_path}/%v_prog_index.m3u8'''

 process = subprocess.Popen(cmd)
 stdout, stderr = process.communicate()
 upload_local_directory_to_gcs(outdir_path, upload_bucket, input_filename)
 except Exception as e:
 print(e)



The problem is that I get an error :


[Errno 2] No such file or directory: 'ffmpeg -y -i /tmp/video -preset ultrafast -g 60 -sc_threshold 0 -map 0:0 -map 0:1 -map 0:0 -map 0:1 -s:v:0 360x640 -c:v:0 libx264 -b:v:0 365k -s:v:1 720x1280 -c:v:1 libx264 -b:v:1 3000k -c:a copy -var_stream_map "v:0,a:0 v:1,a:1" -master_pl_name master.m3u8 -f hls -hls_time 6 -hls_list_size 0 -hls_segment_filename "/tmp/output/video/%v_fileSequence%d.ts" -hls_playlist_type vod /tmp/output/video/%v_prog_index.m3u8': 'ffmpeg -y -i /tmp/video -preset ultrafast -g 60 -sc_threshold 0 -map 0:0 -map 0:1 -map 0:0 -map 0:1 -s:v:0 360x640 -c:v:0 libx264 -b:v:0 365k -s:v:1 720x1280 -c:v:1 libx264 -b:v:1 3000k -c:a copy -var_stream_map "v:0,a:0 v:1,a:1" -master_pl_name master.m3u8 -f hls -hls_time 6 -hls_list_size 0 -hls_segment_filename "/tmp/output/video/%v_fileSequence%d.ts" -hls_playlist_type vod /tmp/output/video/%v_prog_index.m3u8'



But I know that the input files and the output files do exist because I debugged that using
print(os.listdir(path))
so now I am wondering if the FFmpeg I call with subprocess has access to the /tmp folder..?

I know that there is a Python FFmpeg library I could use, but I don't know how to run my FFmpeg command using that library. Can you help ?


p.s. I can run this locally with success.


-
Evolution #3560 (Fermé) : Supprimer l’option expérimentale Google Closure Compiler
4 mai 2017Fait en 3.2 par https://zone.spip.org/trac/spip-zone/changeset/104154