我想在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网址,但ffmpeg无法创建文件。 如果我将一些其他直接URL传递给参数,此代码可以正常工作。
我想创建一个PHP文件并使用正确的标头使用CURL并在输入参数中传递该PHP文件将有效吗? 简单来说,如果输入不是直接链接,则ffmpeg会失败。我该怎么办?
有人可以帮我吗?
答案 0 :(得分:0)
基于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'];
}