私はffmpegによって生成されたサムネイルをsave_FTPUploadに渡したいのですが、save_FTPUpload関数は画像ファイルをftpサーバーにアップロードすることです。どうやってやるの?これは、ftp サーバーにファイルをアップロードするための ffmpeg と「fileupload」関数を使用したサムネイル生成のコード例です。
public partial class testtttt : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
generateThumbnail();
string fi_attachment = @"C:\2.jpg";//source image file
save_FTPUpload(fi_attachment);
}
private void generateThumbnail()
{
string thumbpath, thumbname, videofile;
videofile = "http://www.xxxx.com/video.Avi";
thumbpath = @"C:\";
thumbname = thumbpath + Path.GetFileNameWithoutExtension(videofile) + ".jpg";
string thumbargs = "-i \"" + videofile + "\" -vframes 1 -s 60*30 -ss 00:00:00 -f image2 \"" + thumbname + "\"";
Process process = new Process();
process.StartInfo.FileName = Server.MapPath("~\\ffmpeg\\bin\\ffmpeg.exe");
process.StartInfo.Arguments = thumbargs;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardInput = false;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.CreateNoWindow = false;
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
try
{
process.Start();
string output2 = process.StandardError.ReadToEnd();
string output3 = process.StandardOutput.ReadToEnd();
if (process != null)
{
process.Close();
}
}
catch (Exception)
{
this.lblMessage.Text = "Thumbnail created successfuly";//ex.Message.ToString();
}
}
public bool save_FTPUpload(string fi_attachment)
{
bool fileSaved = false;
//string fi_attachment = @"C:\1.jpg";
string filename = "3.jpg";//image name to be saved in ftp
string ftp_user = "*****"; //username
string ftp_pass = "*****"; //password
string ftpURI = "ftp://www.xxxx.com/thumb/"; //ftp path where the image will be saved
while (!fileSaved)
{
string file_ftpURI = string.Format("{0}/{1}", ftpURI, filename);
FtpWebRequest file_exist_request = (FtpWebRequest)FtpWebRequest.Create(file_ftpURI);
file_exist_request.Credentials = new NetworkCredential(ftp_user, ftp_pass);
file_exist_request.Method = WebRequestMethods.Ftp.GetFileSize;
try
{
FtpWebResponse response = (FtpWebResponse)file_exist_request.GetResponse();
}
catch (WebException ex)
{
FtpWebResponse response = (FtpWebResponse)ex.Response;
if (response.StatusCode ==
FtpStatusCode.ActionNotTakenFileUnavailable)
{
FtpWebRequest upload_request = (FtpWebRequest)FtpWebRequest.Create(file_ftpURI);
upload_request.Credentials = new NetworkCredential(ftp_user, ftp_pass);
upload_request.Method = WebRequestMethods.Ftp.UploadFile;
upload_request.UsePassive = true;
upload_request.UseBinary = true;
upload_request.KeepAlive = false;
using (var fs = File.OpenRead(fi_attachment))
using (Stream upload_request_stream = upload_request.GetRequestStream())
{
fs.CopyTo(upload_request_stream);
}
FtpWebResponse upload_response = (FtpWebResponse)upload_request.GetResponse();
fileSaved = true;
this.Label1.Text = "Upload Successful";
}
}
}
return fileSaved;
}