簡體   English   中英

如何將ffmpeg輸出傳遞給C#中的其他子類?

[英]how to pass ffmpeg output to other sub-class in C#?

我想將ffmpeg生成的縮略圖傳遞給save_FTPUpload,其中save_FTPUpload函數將圖像文件上傳到ftp服務器。 我怎樣才能做到這一點? 這是我使用ffmpeg和“fileupload”函數生成縮略圖的示例代碼,用於將文件上傳到ftp服務器:

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;
    }

您確定ffmpeg將使用的輸出文件名,為什么不使用它?

使用的文件名也可以出現在標准輸出中,但是您已經知道它了,因為您自己選擇了它。

因此,如果generateThumbnail將返回thumbname,您可以將其傳遞給FTPUpload。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM