Foros del Web » Programando para Internet » Python »

Ayuda: Generar thumbnails de archivos de video

Estas en el tema de Ayuda: Generar thumbnails de archivos de video en el foro de Python en Foros del Web. Hola, me gustaria saber una manera de generar y salvar thumbnails de archivos de video sin reproducir los videos, algo parecido a lo que hace ...
  #1 (permalink)  
Antiguo 01/08/2010, 19:11
 
Fecha de Ingreso: julio-2010
Mensajes: 6
Antigüedad: 9 años, 4 meses
Puntos: 0
Ayuda: Generar thumbnails de archivos de video

Hola, me gustaria saber una manera de generar y salvar thumbnails de archivos de video sin reproducir los videos, algo parecido a lo que hace el explorador de windows al abrir una carpeta con .avis pero a mi me gustaria hacerlo indicandole el archivo de video y la posicion en tiempo del mismo (el frame o el tanto por cierto tambien valdrian).
La idea es esa, salvar imagenes .png, por ejemplo, de thumbs de los videos que yo quiera a partir de su ruta y la posicion relativa dentro del video.

He estado buscando y he encontrado referencias a PIL y a PyFFmpeg:
http://code.google.com/p/pyffmpeg/

Me gustaria que alguien un poco mas rodado en python que yo (este es el primer proyecto que desarrollo en python) me echara un cable con esto o, por lo menos, me dijera si voy por buen camino.

Tal y como lo veo yo tendria que utilizar el PyFFmpeg (ya solo bajarmelo y saber donde debo copiarlo para poder importarlo desde mi .py seria una hazaña) y luego abrir la ruta de mi archivo de video y luego me pierdo siguiendo este codigo:

Código:
import pyffmpeg 
 
## create the reader object 
mp=FFMpegReader() 
 
## open an audio-video file 
mp.open("your file.mpg") 
tracks=mp.get_tracks() 
 
## define a function to be called back each time a frame is read... 
def obs(f): 
  display(f[2]) # you have to write your display function 
 
tracks[0].set_observer(obs) 
 
mp.run()
Todo parece mucho mas sencillo si pudiera utilizar dentro de mi aplicacion .py algo tal que asi:
Código:
ffmpeg -y -ss 30 -i fichero.avi -f mjpeg -vframes 1 -s 120x90 -an fichero.jpg
http://www.diegosuarezgarcia.dreamhosters.com/blog/2010/04/extraer-imagenes-thumbnails-de-un-video-largo-con-ffmpeg/

Pero dudo mucho que pueda hacerse de esa manera.

Bueno, muchas graacias por adelantado y a ver si consigo hacerlo con vuestra ayuda.

Un saludo.
  #2 (permalink)  
Antiguo 02/08/2010, 12:45
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 14 años, 8 meses
Puntos: 1360
Respuesta: Ayuda: Generar thumbnails de archivos de video

Puedes usar pymedia* + PIL para generar el thumbnail o por lo menos esto es lo que sugieren aqui.

http://stackoverflow.com/questions/1...es-with-python

*Edito: Es pymedia

Última edición por razpeitia; 07/08/2010 a las 18:03
  #3 (permalink)  
Antiguo 07/08/2010, 14:55
 
Fecha de Ingreso: julio-2010
Mensajes: 6
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Ayuda: Generar thumbnails de archivos de video

Cita:
Iniciado por razpeitia Ver Mensaje
Puede usar pymedio + PIL para generar el thumbnail o por lo menos esto es lo que sugieren aqui.

[URL="http://stackoverflow.com/questions/1772599/creating-thumbnails-from-video-files-with-python"]http://stackoverflow.com/questions/1772599/creating-thumbnails-from-video-files-with-python[/URL]
Una duda, ¿para importar desde mi .py principal esos modulos (pymedio y Pil) exactamente que debo hacer?

La idea de este proyecto es que no haya que instalar nada en el PC, es un plugin para otro programa mas grande que lo ejecutara y me gustaria poder utilizar esos modulos simplemente copiandolos en alguna carpeta y haciendo un import ¿seria posible?
A parte de eso, tengo que tener en cuenta que, en principio, mi plugin sera multiplataforma.

Muchas gracias.
  #4 (permalink)  
Antiguo 07/08/2010, 18:09
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 14 años, 8 meses
Puntos: 1360
Respuesta: Ayuda: Generar thumbnails de archivos de video

PyMedia es un modulo para python hecho en C / C++ y tiene dependencia de ciertos codecs.
Así que no creo que sea una buena idea copiar y pegar archivos.

Plugin de otro programa?, pudiste haber empezado por ahí, de que programa se trata?
Es un plugin para algún reproductor o para algún navegador?
  #5 (permalink)  
Antiguo 08/08/2010, 18:06
 
Fecha de Ingreso: julio-2010
Mensajes: 6
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Ayuda: Generar thumbnails de archivos de video

Cita:
Iniciado por razpeitia Ver Mensaje
PyMedia es un modulo para python hecho en C / C++ y tiene dependencia de ciertos codecs.
Así que no creo que sea una buena idea copiar y pegar archivos.

Plugin de otro programa?, pudiste haber empezado por ahí, de que programa se trata?
Es un plugin para algún reproductor o para algún navegador?
Pues necesitaria algo que pudiera utilizar copiando archivos en la propia carpeta del plugin y llamandolos desde ahi, creo yo.
El programa para el cual es un plugin es el XBMC ( http://xbmc.org/ ).
Muchas gracias por la ayuda, a ver si doy conseguido eso, que seria un gran paso en mi proyecto.
  #6 (permalink)  
Antiguo 16/09/2010, 08:13
 
Fecha de Ingreso: julio-2010
Mensajes: 6
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Ayuda: Generar thumbnails de archivos de video

Hola de nuevo. He solventado de momento el problema de generar los thumbnails.
Lo hice de la manera mas "facil" y por otra parte, la unica que realmente me ha funcionado hasta ahora, como comentaba en el primer mensaje utilice directamente el ffmpeg y su linea de comandos desde el python.
Estoy trabajando bajo Widows7 y ahora, una vez conseguido el thumbnail, se me presenta otro problema.
Mi codigo utiliza la funcion os.system para lanzar el ffmpeg.exe con los parametros y lo hace bien, el problema es que me minimiza el programa original con lo cual no me sirve para nada.
Necesito poder ejecutar desde el python el ffmpeg.exe pero sin que aparezca la cmd, sin que se me minimice mi programa principal y no me pierda el foco, podria bien utilizar una especie de subproceso o la ejecucion en segundo plano o bien (esta idea ya me convence menos) volver a enfocar mi aplicacion inicial una vez acabe el cmd.
Mi prioridad es poder ejecutar en 2º plano y que ni si quiera se vea la consola de comandos pero no he sido capaz, os resumo mis pruebas/errores:

Código:
sacarThumb = """"C:\\Program Files (x86)\\XBMC\\scripts\\Base De Datos\\ffmpeg.exe" -y -ss 423 -i "\\GERAR\\HD_RED_6\\Peliculas\\La Princesa Mononoke\\Movie.mkv" -f mjpeg -vframes 1 -s 720x400 -an "C:/Program Files (x86)/XBMC/scripts/Base De Datos/thumbnail.jpg""""
Si utilizo:

Código:
os.system(sacarThumb)
Ejecuta perfectamente el ffmpeg.exe y consigo el thumbnail PERO se me minimiza la aplicacion principal.


Si utilizo:

Código:
subprocess.Popen([sacarThumb], shell=False)
El log de la aplicacion me devuelve esto:

Código:
13:46:41 T:2904 M:2748325888   ERROR: Exception in python script's onAction
13:46:41 T:2904 M:2748325888  NOTICE: Traceback (most recent call last):
13:46:41 T:2904 M:2748325888  NOTICE:   File "C:\Program Files (x86)\XBMC\scripts\Base De Datos\default.py", line 8461, in onAction
13:46:42 T:2904 M:2748469248  NOTICE: if action == ACTION_PREVIOUS_MENU :
13:46:42 T:2904 M:2748469248  NOTICE:   File "C:\Program Files (x86)\XBMC\scripts\Base De Datos\default.py", line 8874, in onClick
13:46:44 T:2904 M:2748485632  NOTICE: self.Jugar()
13:46:44 T:2904 M:2748485632  NOTICE:   File "C:\Program Files (x86)\XBMC\scripts\Base De Datos\default.py", line 9746, in Jugar
13:46:46 T:2904 M:2748473344  NOTICE: self.pruebaFotograma(ronda)
13:46:46 T:2904 M:2748473344  NOTICE:   File "C:\Program Files (x86)\XBMC\scripts\Base De Datos\default.py", line 6530, in pruebaFotograma
13:46:47 T:2904 M:2748497920  NOTICE: subprocess.Popen([sacarThumb], shell=False)
13:46:47 T:2904 M:2748497920  NOTICE:   File "special:\\xbmc\system\python\python24.zlib\subprocess.py", line 558, in __init__
13:46:47 T:2904 M:2748493824  NOTICE:   File "special:\\xbmc\system\python\python24.zlib\subprocess.py", line 722, in _execute_child
13:46:47 T:2904 M:2748493824  NOTICE: WindowsError
Si utilizo:
Código:
os.popen(sacarThumb)
El log me dice:
Código:
14:47:04 T:1980 M:2464804864   ERROR: CThread::staticThread : Access violation at 0x77498c19: Writing location 0x00000014

Tiene que existir una manera de ejecutar en segundo plano o sin la cmd, pero no lo doy conseguido.
Acepto sugerencias de cualquier tipo.
Muchas gracias.
  #7 (permalink)  
Antiguo 16/09/2010, 10:27
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 14 años, 8 meses
Puntos: 1360
Respuesta: Ayuda: Generar thumbnails de archivos de video

Utiliza
Código Python:
Ver original
  1. subprocess.Popen([sacarThumb], shell=True)

En caso de que no funcione tal vez tendras que añadir python al path y hacer un:
Código Python:
Ver original
  1. subprocess.Popen(['python sacarThumb.py'], shell=True)
  #8 (permalink)  
Antiguo 16/09/2010, 10:35
 
Fecha de Ingreso: julio-2010
Mensajes: 6
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Ayuda: Generar thumbnails de archivos de video

Cita:
Iniciado por razpeitia Ver Mensaje
Utiliza
Código Python:
Ver original
  1. subprocess.Popen([sacarThumb], shell=True)

En caso de que no funcione tal vez tendras que añadir python al path y hacer un:
Código Python:
Ver original
  1. subprocess.Popen(['python sacarThumb.py'], shell=True)
Gracias pero de ambas maneras obtengo el mismo resultado, no hay error pero no hace nada, no ejecuta el ffmpeg.exe o, por lo menos, no extrae thumbnail ninguno.
Ademas que lo hace rapidisimo, extraer un thumbnail con el seek y tal usando el ffmpeg tarda un segundito al menos, aqui es automatico, ejecuta la linea y no hace nada.
¿Alguna otra idea? Muchas gracias por la ayuda.
  #9 (permalink)  
Antiguo 10/01/2011, 12:51
 
Fecha de Ingreso: abril-2010
Ubicación: Mérida, Venezula
Mensajes: 73
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Ayuda: Generar thumbnails de archivos de video

Puedes usar ffmpeg, pero llamando a la aplicación desde la librería os. Así he transcodificado vídeos y generado vídeos nuevos en la misma carpeta.

Te quedaría algo como:

Código Python:
Ver original
  1. import os.
  2.  
  3. os.system('ffmpeg -y -ss 30 -i fichero.avi -f mjpeg -vframes 1 -s 120x90 -an fichero.jpg')

Etiquetas: thumbnails, video
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 21:25.