设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 4192|回复: 4
打印 上一主题 下一主题

外部视频连续输入

[复制链接]

21

主题

74

帖子

275

积分

中级会员

Rank: 3Rank: 3

积分
275
跳转到指定楼层
楼主
发表于 2015-12-24 12:46:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 hk92 于 2015-12-24 12:57 编辑

您好,我按照文档说明,进行外部视频的输入,但每次输入只有一帧。我的具体实现过程为:首先初始化SDK时,设置了外部视频输入模式。
  1. //外部视频输入

  2.             int bExtVideoInput = 1;
  3.             AnyChatCoreSDK.SetSDKOption(AnyChatCoreSDK.BRAC_SO_CORESDK_EXTVIDEOINPUT, ref bExtVideoInput, sizeof(int));
复制代码
在进入房间成功之后,设置了视频的数据格式
  1. AnyChatCoreSDK.SetInputVideoFormat(AnyChatCoreSDK.PixelFormat.BRAC_PIX_FMT_YUV420P, 320, 240, 25, 0);
复制代码
在进入房间后我所进行的操作为
  1. FileStream fs1 = new FileStream(@"D:\a.yuv", FileMode.Open);

  2.                     //获取文件大小
  3.                     int size = (int)fs1.Length;

  4.                     byte[] array = new byte[size];

  5.                     //将文件读到byte数组中
  6.                     fs1.Read(array, 0, array.Length);
  7.                   
  8.                      IntPtr buffer = Marshal.AllocHGlobal(array.Length);
  9.                      Marshal.Copy(array, 0, buffer, array.Length);

  10.                     fs1.Close();

  11.                     int roomid = m.WParam.ToInt32();
  12.                     Print("进入房间成功,房间编号为:" + roomid.ToString());
  13.                     m_RoomID = roomid;
  14.                     int ret = AnyChatCoreSDK.SetVideoPos(-1, pnl_local.Handle, 0, 0, pnl_local.Width, pnl_local.Height);
  15.                     //ret = AnyChatCoreSDK.UserCameraControl(-1, true);
  16.                     
  17.                         ret = AnyChatCoreSDK.InputVideoData(buffer, 320 *240 * 3, 0);
  18.                     MessageBox.Show(ret.ToString());
  19.                     ret = AnyChatCoreSDK.UserSpeakControl(-1, true);
复制代码
在这里,ret = AnyChatCoreSDK.InputVideoData(buffer, 320 *240 * 3, 0);ret的值是0;成功的,但是只显示了一帧就固定不动了,如果想要连续的显示出来,我该怎么解决呢?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

沙发
发表于 2015-12-24 15:53:03 | 只看该作者
您好,你设置一个定时器,用1000/帧率数作为间隔,每次触发你就读下一帧,再InputVideoData
回复 支持 反对

使用道具 举报

21

主题

74

帖子

275

积分

中级会员

Rank: 3Rank: 3

积分
275
板凳
 楼主| 发表于 2015-12-24 20:31:00 | 只看该作者
佰锐科技-李永星 发表于 2015-12-24 15:53
您好,你设置一个定时器,用1000/帧率数作为间隔,每次触发你就读下一帧,再InputVideoData

感谢您的解答,现在已经实现了yuv作为外部视频输入,并能连续播放了。
回复 支持 反对

使用道具 举报

21

主题

74

帖子

275

积分

中级会员

Rank: 3Rank: 3

积分
275
地板
 楼主| 发表于 2015-12-29 14:42:41 | 只看该作者
佰锐科技-李永星 发表于 2015-12-24 15:53
您好,你设置一个定时器,用1000/帧率数作为间隔,每次触发你就读下一帧,再InputVideoData

您好,我在网上找了一些资料,也没有实现H.264格式视频作为外部视频导入到anychat,大多数情况下,只能传过去一帧视频,然后就卡住了,您看您能帮我解决一下如何将h.264写入到内存吗(C#)?
回复 支持 反对

使用道具 举报

5#
发表于 2015-12-29 14:46:44 | 只看该作者
本帖最后由 佰锐科技-李永星 于 2015-12-29 14:49 编辑
hk92 发表于 2015-12-29 14:42
您好,我在网上找了一些资料,也没有实现H.264格式视频作为外部视频导入到anychat,大多数情况下,只能传 ...

您好,给你发的C++代码就是H.264外部输入的示例。您是做一个什么样的项目,请您把你的项目业务场景描述一下。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|AnyChat ( 粤ICP备13022410号-1 )  

GMT+8, 2024-11-24 02:05 , Processed in 0.340581 second(s), 21 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表