
Recherche avancée
Autres articles (94)
-
Qu’est ce qu’un éditorial
21 juin 2013, parEcrivez votre de point de vue dans un article. Celui-ci sera rangé dans une rubrique prévue à cet effet.
Un éditorial est un article de type texte uniquement. Il a pour objectif de ranger les points de vue dans une rubrique dédiée. Un seul éditorial est placé à la une en page d’accueil. Pour consulter les précédents, consultez la rubrique dédiée.
Vous pouvez personnaliser le formulaire de création d’un éditorial.
Formulaire de création d’un éditorial Dans le cas d’un document de type éditorial, les (...) -
Contribute to translation
13 avril 2011You can help us to improve the language used in the software interface to make MediaSPIP more accessible and user-friendly. You can also translate the interface into any language that allows it to spread to new linguistic communities.
To do this, we use the translation interface of SPIP where the all the language modules of MediaSPIP are available. Just subscribe to the mailing list and request further informantion on translation.
MediaSPIP is currently available in French and English (...) -
Des sites réalisés avec MediaSPIP
2 mai 2011, parCette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page.
Sur d’autres sites (7424)
-
ffmpeg with Flutter - Error in my code - Video not created
30 juillet 2020, par csslerI try to create a video from images with flutter and
ffmpeg
. I think the logic of my code is correct, but I always get the return value1
which says that the execute was not successfull.

Do you find the error in my code ?


Future<void> _onCreateVideoFromImages() async {
 Directory tempDir = await getTemporaryDirectory();
 String tempPath = tempDir.path;

 final allPictures = await picturesData.getPicturesFromAlbum(albumID);

 List textFileMap = [];

 for (var i = 0; i < allPictures.length; i++) {
 var file = File(allPictures[i].path);

 final newFile = await file
 .copySync("$tempPath/img${i.toString().padLeft(4, '0')}.jpg");

 print("File has been moved successfully to temporary folder: $newFile");

 textFileMap.add("file '" + newFile.path + "'");
 }

 print("Final list:");
 print(textFileMap);

 print("Create txt file for ffmpeg");
 final File file = File('${tempPath}/images.txt');
 final textFile = await file.writeAsString(textFileMap.join("\n"));
 print("txt file created successfully: $textFile");

 await _flutterFFmpeg.execute(
 "ffmpeg -f concat -safe 0 -i $textFile -c copy $tempPath/output.mp4")
 .then((rc) {
 if (rc == 0) {
 print("Video completed");
 } else {
 print(rc); // Returns 1
 }
 });
 }
</void>


And here the console log


flutter: File has been moved successfully to temporary folder: File: '/var/mobile/Containers/Data/Application/C28A04D5-76DF-450B-8F63-75CD39BC927F/Library/Caches/img0001.jpg'
flutter: Final list::
flutter: [file '/var/mobile/Containers/Data/Application/C28A04D5-76DF-450B-8F63-75CD39BC927F/Library/Caches/img0000.jpg', file '/var/mobile/Containers/Data/Application/C28A04D5-76DF-450B-8F63-75CD39BC927F/Library/Caches/img0001.jpg']
flutter: Create txt file for ffmpeg"
flutter: txt file created successfully: '/var/mobile/Containers/Data/Application/C28A04D5-76DF-450B-8F63-75CD39BC927F/Library/Caches/images.txt'
flutter: Code: 1



I appreciate your help !


-
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 ?


-
Getting List of default argument values if not used in FFMPEG command execution
12 juillet 2020, par Pradeep PrabhuWhen I use FFMPEG to capture a live IPTV stream on my MAC, I generally end up with an interrupted video. When I send these four arguments, the capture is successful.


-reconnect 1 -reconnect_at_eof 1 -reconnect_streamed 1 -reconnect_delay_max 2


I don't want to specify these arguments everytime, So I decided to update the default values in the source code. Unsure if I have done it right - I updated http.c which contains these arguments. I re-compiled FFMPEG successfully.


I want to know if my changes are applied. Is there a way I can list out all the default values of the arguments. I can use this compiled version of FFMPEG for a week, and determine if the fix is applied or not, I was wondering, if there is a quicker and easier way to do it.


If this is successful, I can use this version of FFMPEG for Emby & TellyTV.