上一篇文章中,提供了发送视频帧数据的方法。有人问了,这是理想情况,对于编码数据,怎么办?

  经过一番折腾,终于找到可用的办法。下面代码,测试通过:

#include <gst/gst.h>static FILE * appSrcFile = NULL;
static int  read_counter = 0;
static char read_buffer[4096];static void cb_need_data (GstElement *source, guint       unused_size, gpointer    user_data)
{GstBuffer *buffer;GstFlowReturn ret;GstMapInfo map;g_print("%s\n", __func__);if (appSrcFile == NULL){appSrcFile = fopen("sample_720p.h264", "r");}size = fread(read_buffer, 1, size, appSrcFile);g_print("read_data() read_counter=%d, size=%d\n", read_counter++, size);if(size == 0){ret = gst_app_src_end_of_stream(source);g_print("eos returned %d at %d\n", ret, __LINE__);return;}buffer = gst_buffer_new_allocate (NULL, size, NULL);
//这两个方法都可以
#if 0gst_buffer_fill(buffer, 0, read_buffer, size);
#elsegst_buffer_map (buffer, &map, GST_MAP_WRITE);memcpy( (guchar *)map.data, read_buffer, gst_buffer_get_size( buffer ) );
#endifg_signal_emit_by_name (source, "push-buffer", buffer, &ret);gst_buffer_unref (buffer);
}gint main (gint   argc, gchar *argv[])
{GstElement *pipeline, *appsrc, *conv, *videosink;/* init GStreamer */gst_init (NULL, NULL);GMainLoop* loop = g_main_loop_new (NULL, FALSE);/* setup pipeline */pipeline  = gst_pipeline_new ("pipeline");appsrc    = gst_element_factory_make ("appsrc",       "source");conv      = gst_element_factory_make ("videoconvert", "conv");videosink = gst_element_factory_make ("xvimagesink",  "videosink");gst_bin_add_many (GST_BIN (pipeline), appsrc, conv, videosink, NULL);gst_element_link_many (appsrc, conv, videosink, NULL);/* setup appsrc */g_signal_connect (appsrc, "need-data",   G_CALLBACK (cb_need_data), NULL);g_object_set(     appsrc, "stream-type", GST_APP_STREAM_TYPE_STREAM, NULL );/* play */gst_element_set_state (pipeline, GST_STATE_PLAYING);g_main_loop_run (loop);/* clean up */gst_element_set_state (pipeline, GST_STATE_NULL);gst_object_unref (GST_OBJECT (pipeline));g_main_loop_unref (loop);return 0;}

gstreamer向appsrc发送编码数据的代码相关推荐

  1. php图文消息带代码详细注释,微信发送图文消息代码整理

    微信发送图文消息代码整理 这个就不多说什么了, 下单成功后微信提示图文消息.核心代码如下 if(!empty($openid)){ $wxinfo=curlgetcontents("http ...

  2. 求android 中串口的发送接收数据代码

    RT,求高手帮忙! 就是 /dev/ttyS0 和/dev/ttyS1 两个设备的通信问题.. 同求~ 这个是不是需要串口驱动啊?最近正在搞这个串口通信的案子,头疼 同样也没有搞出来,老是报:不能扫描 ...

  3. IOS程序之发送短信代码实现

    转:点击打开链接 IOS程序之发送短信代码实现是本文要介绍的内容,iOS4.0新加入了MFMessageComposeViewController和MFMessageComposeViewContro ...

  4. 一个window下的简单的全局快捷键向指定的进程发送的c代码与exe程序下载(二)

    c代码:一个window下的简单的全局快捷键向指定的进程发送的c代码与exe程序下载 -----------------这是文件 hotkey.zip base64后的字符,复制代码时不要复制我(共2 ...

  5. VS.net 2005 MFC QQ 2006 TM 2006 消息发送 简单核心代码

    VS.net 2005 MFC QQ 2006 & TM 2006 消息发送 简单核心代码  1 void  SendQQMsgDlg::SendQQmsg()  2 {  3    CStr ...

  6. java 限制发送频率_java发送短信如何限制发送频率例子代码

    本篇文章主要是详细介绍了java发送短信系列之怎么限制发送频率示例解析,在此为大家介绍一下怎么样限制向同一个用户(根据手机号和ip)发送短信的频率. 1.使用session 要是web程序那在sess ...

  7. 手机网站实现一键拨号及html5短信发送功能JS代码(微信适用)

    手机网站实现一键拨号及html5短信发送功能JS代码(微信适用) 来源:本站原创    作者:温州中网网络营销机构    发布时间:2014-1-10 10:45:44    点击数:3069 微信微 ...

  8. php微信 发送信息,PHP微信企业号主动给用户发送消息接口代码

    php微信企业号主动给用户发送消息接口代码 $corpid = "wx690e2a9380e2440dyt"; $secrect = "3g9l6dHy8qjYqYMWX ...

  9. android实现发送成功,安卓发送发外代码(三星NOTE3测试成功,华为荣耀成功)

    安卓发送发外代码(三星NOTE3测试成功,华为荣耀成功).有些手机不支持,必须有红外模块,这是安卓内核里面的隐藏API. package com.remotefairy.model; import j ...

  10. 51单片机串口通信发送以及接收代码详解1

    #include <reg51.h> //实验现象:单片接收电脑发送的字符串,并发回给PC端的代码.//函数声明 void uart_init(void); void uart_seng_ ...

最新文章

  1. html弹出保存文件对话框_这样操作,3分钟不要就可以在GIS office中轻松导入坐标点文件!...
  2. pyrealsense2 frame_metadata_value类(帧的元数据)(帧的元数据指可能针对每个单独的帧公开的一组只读属性)
  3. Codeforces 1153 C Serval and Parenthesis Sequence
  4. pip安装lxml报错
  5. 从html导出带样式的excel,Jquery导出带样式的Excel
  6. java itextpdf使用HTML模板生成pdf文件,并设置table
  7. 语言身高预测实验注意事项_?新预训练模型CodeBERT出世,编程语言和自然语言都不在话下...
  8. 又搞事!雷军郑重宣告:小米9才是骁龙855全球真首发
  9. python-docx表格样式列表
  10. Ubuntu下pdf乱码和rar解压后无效文件编码解决方案
  11. 对于os.walk()的认识--python遍历文件执行相应操作
  12. 设计模式-访问者模式-java-中文版
  13. gta5服务器端文件夹,GTA5路径在steam哪个文件夹里面
  14. 洛谷p5710答案C语言,洛谷题单 101【入门2】分支结构
  15. 塞班系统是如何没落的
  16. DNS记录类型介绍(A记录、MX记录、NS记录等)
  17. 学校计算机ip设置路由器,学校网路由器怎么设置
  18. Java绝对好文,转载的!(转载)
  19. Python参数化接口测试demo笔记
  20. android 购物车操作并发,Android 购物车页面和逻辑实现

热门文章

  1. mysql replace函数对字段进行字符替换
  2. Android应用神器:高级终端Termux
  3. YII2中ActiveDataProvider与GridView的配合使用
  4. linux系统一键安装php运行环境apache,mysql等
  5. WSGI、flup、fastcgi、web.py的关系
  6. Git 命令行(cygwin) + Git Extensions + Git Source Control Provider
  7. 意外收获——我与FPGA的第一次
  8. 男人的爱只有一次----女孩你珍惜了吗
  9. Android的动画简单学习
  10. BroadCastReceive的理解和使用