[Product-Developers] Re: Capture still image from video/automatically assign P4A file image

Jon Stahl jonstahl at gmail.com
Fri Oct 2 19:43:58 UTC 2009


And, for the record, Nate Aune (natea at jazkarta.com), is the founder of
the p4a project. :-)

:jon

On Fri, Sep 25, 2009 at 12:13 AM, Tom Gross <itconsense at gmail.com> wrote:
> p4a moved to the collective: http://dev.plone.org/old/collective/browser/p4a
>
> -Tom
>
> Brayton Osgood wrote:
>> Espen,
>>
>> You do understand me correctly and I have this mostly working as you
>> describe. It works for .mov files, though I haven't been successful with
>> a flash video yet - I still get the solid black background with play
>> arrow. I'm going to keep working on that.
>>
>> I'm happy to share with p4a, though I haven't received anything but a
>> 503 error at plone4artists.org for the last few weeks. Who should I get
>> in touch with to share it?
>>
>> Thanks,
>> Brayton
>>
>> On Sep 24, 2009, at 12:52 AM, Espen Moe-Nilssen wrote:
>>
>>> If I understand this right and you got this to work:
>>>
>>> 1) Add a "p4video-file" to plone
>>> 2) The first frame of the image shows as the video/image.
>>>
>>> I am pretty sure the people behind p4artists would like that code....
>>>
>>>
>>> Espen
>>>
>>>
>>>
>>> Den 23. sep. 2009 kl. 18.19 skrev Brayton Osgood:
>>>
>>>> Between this and IRC I've got the image capture working. Still have
>>>> to write the captured image back into Plone, but I think I have that
>>>> under control. Thanks for all the help,
>>>>
>>>> Brayton
>>>>
>>>> Here is the code I used (for future Googlers):
>>>>
>>>>   context = aq_inner(file)
>>>>   movie_data = context.get_data()
>>>>
>>>>   movie_id, movie_name = tempfile.mkstemp('.mov',text=False)
>>>>   image_id, image_name = tempfile.mkstemp('jpg', text=False)
>>>>   output_id, output_name = tempfile.mkstemp()
>>>>   wfile = open(movie_name, 'wb')
>>>>   wfile.write(movie_data)
>>>>   wfile.close()
>>>>
>>>>   args = "ffmpeg -i %s -ss 1 -an -vframes 1 -f image2 %s" %
>>>> (movie_name, image_name)
>>>>   p = sub.Popen(args, shell=True, stdin=sub.PIPE, stdout=output_name,
>>>> stderr=sub.STDOUT)
>>>>
>>>>
>>>> On Sep 23, 2009, at 1:38 AM, Jean-Michel FRANCOIS wrote:
>>>>
>>>>> Tom Gross a écrit :
>>>>>> Hi Brayton,
>>>>>>
>>>>>>   p4a-video uses the File-content-type, which again uses OFS.File as
>>>>>> content-class. If you want to access the raw-data use:
>>>>>>
>>>>>> atfileobject.getFile().data
>>>>>>
>>>>>> or
>>>>>>
>>>>>> str(atfileobject.getFile())
>>>>>>
>>>>>> If you need a file-like object, you have to do:
>>>>>>
>>>>>> stream = StringIO(str(atfileobject.getFile()))
>>>>>>
>>>>>> HTH
>>>>>> -Tom
>>>>>>
>>>>>>
>>>>>> Brayton Osgood wrote:
>>>>>>
>>>>>>> I'm trying to extend P4A Video to automatically generate the file images
>>>>>>> that can be added to each video via the edit panel of any IVideoEnhanced
>>>>>>> content. Ideally, the result will be an adapter (I think) that responds
>>>>>>> to the IVideoEnhanced interface.
>>>>>>>
>>>>>>> Right now I'm running into trouble capturing an image from a video file
>>>>>>> once it's stored in Plone. I've tried calling ffmpeg as a subprocess,
>>>>>>> but I get an I/O error (see below):
>>>>>>>
>>>>>>>
>>>>>>>>>> image = subprocess.Popen('ffmpeg -i moviefile -ss 1 -an -vframes 1
>>>>>>>>>>
>>>>>>> -f image2 thumb%2d.jpg', shell=True, stdin=subprocess.PIPE,
>>>>>>> stdout=subprocess.PIPE, stderr=subprocess.STDOUT, close_fds=True)
>>>>>>>
>>>>>>>>>> print image.stdout.read()
>>>>>>>>>>
>>>>>>> FFmpeg version SVN-rUNKNOWN, Copyright (c) 2000-2007 Fabrice Bellard, et
>>>>>>> al.
>>>>>>>   configuration: --enable-gpl --enable-pp --enable-swscaler
>>>>>>> --enable-pthreads --enable-libvorbis --enable-libtheora --enable-libogg
>>>>>>> --     enable-libgsm --enable-dc1394 --disable-debug --enable-shared
>>>>>>> --prefix=/usr
>>>>>>>   libavutil version: 1d.49.3.0
>>>>>>>   libavcodec version: 1d.51.38.0
>>>>>>>   libavformat version: 1d.51.10.0
>>>>>>>   built on Mar 16 2009 21:19:49, gcc: 4.2.4 (Ubuntu 4.2.4-1ubuntu3)
>>>>>>> moviefile: I/O error occured
>>>>>>> Usually that means that input file is truncated and/or corrupted.
>>>>>>>
>>>>>>> I've tried doing this where 'moviefile' is an <ATFile at
>>>>>>> /Plone/Members/brayt/jumping2.mov> object, a <p4a.video _ATCTFileVideo>
>>>>>>> object (applying the IVideo interface to the ATFile), and even the
>>>>>>> binary data (passed by moviefile.getData()). Each case gives me the same
>>>>>>> error.
>>>>>>>
>>>>>>> I suspect this is because ffmpeg expects to receive certain file types,
>>>>>>> and Plone files are somehow wrapped so they aren't recognized. I guess
>>>>>>> my question may boil down to how do I access (and do something useful
>>>>>>> with) the data in a file that's not normally read by Plone? I suspect
>>>>>>> that the indexing of PDFs behaves similarly to what I'm hoping to do,
>>>>>>> but I haven't quite figured out how that works.
>>>>>>>
>>>>>>> Any help would be greatly appreciated!
>>>>>>>
>>>>>>> Thanks much,
>>>>>>>
>>>>>>> Brayton
>>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> Product-Developers mailing list
>>>>>> Product-Developers at lists.plone.org
>>>>>> http://lists.plone.org/mailman/listinfo/product-developers
>>>>>>
>>>>> To call it with subprocess :
>>>>> - use mkstemp python module to create a temp file
>>>>> - write the raw data inside it
>>>>> - do the subprocess on that new tempfile
>>>>> - don't forget to delete the temp file
>>>>> - write the image inside your image field.
>>>>>
>>>>> --
>>>>> Cordialement,
>>>>> Jean-Michel FRANCOIS
>>>>> Makina-Corpus
>>>> _______________________________________________
>>>> Product-Developers mailing list
>>>> Product-Developers at lists.plone.org
>>>> <mailto:Product-Developers at lists.plone.org>
>>>> http://lists.plone.org/mailman/listinfo/product-developers
>>>
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Product-Developers mailing list
>> Product-Developers at lists.plone.org
>> http://lists.plone.org/mailman/listinfo/product-developers
>
>
> _______________________________________________
> Product-Developers mailing list
> Product-Developers at lists.plone.org
> http://lists.plone.org/mailman/listinfo/product-developers
>




More information about the Product-Developers mailing list