Skip to content
This repository was archived by the owner on Mar 28, 2022. It is now read-only.
This repository was archived by the owner on Mar 28, 2022. It is now read-only.

Calling 'echoprint-codegen' from PHP Script #25

Open

Description

@chadhutchins

I've been playing around with the codegen program locally on my machine today and yesterday. I was just experimenting by creating a PHP app that calls codegen. It took the longest time figuring out why PHP would recognize the 'echoprint-codegen' program, but if I ran 'echoprint-codegen' from terminal it would work just.

I finally was able to make the php script recognize it work by giving it an exact path to the program, something like the following:

<?php

echo shell_exec('/usr/local/bin/echoprint-codegen /Users/MyUser/Music/iTunes/iTunes\ Music/AlbumName/SongName.m4a 10 30');

?>

However, I keep getting the following error:

[ {"error":"could not decode", "tag":0, "metadata":{"filename":"/Users/MyUser/Music/iTunes/iTunes Music/AlbumName/SongName.m4a"}} ]

But if I run it from terminal, it works just fine and returns the metadata and generated code as you would expect. Any ideas?

Thanks,
Chad

Activity

  1. alastair commented on Aug 3, 2011

    @alastair
    Contributor

    I cannot reproduce this issue with the information you've given. However, I think the issue might be with spaces in the audio filename. Can you try with the filename quoted - e.g.

    echo shell_exec('/usr/local/bin/echoprint-codegen "/Users/MyUser/Music/iTunes/iTunes\ Music/AlbumName/SongName.m4a" 10 30');
    

    and also with the filename double quoted -

    echo shell_exec('/usr/local/bin/echoprint-codegen "\"/Users/MyUser/Music/iTunes/iTunes\ Music/AlbumName/SongName.m4a\"" 10 30');
    

    Also, see if the script works if you give it a path to an audio file that has no spaces in the name.

    Thanks

  2. chadhutchins commented on Aug 3, 2011

    @chadhutchins
    Author

    Dang, that's unfortunate. Thanks for giving it a look though.

    I tried your suggestions, but nothing worked.

    I'm using an audio file with no spaces in the name or path, and I tried several different types of quote combinations. See below:

    Example 1

    <?php
    
    echo shell_exec('/usr/local/bin/codegen /Users/chadhutchins/Downloads/zacbrown.m4a 10 30');
    
    ?>
    // response
    [{"error":"could not decode", "tag":0, "metadata":{"filename":"/Users/chadhutchins/Downloads/zacbrown.m4a"}}]

    Example 2

    <?php
    
    echo shell_exec('/usr/local/bin/codegen "/Users/chadhutchins/Downloads/zacbrown.m4a" 10 30');
    
    ?>
    // response
    [{"error":"could not decode", "tag":0, "metadata":{"filename":"/Users/chadhutchins/Downloads/zacbrown.m4a"}}]

    Example 3

    <?php
    
    echo shell_exec('/usr/local/bin/codegen ""/Users/chadhutchins/Downloads/zacbrown.m4a"" 10 30');
    
    ?>
    // response
    [{"error":"could not decode", "tag":0, "metadata":{"filename":"/Users/chadhutchins/Downloads/zacbrown.m4a"}}]

    Example 4

    <?php
    
    echo shell_exec('/usr/local/bin/codegen "\"/Users/chadhutchins/Downloads/zacbrown.m4a"\" 10 30');
    
    ?>
    // response
    [{"error":"could not decode", "tag":0, "metadata":{"filename":"\"/Users/chadhutchins/Downloads/zacbrown.m4a\""}}]

    However, if I run the commands inside any of the shell_exec() functions in Terminal, I get the following as expected:

    [{
        "metadata": {
            "artist": "",
            "release": "",
            "title": "",
            "genre": "",
            "bitrate": 64,
            "sample_rate": 44100,
            "duration": 35,
            "filename": "/Users/chadhutchins/Downloads/zacbrown.m4a",
            "samples_decoded": 283382,
            "given_duration": 30,
            "start_offset": 10,
            "version": 4.11,
            "codegen_time": 0.093334,
            "decode_time": 0.577078
        },
        "code_count": 702,
        "code": "eJy1mU1yJSkMhK-E-BM6DiBx_yPMx1vMxDji4UVHbzJsU1VUSanMpDslWT09wNsLYj4g5_yCel6w8wNKeoLEC4q_wOwFS1_g_QGVej1gxAv2foCs-YIoD8h5vODdo2EPKNJf8O5C2y-w8YJL2-9w6gNqkRf084LhL5j7AbLGCyIekKW9YNQHFPEXqL3gT7pwxeMr_DIpPV7w7sKZD2j3-V_hlx7t-YI4D_hFJ3t5gcYDSi4v0PWCv9dfyS_4RSef_d3rARL-gF-6UMYLtD3glymr6wXvGfx7XXgr4VovCHvBewZbe4Bse8F9wFfIWV-gL_ilg91eMPIL_tqUlbMf8Et_n271W3_3A2TrC854QJbzAjrxgHMe8Bd98J03_kTr3j16KuG7g-8ZzEle8O7RfsInznyDkvoL_qSDzymr90jxHZq84JcunAe8ulBtjjlcssGEyVxlH8laG6cfW3PbtKjZZsx5cqmhRWadvVYrWXf3nURcapKhZS0e2OuoKmnsvK2MyEeazR1ibdWmq_XWey99R2h0Y_-wNqd0L9hF2T5UxwkpvZluzS2KVrEQrSVm87YszfC1zyiWe5vZ-6yLu1uZe44apaOGLdqocx2rqrvyDm2VqNHT7b99YET4uLuPpaO4TAR6VT6fsLu6SC5tCDsfS23rtFzMzbdJn9rzHkGWO_ujCG03TiInCTnKKJlzMCGPLctbej_honvOnqvvqcc4D3HoqTmNXCj4MXNVEngOyWNRyR-rY3bdX1drGStOnKpmZTVlB-Xv2WKM02Zha0k7hy1vuwxXb9Ru92gCyDCH18YTee1R5ojKL1HouO-zWsmU26M3zXMMlYbZQJkl0nOWybOoVhuhZ_TNZjlVrZlX3nfPWhtd3m2tGqPt2Vg9va0hkKrXSZc2l9qREeOebZsv99SlEcE9YlNqO313-hpbTqNSa1qqRHSBrqZlQwTYutQnJ2tPtxmcSJxdcpzZcowkmuvqq3xWWzqdsix69O91vUSakG7E5xJEc9DxyYd-9rgXL_F7F5t_rlunrrmGUdwmVj-rTYuXVQaP_P9qwBz9unqkMw1p11kTLYFT0lg-Z0imWbX008uySCo2GYoybZZeNtOkJ_HGurG8vEo-GT7Yrrs4wzl1LOsyy96OPK2oTB6yHHuI9l6teR6NuUjaDiVY0SIaTBQ9rc_uh9QBjxgMX0xxz-0c8r7Tls9qaDcaeChjWcy6U7F0u99NJlHpIKia6MldjeblrOk3QPmB7pG6B-RdLc3kaiXWpUuN6IBHLc2GQJtOpaKcO2cOTaGfeKV8B82qCICb1JMbzQrxM07mTmg0hw2SwNzl8CxLC4mCkqZrowBDf6yiK2d8XS3wfow7o50N4DThZilyxWsXq4zOYFJOzlchlh9v2merzq7dZk48uDK6xjfxHgxO5lNtx66W8-ZccBbTDUCu3mokWpc5XAWK56N2BuoOuR3tGNzSyLbJG7yErTXpaNl0MC_U4ISVJFf5u9YaEzmXY0q9zy3BpoP8UEKZZgSvH6rOdzCdMldDCOBVOKuJEfbN6iK5CndPnglTzhysjHrUtzDPl3q92CY500hYfO_47-KuniV05k4ZinxWD91pd_YKZK5XxyiMIeuNKVkQDCcJjOKShXlAyxRxki1OGTsqgb2s_GOVX1f_ugqRkHBoy-kAqqe1NwNRZ0Dc1Ls3aUOxhLRy5XUZ1am2ZU7Nkfnb9ju2Vo7WjbrSX8vUUOCwIwh97LbXjqnuSw5CLXRjqjCPijtcJS6MnXAMYOZlCTzGKDJahP2h5ksQHpfV8xnuc9bASEc7FBmJoh5xUPSFHdT43NtcCOhzLewGD4RKSGW9Vscf43Mvk8xHFzxXaBa-0VDoOGfhVju8w7ftVTsTg2XPsNksckfJ72lGosEp580ydjiwFnVIZ5cbEze_sUavRI2JkBXFnMtmgu_sbqTeekFXr4ZjIYs3v8RFfHlD6_M-7ceqtHPN4usqUpk0r8gaOMiqSPg-DWHblF_n5iunHexr3R_xx0CvxWwl5LKsROMTuody4WO06FpUm1XIEIYvoSTMw-heWz8N9cw0HxEYiOahvomxP3h-PfSytX025Fe29oa5lZUz4s20JjrXo2OgK91USHDCe_GiQqGV1EIruBqf9kyq2fNAtVtDyK-O-vXP42EBPCZTBLPT0UkpxoBXnbyL757w01IPqgHlKcdYU3bl8kIXYQQKedbKDHx2vrMytY0xR7zc2GzUNtC8k04ZOPKNIfARo0Vw-pli69aQCiEm0AYi9SrjWkjgfgQF3qr4j9XBJ62vq2LOHFG9idUMdvBVSibdaNghvIS2wry2T4LbTWMXQ0D4Aa_I44Y1HnKn6OjYNyEsvn9iqo2MWa7NOnHr7MHUoYgIY4ZOmJgItORuiD4WA-k3b-BDvKyzDRGk-7xJwZbikdfxId7yFDAGGiPpvII1HBb1FF1JFnUYAxXGlNBlntyuFdFyRu1mDgToXGFAeWmxdP3sQUrEIsiz-HirQk_n-LwBTow53jvgc158nPN1irTf6zrpV00xDvy61c9qr16JhHsWIkKKfNtmVAwCkeA-dxA7iC4FGVLCbikQZ6R8_xthEiQZ0lu9_60ifpz6vq0yv6eQ_goOrnZTL2Sg32gi-YMhoKI2xkSNXdH5wkkBL6n49P3XIN5xut15ctKwzRm5HlxTmR6xtKE3admcJ5FZ6EKp66iQh2KS86Ir-9Yb_AlMzBt9JLsorCQnuhViyeJswR7nME0-MseafB0KeSYJFfiOZsw7MYwl8kAUF-hl6OFWfK7BeexcZBq5unMG5niAyfcrihMlwrUTz903ajF9mbtvcTgubeXTNilgNCo2rO5003Svm2NAcvL11XoKRRzuvDNBq31Ugon6ueoE-v119R92qeNK",
        "tag": 0
    }]

    Thanks again for looking at this. Any ideas?

  3. slawo commented on Aug 25, 2011

    @slawo

    Hi!
    You might want to check if your song is not protected with some sort of DRM.

    S

  4. mattsims commented on Sep 6, 2011

    @mattsims

    Hi Chad,

    Did you ever get to the bottom of this? I'm having the same problem.

    Regards,

    Matt.

  5. chadhutchins commented on Sep 9, 2011

    @chadhutchins
    Author

    I didn't. I'll report back if/when I do though.

    On Tue, Sep 6, 2011 at 5:05 PM, mattsims <
    reply@reply.github.com>wrote:

    Hi Chad,

    Did you ever get to the bottom of this? I'm having the same problem.

    Regards,

    Matt.

    Reply to this email directly or view it on GitHub:

    #25 (comment)

  6. Jurager commented on Mar 23, 2012

    @Jurager

    I had the same issue, I just re-installed ffmpeg and the problem disappeared.

  7. sidis405 commented on Aug 22, 2012

    @sidis405

    hi i'm sorry to re-open an old issue but i'm stuck here

    just like the thread starter im trying to run

    $handle = popen('/Applications/MAMP/htdocs/projectx/codegen/echoprint-codegen "/Applications/MAMP/htdocs/projectx/codegen/2.mp3" 10 30', 'r')
    
    echo "'$handle'; " . gettype($handle) . "\n";
    $read = fread($handle, 2096);
    echo $read;
    pclose($handle);
    

    But no matter what i am perpetually stuck with

    "error":"could not decode", "tag":0, "metadata":{"filename":"/Applications/MAMP/htdocs/projectx/codegen/2.mp3"}}

    Now, my filename has no single quotes so i believe i would need to make no use of the Posix ticket up there.

    I reinstalled ffmpeg as someone above suggested. Nothing.

    From the trace i can see this:

    [0] => sh: line 1: 57341 Trace/BPT trap: 5       /usr/local/bin/ffmpeg -i "/Applications/MAMP/htdocs/projectx/codegen/2.mp3" -ac 1 -ar 11025 -f s16le -t 30 -ss 10 - 2> /dev/null

    I saw somewhere else that it meant that ffmpeg could not be found.
    Recompiled codegen with the absolute ffmpeg path of my installation. Nothing.

    On another note. While ffmpeg was reinstalling i ran the php script that uses codegen.
    And got the same result.

    Meanwhile from the shell runs fine.

    Am i missing something extrmely obvious here?
    ( i really wouldn't mind if that was the case :)

    Best reagrds and thank you in advance

  8. sidis405 commented on Aug 23, 2012

    @sidis405

    To whomever might need help with this, I managed to solve it after i found out that ffmpeg was indeed the problem.
    Got the hint from this :
    http://stackoverflow.com/questions/10107671/ffmpeg-mamp-dyld-library-not-loaded-error/12099991#12099991

    $cmd = 'ffmpeg -i "karma.mp3"';
    
    exec($cmd." 2>&1", $out, $ret);
    if ($ret){
        echo "There was a problem!\n";
        print_r($out);
    }else{
        echo "Everything went better than expected!\n\n";
        print_r($out);
    }
    

    For me it was complaining that it could not find the libfreetype dylib.
    It was because i'm running it on MAMP and the answer is to comment out the DYLD_LIBRARY_PATH
    on /Applications/MAMP/Library/bin/envvars

  9. jon-eckstein commented on Apr 30, 2013

    @jon-eckstein

    I also had this problem but was not using MAMP. It turned out the Apache user, in my case _www, did not have /usr/local/bin in it's PATH. You can test this with an echo shell_exec("env"). You can add the path depending on your OS or I simply created a symlink to ffmpeg from one of it's included paths.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions