
Recherche avancée
Autres articles (66)
-
Publier sur MédiaSpip
13 juin 2013Puis-je poster des contenus à partir d’une tablette Ipad ?
Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir -
Les vidéos
21 avril 2011, parComme les documents de type "audio", Mediaspip affiche dans la mesure du possible les vidéos grâce à la balise html5 .
Un des inconvénients de cette balise est qu’elle n’est pas reconnue correctement par certains navigateurs (Internet Explorer pour ne pas le nommer) et que chaque navigateur ne gère en natif que certains formats de vidéos.
Son avantage principal quant à lui est de bénéficier de la prise en charge native de vidéos dans les navigateur et donc de se passer de l’utilisation de Flash et (...) -
Soumettre améliorations et plugins supplémentaires
10 avril 2011Si vous avez développé une nouvelle extension permettant d’ajouter une ou plusieurs fonctionnalités utiles à MediaSPIP, faites le nous savoir et son intégration dans la distribution officielle sera envisagée.
Vous pouvez utiliser la liste de discussion de développement afin de le faire savoir ou demander de l’aide quant à la réalisation de ce plugin. MediaSPIP étant basé sur SPIP, il est également possible d’utiliser le liste de discussion SPIP-zone de SPIP pour (...)
Sur d’autres sites (9393)
-
avcodec/mpegvideo_enc : Don't find encoder by ID
28 janvier 2022, par Andreas Rheinhardtavcodec/mpegvideo_enc : Don't find encoder by ID
mpegvideo-based encoders supporting bframes implement this
by opening encoders of their own to test how long the chains
of bframes are supposed to be. The needed AVCodec was obtained
via avcodec_find_encoder(). This is complicated, as the current
encoder can be directly obtained. And it also is not guaranteed
that one actually gets the current encoder or not another encoder
for the same codec ID (the latter does not seem to be the case now).Signed-off-by : Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
-
FFMPEG command for video and audio
19 mai 2012, par StackOverflowNewbieI'm not building the next YouTube or iTunes, but I do need to give my users the ability to upload their videos and audios — then present it on the web at the highest possible quality with the lowest possible file size.
Questions :
-
FOR INPUT : What video and audio formats should I support ? I'm guessing I should try to support the most common formats, but I'm not entirely sure what they are. Also, I'm not sure if I should support the most common formats. Maybe there is a reason not to support a certain format.
-
FOR OUTPUT : What video and audio output formats should I generate ? I'd like to use HTML5's and tags, but know I should consider supporting non-HTML5 browsers. Should I do OGG, MP4 and FLV for videos ? What about audios ?
-
Given an unknown video and audio file uploaded by the user, what command should I use to generate the desired output formats. I'd like one command to convert to particular outputs — and hopefully not have to do anything different to the commands depending on the input (it'll be a pain for me to know what the MIME type is of the file, etc. and can't really do an "if input is a WMV, then run this command" logic).
Suggestion FFMPEG experts ?
-
-
asyncio.create_subprocess_shell error : Future exception was never retrieved - BrokenPipeError
10 juin 2021, par AbdelmalekWhenever I use asyncio.create_subprocess_shell() with sp.communicate() I get this error at the end of my program.


If I run multiple suprocesses using asyncio, the error would be print at the end for each one of them.


Aulthough it doesn't affect my program, I want to find the source and fix the issue. Thanks for the help !


Traceback :


Future exception was never retrieved
future: <future finished="finished" exception="BrokenPipeError(32," pipe="pipe" has="has" been="been">
Traceback (most recent call last):
 File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\asyncio\subprocess.py", line 153, in _feed_stdin
 await self.stdin.drain()
 File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\asyncio\streams.py", line 387, in drain
 await self._protocol._drain_helper()
 File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\asyncio\streams.py", line 197, in _drain_helper
 await waiter
 File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\asyncio\proactor_events.py", line 379, in _loop_writing
 f.result()
 File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\asyncio\windows_events.py", line 812, in _poll
 value = callback(transferred, key, ov)
 File "C:\Users\user\AppData\Local\Programs\Python\Python39\lib\asyncio\windows_events.py", line 538, in finish_send
 return ov.getresult()
BrokenPipeError: [WinError 109] The pipe has been ended
</future>


Code :


async def get(cs, url):
 async with cs.get(url) as r:
 b = b''
 while True:
 chunk = await r.content.read(4000000)
 b += chunk
 if not chunk:
 break
 
 if int(r.headers['content-length']) < 8000000:
 result = BytesIO(b)
 return [result, 'full']
 else:
 command = f"ffmpeg -y -i - -c:v copy -fs 8000000 -f matroska -"
 sp = await asyncio.create_subprocess_shell(command, stdin=asyncio.subprocess.PIPE,
 stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE)
 stdout, stderr = await sp.communicate(b)
 sp.wait()

 print(stderr.decode())
 print(len(stdout))
 output = str(stderr)
 index_d = output.find('Duration: ')
 index_t = output.rfind('time=')
 duration = await get_sec(output[index_d + 10:].split(",")[0])
 time_ = await get_sec(output[index_t + 5:].split(" ")[0])
 percentage = f"{round((time_ / duration) * 100)}%"

 result = BytesIO(stdout)
 return [result, 'preview', percentage]

async def main(urls):
 async with aiohttp.ClientSession() as cs:
 
 tasks = []
 for url in urls:
 task = asyncio.create_task(get(cs, url))
 tasks.append(task)
 
 results = []
 for task in tasks:
 result = await task
 results.append(result)
 
 return results

loop = asyncio.get_event_loop()
results = loop.run_until_complete(main(urls))