首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >佳能EDSDK :如何下载录制的视频?

佳能EDSDK :如何下载录制的视频?
EN

Stack Overflow用户
提问于 2013-10-06 04:54:04
回答 1查看 651关注 0票数 0

我需要把我刚刚录制的视频下载到我的电脑上。我设法处理了图片,但对于视频,我只能得到一个空文件。

我已经注册了对象事件处理程序

代码语言:javascript
复制
 err = EDSDK.EdsSetObjectEventHandler(cameraDev, EDSDK.ObjectEvent_All, objectEventHandler, new IntPtr(0));

然后,我开始录制:

代码语言:javascript
复制
public void StartRecording(int sec)
{
    // set the timer, surement à mettre dans les config, plutot
    System.Timers.Timer aTimer = new System.Timers.Timer(sec * 1000);
    aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
    GC.KeepAlive(aTimer);            

    err = EDSDK.EdsSetPropertyData(cameraDev, EDSDK.PropID_Record, 0, 4, 4);
    aTimer.Start();
}

private void OnTimedEvent(object source, ElapsedEventArgs e)
{
   StopRecording();
}


public void StopRecording()
{           
    err = EDSDK.EdsSetPropertyData(cameraDev, EDSDK.PropID_Record, 0, 4, 0);
}

对象事件处理程序:

代码语言:javascript
复制
public uint objectEventHandler(uint inEvent, IntPtr inRef, IntPtr inContext)
{
    switch (inEvent)
    {
        case EDSDK.ObjectEvent_DirItemCreated:
                DownloadImage(inRef, inContext);
            break;                
    }
    return 0;
}

最后,downolad

代码语言:javascript
复制
void DownloadImage(IntPtr DirectoryRef, IntPtr inContext)
{            
    IntPtr stream = IntPtr.Zero;
    IntPtr data = IntPtr.Zero;

    EDSDK.EdsDirectoryItemInfo dirItemInfo;
    uint err;

    try
    {
        err = EDSDK.EdsGetDirectoryItemInfo(DirectoryRef, out dirItemInfo);
        err = EDSDK.EdsCreateFileStream(dirItemInfo.szFileName,
            EDSDK.EdsFileCreateDisposition.CreateAlways, EDSDK.EdsAccess.ReadWrite, out stream);

        // does not work
        err = EDSDK.EdsSetProgressCallback(stream, progressFunc, EDSDK.EdsProgressOption.Periodically, inContext);

        // Fill the stream with the resulting image
        err = EDSDK.EdsDownload(DirectoryRef, dirItemInfo.Size, stream);

        if (err == EDSDK.EDS_ERR_OK)
        {
            err = EDSDK.EdsDownloadComplete(DirectoryRef);
        }
        else
        {
            err = EDSDK.EdsDownloadCancel(DirectoryRef);
        }
        if ((stream == null) == false)
        {
            err = EDSDK.EdsRelease(stream);
            stream = IntPtr.Zero;
        }                 
    }
    catch (Exception ex)
    {
        throw new Exception(String.Format("EDSDK Error : {0}", ex.Message));
    }
    EDSDK.EdsRelease(stream);
}

在调试模式下,方法EDSDK.EdsDownload永远不会结束,但没有异常,也没有返回代码...

请帮帮我!

EN

回答 1

Stack Overflow用户

发布于 2013-10-07 15:51:23

您是否确保将kEdsPropID_SaveTo设置为1(“保存在远程相机的存储卡上”),因为您无法像保存图像那样将其直接保存到PC。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19202628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档