본문 바로가기
이과/FFMPEG

[FFMPEG] ajax + ffmpeg + exec 파일 받아서 변환 코드

by 코딩초밥 2022. 4. 27.
반응형

동영상을 변환 시켜서 저장하 려고 한다.

 

시나리오.

1. 웹에서 파일선택후

 

2. form으로 원하는 값을 입력

 

3. 버튼을 누르면

선택된 파일 + form 에서 받은 입력값이 ajax 와 post 로 변수에 값 전달

 

4. 받은 값으로 exec 함수를 사용. ffmpeg 구문을 넣고 그 안에 변수값을 전달하여서 원하는 파일로 변경.

 

4.php 코드

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>변환 코드</title>
</head>
<body>
<script src="https://code.jquery.com/jquery-latest.js"></script>
<script>
	function file_frm_submit(frm) {

		var fileCheck = frm.upload_file.value;

		if(!fileCheck) {
			alert("업로드할 파일을 선택하세요.");
			return false;
		}

		var formData = new FormData(frm);			

		formData.append("message", "ajax로 파일 전송하기");
		

		$.ajax({
			url			: 'ajax_file_upload.php',
			type		: 'POST',
			dataType	: 'html',
			enctype		: 'multipart/form-data',
			processData	: false,
			contentType	: false,
			data		: formData,
			async		: false,
			success		: function(response) {
				console.log(response);	
		if(response == "failed") {				
          alert("파일 업로드에 문제가 발생하였습니다."); 
          return false;						
        } else {						
          alert("파일 업로드가 완료되었습니다.");		
          return true;
        }
			}
		});
	}

</script>
<div style = "display: flex;  width: 100%; height: 60em; align-items: center; justify-content: center;">

<form id="file_frm" style=" width: 50%; height: 50%; text-align: center; ">
	<input type="file" name="upload_file" id="upload_file">
	<br><br>

	<INPUT TYPE="text" name="testa" id ="texta">
	
	
	<button type="button" onClick="file_frm_submit(this.form)">ajax 업로드</button>
</form>
</div>

</body>
</html>

ajax_file_upload.php 코드

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
</head>   
<body>
<?php

$testa = $_POST["testa"];

ini_set("display_errors", "1");
//저장 경로
$uploaddir = '/var/www/html/uploadfile/file/';
$uploadfile = $uploaddir . basename($_FILES['upload_file']['name']);
echo '<pre>';


if (move_uploaded_file($_FILES['upload_file']['tmp_name'], $uploadfile)) {
    
	// command 조절
	shell_exec('/usr/bin/ffmpeg -i '.$uploadfile.' -an /var/www/html/uploadfile/file/'.$_POST['testa'].'.mp4 2>&1;');
	//원본 삭제
	unlink($uploadfile);
	
} else {
    echo "failed";
}
print_r($_FILES);
print "</pre>";


echo $uploadfile;

?>


</body>
</html>

 

이러면 원하는 파일을 가져와서

ffmpeg로 커맨드를 만들어서 파일을 마음대로 변형할수있다. (시간, 썸내일 등)

 

 

결과값.

원하는 시간과 이름값 확장자 변환까지 할수있다.

 

 

2022.04.22 - [이과/ffmpeg] - FFmpeg 명령어 사용하기.

 

FFmpeg 명령어 사용하기.

이전 시간에 ffmpeg 다운을 받았다면 사용을 해봐야겠죠. 일단 테스트를 할만한 영상하나를 골라주세요 저는 test.mp4 라는 영상을쓰겠습니다. 동영상 일부 클립으로 자르기 test.mp4는 2분 34초로짜리

sesangcoding.tistory.com

 

반응형

댓글