ffmpeg 怎么实时的推流音频buf到rtmp服务器

麦克风喊话,实时的传来MP3音频buf,需要实时的将这个音频buf传到rtmp服务器

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
ffmpeg推流视频文件到rtmp服务器
ffmpeg推流视频文件 nginx+rtmp服务器
ffmpeg的h264推流rtmp
ffmpeg的h264推流rtmp: simplest_ffmpeg_streamer,simplest_ffmpeg_receiver
ffmpeg rtmp推流源码
一份可以直接将本地视频推送到服务器的推流源代码, 是学习推流的很好的资料, 代码基于ffmpeg rtmp推流, 采用nginx+rtmp module搭建本地流媒体服务器
FFMPEG RTMP推流分析
简介 RTMP推流器(Streamer)的在流媒体系统中的作用可以用下图表示。首先将视频数据以RTMP的形式发送到流媒体服务器端(Server,比如FMS,Red5,Wowza等),然后客户端(一般为Flash Player)通过访问流媒体服务器就可以收看实时流了。 运行本程序之前需要先运行RTMP流媒体服务器,并在流媒体服务器上建立相应的Application。有关流媒体服务器的
ffmpeg推流RTMP命令
linux 和windows下命令行相同 ffmpeg  -re -i "C:\Users\hungrygame.flv" -vcodec copy -acodec copy -f flv -y rtmp://127.0.0.1/wasu?vhost=《域名》/test14 推送到服务器直接将ip 和域名换的即可
ffmpeg rtmp推流 nginx搭建的rtmp服务器
1、利用nginx搭建的rtmp服务器 下载nginx-rtmp-module模块,解压 下载nginx,解压 进入nginx目录下,编译安装nginx支持rtmp流媒体配置 ./configure --add-module=../nginx-rtmp-module-master $ make $ sudo make install 打开nginx配置文件
搭建rtmp推流服务器
搭建基于rtmp协议的推流服务器。 环境Linux centos 7.6 + Nginx 1.安装Nginx 安装Nginx依赖库: #安装Nginx的编译环境gcc yum install gcc-c++ #nginx的http模块使用pcre解析正则表达式所以安装perl兼容的正则表达式库 yum install -y pcre pcre-devel #nginx使用zlib...
RTMP推流服务器.rar
代码已经完全编译通过,测试通过了。请放心使用。
ffmpeg 单线程本地mp4 rtmp推流
//dbt_rtmp.h #include <stdio.h> #include <stdint.h> #include <malloc.h> #include <windows.h> #include <queue.h> #include <string> using namespace std; extern "C" { #include "libavcodec/avcodec.h" #incl
FFmpeg读取视频文件rtmp推流
前一阵,研究了怎么用ffmpeg读取USB摄像头进行rtmp推流,这次也把读取视频文件推流的示例也搬上来。当然了本篇肯定也参考了雷神的博客,再次致敬! 本篇比读取USB摄像头的H264帧要简单,而且视频文件中含有音频,推流的视频播放是含有声音的,因此,下一篇就是研究怎么读取USB摄像头的音频与视频,合成为视频文件并推流。 #ifdef __cplusplus extern &quot;C&quot; { #endif...
基于ffmpeg实现的rtmp推流模块
需要先创建推流的流媒体地址,然后再创建一个对象启动推流,创建过程如下。 RtmpPublishManager* rpm = new RtmpPublishManager("rtmp://192.168.16.88:1935/hls/test0", read_fd[0]); rpm->ffmpeg_init(NULL); rpm->start();
FFmpeg 推流之 RTMP、X264与交叉编译
RTMPDump: ​ RTMPDump 是一个用来处理RTMP流媒体的开源工具包。它能够单独使用进行RTMP的通信,也可以集成到FFmpeg中通过FFmpeg接口来使用RTMPDump。 RTMPDump源码下载:http://rtmpdump.mplayerhq.hu/ 交叉编译 下载RTMPDump 库解压 打开librtmp目录,打开makefile文件,找到 librtmp.a: $(O...
搭建nginx rtmp直播服务器,ffmpeg模拟推流
原文:http://cxuef.github.io/linux/%E3%80%90%E7%BD%AE%E9%A1%B6%E3%80%91%E6%90%AD%E5%BB%BAnginx-rtmp%E7%9B%B4%E6%92%AD%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%8Cffmpeg%E6%A8%A1%E6%8B%9F%E6%8E%A8%E6%B5%81/
rtmp 推流客户端
使用ffmpeg api 开发的rtmp 客户端。可以编译使用。
RTMP协议推流
RTMP协议Real Time Messaging Protocol(实时消息传送协议协议)是Adobe 公司为Flash播放器和服务器之间音频、视频和数据传输开发的私有协议。RTMP协议是TCP/IP五层体系结构中应用层的协议。RTMP协议中基本的数据单元称为消息,当RTMP协议通过网络传送数据的时候,消息将会被拆分成更小的数据单元,称为消息快(CHUNK)。RTMP消息结构消息是RTMP协议中最
rtmp推流资料整理
librtmp推流相关资料demo整理,以及视频音频资料的封装推送,flv格式打包等,抓包分析数据等
ffmpeg获取rtmp音频
1. 命令行获取rtmp音频并且存储为16K16BIT PCM格式音频    ./ffmpeg -i &quot;rtmp://live.hkstv.hk.lxdns.com/live/hks&quot; -ar 16000 -ac 1 a.wav   说明:   -i  输入   -ar 采样率   -ac 声道。 1为单声道,2为双声道。2. 代码获取#include &amp;lt;iostream&amp;gt; #incl...
RTMP推流库
基于librtmp封装的推流库 支持H264和AAC
RTMP 推流代码
初始化部分 av_log_set_level(1); m_pRtmpContex = (RtmpContex*)malloc(sizeof(RtmpContex)); memset(m_Url, 0, 128); memcpy(m_Url, RTMPUrl, strlen(RTMPUrl)); InitNet(); m_pRtmpContex-&amp;gt;pRtmp = RTMP_Alloc(); R...
初始化RTMP推流
Android音视频编码和推流功能视频培训教程,该课程内容包括:OpenGL ES教程、Android视频滤镜、图片生成视频、添加水印、音频和视频合成、剪切音乐合成视频、利用摄像头实现RTMP直播推流等。
ffmpeg 代码实现rtmp推流到服务器
前面2篇已经讲解了如何搭建直播服务器 ffmpeg + nginx配置智播推流服务器和ffmpeg + crtmpserver实现直播推流,并且通过ffmpeg命令实现了推流,下面讲解下如何用代码实现推流,并且通过设置dts来实现推流的速度。 之前也写过,将摄像头的数据保存到本地为mp4:ffmpeg 获取电脑摄像头数据,并且保存为MP4视频,这里其实差不多,只是将输出设备从本地文件mp4 改...
FFMPEG推流到RTMP服务器命令
1、将文件当作源推送到RTMP服务器ffmpeg -re -i localFile.mp4 -c copy -f flv rtmp://server/live/streamName 参数解释-r 以本地帧频读数据,主要用于模拟捕获设备。表示ffmpeg将按照帧率发送数据,不会按照最高的效率发送 2、将直播文件保存至本地ffmpeg -i rtmp://server/live/streamName
ffmpeg推本地视频到rtmp服务器
ffmpeg推本地视频到rtmp服务器
使用ffmpeg 测试rtmp推流和拉流
记录简单使用ffmpeg的使用: 环境:ubuntu16.04 推流操作: ffmpeg -f x11grab -i :0.0+0,0 -s 640x480 -r 10 -vcodec libx264 -preset ultrafast -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://*** 把电脑屏幕推流大指定路径。 推文件: ffm...
直播--如何搭建rtmp推流服务器
首先需要了解什么事rtmp协议 概念:与HTTP(超文本传输协议)同样是一个基于TCP的Real Time Messaging Protocol(实时消息传输协议)。由Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的一种开放协议 。在国内被广泛的应用于直播领域。HTTP默认端口为80,RTMP则为1935。本质上我们通过阅读Adobe的协议规范,通过与服务...
ffmpeg 采集摄像机流(rtsp)后推流(rtmp)
VS2013,代码齐全,rtsp采集网络摄像机以后向流媒体服务器推流,vlc拉流。
rtmp推流服务器降低延时
在搭建好的nginx-rtmp服务器上做推流延时会很高我最开始时在6s左右,这时候需要修改接收端和发送端的缓存就可以。 以下是发送端的例子(视频缓存太小后会不能播放,这个只针对音频) 录屏加摄像头和麦克风这个延时很高 ffmpeg -thread_queue_size 128 -f x11grab -video_size 1920x1080 -framerate 30 -i :0.0 -f ...
用ffmpeg制作推流工具,实现推流系统声音和桌面到rtmp服务器
能正常推流,但是画面比声音快了几秒钟,不懂怎么设置音视频同步,各位大大能帮忙看一下问题吗?rnrn视频信息:rn[code=c]pCodec = avcodec_find_encoder(AV_CODEC_ID_H264);rn if (!pCodec)rn printf("Can not find output video encoder! (没有找到合适的编码器!)\n");rn return -1;rn rn m_pCodecCtx = avcodec_alloc_context3(pCodec);rn m_pCodecCtx->pix_fmt = AV_PIX_FMT_YUV420P;rn m_pCodecCtx->width = m_pIfmt_ctx->streams[m_nVideoIndex]->codec->width;rn m_pCodecCtx->height = m_pIfmt_ctx->streams[m_nVideoIndex]->codec->height;rn m_pCodecCtx->time_base.num = 1;rn m_pCodecCtx->time_base.den = 25;rn m_pCodecCtx->bit_rate = 300000;rn m_pCodecCtx->gop_size = 250;rn /* Some formats want stream headers to be separate. */rn if (m_pOfmt_ctx->oformat->flags & AVFMT_GLOBALHEADER)rn m_pCodecCtx->flags |= CODEC_FLAG_GLOBAL_HEADER;rnrn m_pCodecCtx->qmin = 10;rn m_pCodecCtx->qmax = 51;rn //Optional Paramrn m_pCodecCtx->max_b_frames = 0;[/code]rnrn音频信息:rn[code=c]pCodec_a = avcodec_find_encoder(AV_CODEC_ID_AAC);rn if (!pCodec_a)rn Write_Log(LOG_INFO, "Can not find output audio encoder! (没有找到合适的编码器!)\n");rn return -1;rn rn m_pCodecCtx_a = avcodec_alloc_context3(pCodec_a);rn m_pCodecCtx_a->channels = 2;rn m_pCodecCtx_a->channel_layout = AV_CH_LAYOUT_STEREO;//av_get_default_channel_layout(2);rn m_pCodecCtx_a->sample_rate = 44100;//m_pIfmt_ctx_a->streams[m_nAudioIndex]->codec->sample_rate;rn m_pCodecCtx_a->sample_fmt = pCodec_a->sample_fmts[0];rn m_pCodecCtx_a->bit_rate = 64000;rn m_pCodecCtx_a->time_base.num = 1;rn m_pCodecCtx_a->time_base.den = m_pCodecCtx_a->sample_rate;rn /** Allow the use of the experimental AAC encoder */rn m_pCodecCtx_a->strict_std_compliance = FF_COMPLIANCE_EXPERIMENTAL;rn /* Some formats want stream headers to be separate. */rn if (m_pOfmt_ctx->oformat->flags & AVFMT_GLOBALHEADER)rn m_pCodecCtx_a->flags |= CODEC_FLAG_GLOBAL_HEADER;[/code]rnrn视频编码部分:rn[code=c]int nResult = 0;rn int nFramecnt = 0;rn int nDecGotFrame, nEncGotFrame;rn AVFrame *pframe;rn AVPacket *pDecPkt;rnrn while (true)rn rn if (m_bStopThread)rn return;rnrn if (m_bPauseThread)rn rn Sleep(10);rn continue;rn rnrn pDecPkt = (AVPacket *)av_malloc(sizeof(AVPacket));rn av_init_packet(pDecPkt);rn pDecPkt->data = NULL;rn pDecPkt->size = 0;rnrn av_free_packet(pDecPkt);rnrn if ((nResult = av_read_frame(m_pIfmt_ctx, pDecPkt)) >= 0)rn rn pframe = av_frame_alloc();rn if (!pframe) rn return;rn rn nResult = avcodec_decode_video2(m_pIfmt_ctx->streams[pDecPkt->stream_index]->codec, pframe,rn &nDecGotFrame, pDecPkt);rn if (nResult < 0) rn av_frame_free(&pframe);rn Write_Log(LOG_ERROR, "VideoEncoderThread : Decoding video failed.");rn return;rn rn if (nDecGotFrame)rn rn sws_scale(pImgConvertCtx, (const uint8_t* const*)pframe->data, pframe->linesize, 0, m_pCodecCtx->height, m_pFrameYUV->data, m_pFrameYUV->linesize);rn m_pFrameYUV->width = pframe->width;rn m_pFrameYUV->height = pframe->height;rn m_pFrameYUV->format = AV_PIX_FMT_YUV420P;rnrn AVPacket* pEncPkt = (AVPacket *)av_malloc(sizeof(AVPacket));rn pEncPkt->data = NULL;rn pEncPkt->size = 0;rn av_init_packet(pEncPkt);rn nResult = avcodec_encode_video2(m_pCodecCtx, pEncPkt, m_pFrameYUV, &nEncGotFrame);rn if (nResult < 0)rn rn Write_Log(LOG_ERROR, "VideoEncoderThread : Encoding video failed.");rn av_free_packet(pDecPkt);rn return;rn rn av_frame_free(&pframe);rn if (nEncGotFrame == 1)rn rn nFramecnt++;rn pEncPkt->stream_index = m_nVideoStIndex;rnrn //Write PTSrn AVRational r_framerate1 = m_pIfmt_ctx->streams[m_nVideoIndex]->r_frame_rate;// 50, 2 ; rn //Duration between 2 frames (us)rn int64_t calc_duration = (double)(AV_TIME_BASE)*(1 / av_q2d(r_framerate1)); //内部时间戳rn //Parametersrn pEncPkt->pts = av_rescale_q(nFramecnt*calc_duration, g_avTimeBase, m_avTimeBase);rn Write_Log(LOG_INFO, "Video EncoderThread : pts %d.", pEncPkt->pts);rn pEncPkt->dts = pEncPkt->pts;rn pEncPkt->duration = av_rescale_q(calc_duration, g_avTimeBase, m_avTimeBase); //(double)(calc_duration)*(double)(av_q2d(time_base_q)) / (double)(av_q2d(time_base));rn pEncPkt->pos = -1;rnrn m_nVideoNextPts = nFramecnt*calc_duration; //general timebasern m_pRtmpPush->PushPtsData(VIDEO_TYPE, m_nVideoNextPts);rn //Delayrn int64_t pts_time = av_rescale_q(pEncPkt->pts, m_avTimeBase, g_avTimeBase);rn int64_t now_time = av_gettime() - m_nStartTime;rn if ((pts_time > now_time) && ((m_nVideoNextPts + pts_time - now_time) < m_pRtmpPush->m_nAudioNextPts))rn rn av_usleep(pts_time - now_time);rn Write_Log(LOG_INFO, "Video EncoderThread : Delay %d.", (pts_time - now_time));rn rn m_pRtmpPush->PushData(pEncPkt);rn rn rn elsern rn av_frame_free(&pframe);rn rn av_free_packet(pDecPkt);rn rn Sleep(10);rn [/code]rnrn音频编码部分:rn[code=c]int nDecGotFrame_a = 0;rn int nEncGotFrame_a = 0;rnrn while (true)rn rn if (m_bStopThread)rn rn return;rn rn if (m_bPauseThread)rn rn Sleep(10);rn continue;rn rn const int output_frame_size = m_pCodecCtx_a->frame_size;rn while (av_audio_fifo_size(m_avFifo) < output_frame_size)rn rn AVFrame *pInputFrame = av_frame_alloc();rn if (!pInputFrame)rn rn return;rn rnrn AVPacket input_packet;rn av_init_packet(&input_packet);rn input_packet.data = NULL;rn input_packet.size = 0;rnrn if ((av_read_frame(m_pIfmt_ctx_a, &input_packet)) < 0)rn rn av_frame_free(&pInputFrame);rn return;rn rnrn if ((avcodec_decode_audio4(m_pIfmt_ctx_a->streams[m_nAudioIndex]->codec, pInputFrame,rn &nDecGotFrame_a, &input_packet)) < 0) rn Write_Log(LOG_ERROR, "AudioEncoderThread : Could not decode audio frame.");rn av_frame_free(&pInputFrame);rn return;rn rn av_packet_unref(&input_packet);rn if (nDecGotFrame_a)rn rn if ((av_samples_alloc(m_pConvertedInputSamples, NULL,rn m_pCodecCtx_a->channels,rn pInputFrame->nb_samples,rn m_pCodecCtx_a->sample_fmt, 0)) < 0) rn Write_Log(LOG_ERROR, "AudioEncoderThread : Could not allocate converted input samples.");rn av_freep(&(*m_pConvertedInputSamples)[0]);rn free(*m_pConvertedInputSamples);rn av_frame_free(&pInputFrame);rn return;rn rnrn if ((swr_convert(m_pAudioConvertCtx,rn m_pConvertedInputSamples, pInputFrame->nb_samples,rn (const uint8_t**)pInputFrame->extended_data, pInputFrame->nb_samples)) < 0) rn Write_Log(LOG_ERROR, "AudioEncoderThread : Could not convert input samples.");rn av_frame_free(&pInputFrame);rn return;rn rnrn if ((av_audio_fifo_realloc(m_avFifo, av_audio_fifo_size(m_avFifo) + pInputFrame->nb_samples)) < 0) rn Write_Log(LOG_ERROR, "AudioEncoderThread : Could not reallocate m_avFifo.");rn av_frame_free(&pInputFrame);rn return;rn rnrn if (av_audio_fifo_write(m_avFifo, (void **)m_pConvertedInputSamples,rn pInputFrame->nb_samples) < pInputFrame->nb_samples) rn Write_Log(LOG_ERROR, "AudioEncoderThread : Could not write data to m_avFifo.");rn av_frame_free(&pInputFrame);rn return;rn rn rn av_frame_free(&pInputFrame);rn rnrn if (av_audio_fifo_size(m_avFifo) >= output_frame_size)rn rn AVFrame *output_frame = av_frame_alloc();rn if (!output_frame)rn rn av_audio_fifo_free(m_avFifo);rn return;rn rnrn const int frame_size = FFMIN(av_audio_fifo_size(m_avFifo),rn m_pCodecCtx_a->frame_size);rnrn output_frame->nb_samples = frame_size;rn output_frame->channel_layout = m_pCodecCtx_a->channel_layout;rn output_frame->format = m_pCodecCtx_a->sample_fmt;rn output_frame->sample_rate = m_pCodecCtx_a->sample_rate;rnrn if ((av_frame_get_buffer(output_frame, 0)) < 0) rn Write_Log(LOG_ERROR, "AudioEncoderThread : Could not allocate output frame samples.");rn av_frame_free(&output_frame);rn return;rn rnrn if (av_audio_fifo_read(m_avFifo, (void **)output_frame->data, frame_size) < frame_size) rn rn Write_Log(LOG_ERROR, "AudioEncoderThread : Could not read data from m_avFifo.");rn av_frame_free(&output_frame);rn return;rn rnrn AVPacket* output_packet = (AVPacket *)av_malloc(sizeof(AVPacket));rn av_init_packet(output_packet);rn output_packet->data = NULL;rn output_packet->size = 0;rnrn if (output_frame) rn m_nb_samples += output_frame->nb_samples;rn rnrn if ((avcodec_encode_audio2(m_pCodecCtx_a, output_packet,rn output_frame, &nEncGotFrame_a)) < 0) rn Write_Log(LOG_ERROR, "AudioEncoderThread : Could not encode frame\n");rn av_frame_free(&output_frame);rn av_packet_unref(output_packet);rn return;rn rnrn if (nEncGotFrame_a) rnrn output_packet->stream_index = 1;rnrn AVRational r_framerate1 = m_pIfmt_ctx_a->streams[m_nAudioIndex]->codec->sample_rate, 1 ;rn int64_t calc_duration = (double)(AV_TIME_BASE)*(1 / av_q2d(r_framerate1));//内部时间戳rnrn output_packet->pts = av_rescale_q(m_nb_samples*calc_duration, g_avTimeBase_a, m_avTimeBase);//msrn Write_Log(LOG_INFO, "Audio EncoderThread : pts %d.", output_packet->pts);rn output_packet->dts = output_packet->pts;rn output_packet->duration = output_frame->nb_samples;rnrn m_nAudioNextPts = m_nb_samples*calc_duration;rn m_pRtmpPush->PushPtsData(AUDIO_TYPE, m_nAudioNextPts);rnrn int64_t pts_time = av_rescale_q(output_packet->pts, m_avTimeBase, g_avTimeBase_a);rn int64_t now_time = av_gettime() - m_nStartTime;rn if ((pts_time > now_time) && ((m_nAudioNextPts + pts_time - now_time) < m_pRtmpPush->m_nVideoNextPts))rn rn av_usleep(pts_time - now_time);rn Write_Log(LOG_INFO, "Audio EncoderThread : Delay %d.", (pts_time - now_time));rn rn m_pRtmpPush->PushData(output_packet);rn rnrn av_frame_free(&output_frame);rn rn Sleep(10);rn [/code]
ffmpeg推流和拉流
1. rtsp推流rtmp ffmpeg -i rtsp://admin:888888@192.168.88.213:554 -rtsp_transport tcp -vcodec h264 -acodec aac -strict -2 -f flv rtmp://localhost:1935/myapp/01 2.拉流 ffplay -x 320 -y 240 -vcodec h264 -a...
ffmpeg工具推流
SRR测试网址 http://www.ossrs.net/srs.release/trunk/research/players/srs_player.html 获取 git clone https://github.com/ossrs/srs.git configure make cd srs/trunk ./configure &amp;amp;&amp;amp; make 开启服务器 ./ob...
ffmpeg推流报错
在使用dshow设备推流时,经常会报出real time buffer too full dropping frames的错误信息,其原因在这篇文章里有写到,可以通过添加rtbufsize参数来解决,码率越高对应的rtbufsize就需要越高,但过高的rtbufsize会带来视频的延时,若要保持同步,可能就需要对音频人为增加一定的延时。而根据我的测试,即使不添加rtbufszie参数,虽然会报出错...
推流器ffmpeg
ffmpeg资源推流器,使用方式: 客户端:输入:视频名称,视频必须放在目录下面, 输出:里面有 在电脑端,可以用ffplay 进行播放
ffmpeg 推流命令
1.将摄像头推流到hlsffmpeg -f vfwcap -i &quot;0&quot; -c:v libx264 -preset ultrafast -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1935/hls/homehttp://localhost:8080/hls/home.m3u8 是播放地址2.将视频文件推流到hlsffmp...
ffmpeg转码推流
可以安装ffmpeg,进行配置,可以使用命令行进行音视频的编解码
ffmpeg视频推流
ffmpeg视频推流,里面用map封装好了,只需要填相应的视频流地址以及需要ffmpeg名字就可以用
ffmpeg推流器
av_strerror(errorCode, char *buf, int buf_len); //可以用于转换ffmpeg返回的错误码,转换为字符信息`` int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding rnd); //它的作用是计算 "a * b / c" 的值并分五种方式来取整.
ffmpeg推流命令
常用测试命令: 1、将文件当做直播送至live ffmpeg -re -stream_loop -3 -i D:\shipin\邪恶力量456.mp4 -vcodec libx264 -acodec aac -f flv rtmp://10.125.196.20:50015/live/354?token=d42e1650692712bcc2f168e0fdd31ac7 -re 将文件做
ffmpeg推流
推流本地文件 ffmpeg -re -i /home/centos7/live.wmv -vcodec libx264 -acodec aac -f flv rtmp://192.168.1.103:1935/rtmplive/home libx264 转码器 -vcodec 视频编码 -acodec 音频编码 aac 音频格式 flv 视频格式 Linux推流桌面 f
ffmpeg 直播推流
直播推流, 是很复杂,只是简单的使用也可以, 除了VLC 别人家的底层 应该都使用的是这个
FFmpeg推流
首先确保自已已经安装了nginx + rtmp服务器。 打开配置文件nginx.conf 完成如下配置 1.推流MP4文件 视频文件地址:/Users/xu/Desktop/bangbangbang.mp4 推流拉流地址:rtmp://localhost:1935/rtmplive/home acc:RTMP的音频格式 flv: RTMP的视频格式ffmpeg -re
相关热词 c# login 居中 c# 考试软件 c# 自然语言分析 c# 分段读取文件 c# 泛型反射 c#打断点 c# 时间转多少秒 c# 线程函数加参数 c# modbus 读取 c#查询集合表