像浏览器一样使用CURL下载ffmpeg



我想在ffmpeg参数中输入HTTP文件,我已经尝试了这个代码

<?php
    $fname=time().'_myfile.mp3';
    $cmd = "/usr/local/bin/ffmpeg -i 'http://tinyurl.com/url' -vn -b 64k -f mp3 -acodec libmp3lame - $fname"; 
    header('Content-type: audio/mpeg');
    header("Content-Type: application/octet-stream");
    header("Content-Disposition: attachment; filename="$fname"");
    passthru($cmd);
>?

我试图传递tinyurl URL,但ffmpeg无法创建文件。如果我将其他一些直接URL传递给parameter,则此代码可以正常工作。

我想创建一个PHP文件,并使用CURL与适当的头和传递PHP文件在输入参数会工作吗?简单地说,如果输入不是直接链接,ffmpeg就会失败。我该怎么办?

有谁能帮我一下吗?

基于http://getsatisfaction.com/soup/topics/reverse_lookup_for_tinyurls的评论你可以使用下面的curl函数来获得真正的URL,从中你应该能够按计划进行。

function resolve($url)
{
    $options = array(
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HEADER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_ENCODING => "",
        CURLOPT_USERAGENT => "spider",
        CURLOPT_AUTOREFERER => true,
        CURLOPT_CONNECTTIMEOUT => 120,
        CURLOPT_TIMEOUT => 120,
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_NOBODY => 1
    );
    $ch = curl_init($url);
    curl_setopt_array($ch, $options);
    $content = curl_exec($ch);
    $err = curl_errno($ch);
    $errmsg = curl_error($ch);
    $header = curl_getinfo($ch);
    curl_close($ch);
    return $header['url'];
}

最新更新