
Recherche avancée
Médias (1)
-
Revolution of Open-source and film making towards open film making
6 octobre 2011, par
Mis à jour : Juillet 2013
Langue : English
Type : Texte
Autres articles (103)
-
List of compatible distributions
26 avril 2011, parThe table below is the list of Linux distributions compatible with the automated installation script of MediaSPIP. Distribution nameVersion nameVersion number Debian Squeeze 6.x.x Debian Weezy 7.x.x Debian Jessie 8.x.x Ubuntu The Precise Pangolin 12.04 LTS Ubuntu The Trusty Tahr 14.04
If you want to help us improve this list, you can provide us access to a machine whose distribution is not mentioned above or send the necessary fixes to add (...) -
Encoding and processing into web-friendly formats
13 avril 2011, parMediaSPIP automatically converts uploaded files to internet-compatible formats.
Video files are encoded in MP4, Ogv and WebM (supported by HTML5) and MP4 (supported by Flash).
Audio files are encoded in MP3 and Ogg (supported by HTML5) and MP3 (supported by Flash).
Where possible, text is analyzed in order to retrieve the data needed for search engine detection, and then exported as a series of image files.
All uploaded files are stored online in their original format, so you can (...) -
Submit enhancements and plugins
13 avril 2011If you have developed a new extension to add one or more useful features to MediaSPIP, let us know and its integration into the core MedisSPIP functionality will be considered.
You can use the development discussion list to request for help with creating a plugin. As MediaSPIP is based on SPIP - or you can use the SPIP discussion list SPIP-Zone.
Sur d’autres sites (4885)
-
Revision e707e9580b : libs.mk : don't include x86inc.asm in codec src list this file is an include and
28 juin 2014, par James ZernChanged Paths :
Modify /libs.mk
libs.mk : don’t include x86inc.asm in codec src listthis file is an include and doesn’t need to be built on its own.
fixes :
ranlib : file : libvpx_g.a(x86inc.asm.o) has no symbolsChange-Id : I89504e37ff0a4488489af7b9b7e09fb32acc4853
-
avformat/mov : move edit list heuristics into mov_build_index()
12 novembre 2014, par Clément Bœsch -
How to build list of tasks for asyncio.gather in Python 3.8
22 juillet 2020, par mcgregor94086Below I have attached a test program to demonstrate a problem I am having with asyncio.gather throwing a TypeError.


My objective : To make multiple concurrent asynchronous calls to capture camera images to files from an array of USB cameras attached to my computer. When all cameras have completed their async captures, I want then resume processing.


The async coroutine take_image() shown here makes a system call to the "ffmpeg" application that captures an image from the specified camera to a specified file.


import asyncio
import os
import subprocess
import time

async def take_image(camera_id, camera_name, image_file_path, image_counter):
 image_capture_tic = time.perf_counter()
 try:
 run_cmd = subprocess.run( ["ffmpeg", '-y', '-hide_banner', '-f', 'avfoundation', '-i', camera_id,
 '-frames:v', '1', '-f', 'image2', image_file_path], universal_newlines=True,
 stdout=subprocess.PIPE, stderr=subprocess.PIPE) # Note, ffmpeg writes to stderr, not stdout!
 except Exception as e:
 print("Error: Unable to capture image for", image_file_path)
 return "NO IMAGE!"

 image_capture_toc = time.perf_counter()
 print(f"{image_counter}: Captured {camera_name} image in: {image_capture_toc - image_capture_tic:0.0f} seconds")
 return camera_name



The main() routine shown below takes a list of multiple cameras, and iterating over each camera in the list, main() makes creates an asyncio task for each camera using asyncio.create_task(). Each task is added to a list of tasks.


Once all image capture tasks have been started, I await their completion using await asyncio.gather(tasks).


async def main():
 tic = time.perf_counter()
 camera_list = [('0', 'FHD Camera #1'), ('1', 'FHD Camera #2'), ('2', 'FHD Camera #3'), ]
 image_counter = 1
 tasks = []
 for camera_pair in camera_list:
 camera_id, camera_name = camera_pair
 image_file_name = 'img' + str(image_counter) + "-cam" + str(camera_id) + "-" + camera_name + '.jpg'
 image_file_path = os.path.join("/tmp/test1/img", image_file_name)

 # schedule all image captures calls *concurrently*:
 tasks.append(asyncio.create_task(take_image(camera_id, camera_name, image_file_path, image_counter),
 name=image_file_name))
 image_counter = image_counter + 1

 await asyncio.gather(tasks) # <-- This line throws a TypeError!
 toc = time.perf_counter()
 print(f"Captured list of {image_counter - 1} cameras in: {toc - tic:0.0f} seconds")

asyncio.run(main())



Unfortunately, when I attempt to run this program, I am getting this error :


TypeError : unhashable type : 'list'


and the following Traceback :


Traceback (most recent call last):
 File "scratch_10.py", line 41, in <module>
 asyncio.run(main())
 File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/asyncio/runners.py", line 43, in run
 return loop.run_until_complete(main)
 File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/asyncio/base_events.py", line 608, in run_until_complete
 return future.result()
 File "scratch_10.py", line 36, in main
 await asyncio.gather(tasks)
 File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/asyncio/tasks.py", line 805, in gather
 if arg not in arg_to_fut:
TypeError: unhashable type: 'list'
</module>


I have been trying to puzzle through the 3.8 documentation on asyncio, but I don't understand what is wrong.


How can I have each take_image request run asynchronously, and then resume processing in my calling routine once each task is complete ?