Photofilmstrip version 2.1 and some problems I found building it at Arch Linux

Help
2016-06-24
2016-11-10
  • Carlos H. M. Moreira

    Hello, I'm trying to maintain a package in the AUR: https://aur.archlinux.org/packages/photofilmstrip/
    I've successfully build and installed this package with some dependencies:
    wxpython 3.0.2.0 and python2-imaging 3.2.0 for the UI and mencoder 37857 for video and gstreamer0.10-python 0.10.22 for audio processing.

    There are some problems that are happening and I want to know if you could help me to find out how to solve them, I'm going to list them:

    At the beginning of the execution of the app, I'm getting this message:

    ** Message: pygobject_register_sinkfunc is deprecated (GstObject)
    

    Apparently it doesn't cause any problem.

    The buttons to create or cancel a new project are not being properly sized:

    They only appear when I maximize the screen:

    The list of available video formats to convert is showing duplicates, there are two VCD, DVD and SVCD in the list, and the first ones from this list of duplicates are creating a resulting video with a lot of frame skips, but the last ones don't, I don't know why, I'm going to attach here the error log generated by the program when generating these three formats of output, and a sample of a generated video with these frame skips:

    Generate a FLV video as output is not working, when I try to create a FLV I'm getting this message:

    Exception in thread ResultFeeder:
    Traceback (most recent call last):
      File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
        self.run()
      File "/usr/lib/python2.7/site-packages/photofilmstrip/core/renderer/MEncoderRenderer.py", line 56, in run
        self.renderer.GetSink().write(result)
    IOError: [Errno 32] broken pipe
    

    These are all the errors I get testing the program, I don't know if you have already fixed them in the new commits you released in the git repository, and at the same time I don't know if it could be some dependency missing. Can you help with these problems? If you need additional informations you can ask me, I'm following this forum.

     
    Last edit: Carlos H. M. Moreira 2016-06-24
  • jensgoe

    jensgoe - 2016-06-25

    Hi,
    thanks for doing the packaging for arch linux. great. I recently made some modifications which i hope can release very soon as a stable version. i already provided it in the files section as a pre release:

    https://sourceforge.net/projects/photostoryx/files/photofilmstrip/2.9.95/

    So maybe you can already try the packaging with this release. In this release i completely changed the backend to use gstreamer.
    As dependencies you need wxpython 3.0.2.0 and python2-imaging 3.2.0 for the UI as you mentioned and for the backend python-gst-1.0 and some gstreamer-plugins for rendering more formats. I suggest plugins-bad, plugins-good, and plugins ugly. But these plugins are optional. If no plugins are installed the free OGG Theora format should work.

    If you have any questions you can contact me.

    Jens

     
  • Carlos H. M. Moreira

    Ok, I'm going to try this pre-release, I'll give you feedback if this works without any problems.

     
  • Carlos H. M. Moreira

    The problem with the buttons getting wrong sizes is still happening:

    When I tried to create a .mkv with an audio mp3 file attached I got this warning message:

    /usr/lib/python2.7/site-packages/photofilmstrip/core/renderer/GStreamerRenderer.py:399: Warning: value "192000" of type 'gint' is invalid or out of range for property 'bitrate' of type 'gint'
      audioEnc.set_property("bitrate", 192000)
    

    And at last, I'm unable to get the program to recognize the gstreamer plugins installed, enabling me to use just the OGG and MKV output formats. I've already tested both current gstreamer plugins and legacy plugins, here is a list of what I tested: https://wiki.archlinux.org/index.php/GStreamer
    In the version 2.1 I don't have this problem.

     
  • Carlos H. M. Moreira

    I discovered why the program is not recognizing the gstreamer plugins, actually the program is recognizing them, but only in the cli mode, when I try to convert to the VCD format for example, in the GUI I'm getting these error messages:

    But when I execute the cli program, with the command:

    photofilmstrip-cli -p test.pfs -o test -f 1
    

    I get the VCD output without errors, so I think the problem is lying in the GUI version of the program, can you take a look on how the GUI version does different from the cli version in terms of using the gstreamer plugins, maybe they are trying to access different locations trying to reach these plugins.

    I'm just waiting for this fix to release a new update for the AUR package.
    Thank you for answer me.

     
  • jensgoe

    jensgoe - 2016-11-09

    Hi,
    sorry for the delay, i don't know why but did not received any sourceforge notifcation mails Just found your questions by accident.
    I noticed that the cli does not check the GStreamer dependencies separately. It just tries to render thre project which seems to work for you. Maybe you can try in a python console the following:

    import gi
    gi.require_version('Gst', '1.0')
    
    from gi.repository import Gst
    Gst.init(None)
    
    # check availability
    print Gst.ElementFactory.find("mpeg2enc")
    print Gst.ElementFactory.find("twolamemp2enc")
    print Gst.ElementFactory.find("mpegtsmux")
    
    # use gstreamer
    print Gst.ElementFactory.make("mpeg2enc")
    print Gst.ElementFactory.make("twolamemp2enc")
    print Gst.ElementFactory.make("mpegtsmux")
    

    i guess the ElementFactory.find calls returns None, but the Gst.ElementFactory.make calls may return a valid object.

    Jens

     
  • Carlos H. M. Moreira

    I tried execute these commands but I'm getting syntax errors:

      File "teste.py", line 8
        print Gst.ElementFactory.find("mpeg2enc")
                ^
    SyntaxError: invalid syntax
    
     
  • jensgoe

    jensgoe - 2016-11-10

    Thats a strange position for a syntax error. I copied and pasted the snippet into a new file and it worked. Maybe your editor put a special char into your python file?

     
  • Carlos H. M. Moreira

    I'm building your package using gst-python2, python2.7 and python2-pillow, I'm using this old versions because when I try to build using python3.5 I get a lot of errors, are you using python2 to write the code?

    Now I tried execute these commands using python2.7, now It's working:

    $ python2.7 teste.py 
    <Gst.ElementFactory object at 0x7f05c03b6fa0 (GstElementFactory at 0x557814821480)>
    None
    <Gst.ElementFactory object at 0x7f05c03b6fa0 (GstElementFactory at 0x557814824a40)>
    <__gi__.GstMpeg2enc object at 0x7f05c03b6fa0 (GstMpeg2enc at 0x55781490f040)>
    None
    <__gi__.MpegTsMux object at 0x7f05c03b6fa0 (MpegTsMux at 0x557814916040)>
    

    and separately:

    $ python2.7
    Python 2.7.12 (default, Jun 28 2016, 08:31:05) 
    [GCC 6.1.1 20160602] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import gi
    >>> gi.require_version('Gst', '1.0')
    >>> from gi.repository import Gst
    >>> Gst.init(None)
    []
    >>> print Gst.ElementFactory.find("mpeg2enc")
    <Gst.ElementFactory object at 0x7fafe12570f0 (GstElementFactory at 0x55e6a4a22480)>
    >>> print Gst.ElementFactory.find("twolamemp2enc")
    None
    >>> print Gst.ElementFactory.find("mpegtsmux")
    <Gst.ElementFactory object at 0x7fafe12570f0 (GstElementFactory at 0x55e6a4a26240)>
    >>> print Gst.ElementFactory.make("mpeg2enc")
    <__gi__.GstMpeg2enc object at 0x7fafe12570f0 (GstMpeg2enc at 0x55e6a4aea040)>
    >>> print Gst.ElementFactory.make("twolamemp2enc")
    None
    >>> print Gst.ElementFactory.make("mpegtsmux")
    <__gi__.MpegTsMux object at 0x7fafe12570f0 (MpegTsMux at 0x55e6a4af2040)>
    >>> quit()
    
     
    Last edit: Carlos H. M. Moreira 2016-11-10
  • Carlos H. M. Moreira

    Today's update continues with the problem:

    I'm comparing the packages you use as dependencies on the .deb file, this is the build script:

    Package: photofilmstrip
    Version: 3.0.0-1
    Architecture: all
    Maintainer: Jens Göpfert <mail@jensgoepfert.de>
    Installed-Size: 1090
    Depends: python-wxgtk3.0, python-pil, python-gst-1.0
    Section: video
    Priority: optional
    Homepage: http://www.photofilmstrip.org
    Description: Slideshow creator with Ken Burns effect
     This creates movies out of your pictures in just three steps.
     First select your photos, customize the motion path and render the
     video. There are several output possibilities for VCD, SVCD, DVD up to
     FULL-HD.
     .
     The effect of the slideshow is known as "Ken Burns". Comments of the
     pictures are generated into a subtitle file. Furthermore an audio file
     can be specified to setup the background musice for the slide show.
    

    This is my build script for Arch Linux Repository:

    # Maintainer: Carlos Henrique Merces Moreira "chmercesmoreira" <ch.mercesmoreira@gmail.com>
    pkgname=photofilmstrip
    pkgver=3.0.0
    pkgrel=1
    pkgdesc="Create video clips from photos"
    arch=('i686' 'x86_64')
    url="http://www.photofilmstrip.org/1-0-Home.html"
    license=('GPL2')
    depends=('wxpython' 'python2-pillow' 'gst-python2')
    optdepends=('gst-plugins-bad: additional rendering formats'
            'gst-plugins-good: additional rendering formats'
            'gst-plugins-ugly: additional rendering formats')
    source=("https://sourceforge.net/projects/photostoryx/files/$pkgname/$pkgver/$pkgname-$pkgver.tar.gz")
    md5sums=('38b167809f15616e7928dd067e36f20e')
    
    build() {
        cd "$srcdir/$pkgname-$pkgver"
        python2.7 setup.py build
    }
    
    package () {
        cd "$srcdir/$pkgname-$pkgver"
        python2.7 setup.py install --root="$pkgdir" --optimize=1
    
        chmod 644 "$pkgdir/usr/share/applications/photofilmstrip.desktop"
    
        find "$pkgdir/usr/share/doc/photofilmstrip/" -type f -exec chmod 644 {} \;
    
        for size in 32x32 48x48 64x64 192x192
        do
            chmod 644 "$pkgdir/usr/share/icons/hicolor/$size/apps/photofilmstrip.png"
        done
    }
    

    Repare that the dependencies are not equal because you are using the Debian repository as the source, but I searched for equivalents packages on the Arch Linux repository, the equivalences are:
    Debian | Arch Linux
    ---------- | ----------
    python-wxgtk3.0 | wxpython
    python-pil | python2-pillow
    python-gst-1.0 | gst-python2

    And as you can see from my previously message, all the GStreamer dependencies were found installed on the system, so I think the problem resides on how your code check for these dependecies.

     
  • jensgoe

    jensgoe - 2017-02-11

    Hi,
    ok i tried arch-linux in a virtual maching to reproduce your problem. Somehow some gstreamer elements are not available in arch-linux even if the same plugin packages are installed. The elements that cannot be found are twolamemp2enc and voaacenc. The first one is used for VCD, SVCD, DVD. The latter for MP4 videos.
    The good thing is there are alternative elements in gstreamer. I pushed a new branch named "arch-linux" in my git repo. Maybe you can try to build an arch-linux package from this branch. But there is an additional dependency to "gst-libav" which you should extend in the optdepends section. I guess i have to add this to my debian build script too.
    If this branch works for you i am going to make some more tests with this changes too. I think i merge these changes into my master branch too.

     
  • Carlos H. M. Moreira

    I tested here the Arch Linux branch and now I'm getting the VCD, SVCD, DVD and MP4 formats, besides OGV and MKV that were already working before. Thank you.

    Are you planning to release a new source file (.tar.gz) with these changes? If not, I can replace the Arch Linux build script to download the sources from the Arch Linux git branch specifically.

     
  • jensgoe

    jensgoe - 2017-02-14

    I merged the changes into master so you can stay at the master branch. Alternatively you can use the tar.gz file from version 3.0.1.

     

Log in to post a comment.

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:





No, thanks