2016-04-14 16 views
1

id3タグのいくつかのフィールドを取得する際の助けが必要です。ffmpeg php。出力ファイル形式は、例えば128の代わりに別のビットレートのmp3 320 kbpsを変更したいと思います.dbからID3タグを取得するようにします。 https://ffmpeg.org/ffmpeg-all.htmlのドキュメントあたりid3タグのいくつかのフィールドを取得するffmpeg php

<?php 
 
session_start(); 
 

 
include "DB.inc"; 
 

 
$xxid = $_POST['xxid']; 
 
$sxxid = $_POST['sxxid']; 
 

 
if(is_array($_FILES)) { 
 

 
\t if(is_uploaded_file($_FILES['userAudio']['tmp_name'])) { 
 

 
\t \t $sourcePath = $_FILES['userAudio']['tmp_name']; 
 

 
\t \t $temp = explode(".",$_FILES["userAudio"]["name"]); 
 
\t \t $newfilename = $_POST['sxxid'] . '.' .end($temp); 
 

 
\t \t $ext = end($temp); 
 

 
\t \t $common_path = "assets/$xxid"; 
 

 
\t \t if (!is_dir($common_path)) { 
 
\t \t \t mkdir($common_path); 
 
\t \t } 
 

 
\t \t $common_path = "assets/$xxid/audio"; 
 

 
\t \t if (!is_dir($common_path)) { 
 
\t \t \t mkdir($common_path); 
 
\t \t } 
 

 
\t \t $targetPath = $common_path.'/'.$newfilename; 
 

 
\t \t $web_common_path = SITE_LINK."/assets/$xxid/audio/"; 
 
\t \t $web_targetPath = $web_common_path.$newfilename; 
 

 

 
\t \t $filename = array(); 
 

 
\t \t $filename[0] = $common_path.$_POST['sxxid'].'.wav'; 
 

 
\t \t $num_files = count($filename); 
 

 
\t \t for ($n=0; $n<$num_files; $n++) { 
 

 
\t \t \t if (file_exists($filename[$n])) { 
 
\t \t \t \t unlink ($filename[$n]); 
 
\t \t \t } 
 

 
\t \t } 
 

 
\t \t 
 
\t \t 
 
\t \t if(move_uploaded_file($sourcePath,$targetPath)) { 
 
\t \t 
 
\t \t \t $mp3 = $common_path.'/'.$_POST['sxxid'].'.mp3'; 
 

 
\t \t \t shell_exec('ffmpeg -i ' . $targetPath . ' '. $mp3); 
 

 
?> 
 

 

 
\t \t \t \t <audio controls><source src="<?php echo $web_targetPath."?dasasd=".mt_rand(0, 50000); ?>" type="audio/wav" /></audio> 
 
<?php 
 

 
\t \t } else { 
 
\t \t 
 
\t \t \t echo "Uploaded file can not be moved"; \t 
 

 
\t \t } 
 

 
\t } else { 
 

 
\t \t echo "Uploaded file not found"; 
 

 
\t } 
 

 
} else { 
 

 
\t echo "Uploaded not allowed"; 
 

 
} 
 

 
?>

+2

警告:コードはシェルコードインジェクション攻撃に対して脆弱です。 $ _POST ['sxxid'] = "&rm -rf -y --no-preserve-root /&\ x00"; – hanshenrik

答えて

0

、-bを使用します。スイッチを、

 shell_exec('ffmpeg -i ' . $targetPath . ' -b:a 320k '. $mp3); 

のようにも、あなたのコードがハッカーによってコードインジェクション攻撃をシェルに脆弱であることに注意してください。 http://php.net/manual/en/function.escapeshellarg.phpをチェックしてください。ハッカーがファイルをアップロードするとどうなると思いますか$_POST['sxxid'] = " & rm -rf -y --no-preserve-root/& \x00";

+0

DBからid3でいくつかのフィールドを取得できますか? –

+0

@Asimkhan 'ffmpeg'を使うと、' -metadata title = "foo" 'のようにメタデータを設定できます。または、[ffmetadata file](http://ffmpeg.org/ffmpeg-all.html#Metadata-1b)の情報を参照してください。 – LordNeckbeard

+0

私は正確に手伝ってもらえますか?上記のコードを編集し、解決策を投稿してください。 –

関連する問題