当前位置:首页 » 安全设置 » ffmpeg设置网络代理

ffmpeg设置网络代理

发布时间: 2022-08-08 04:42:36

❶ ffmpeg使用方法

FFmpeg程序把-i参数指定的若干文件内容读入到内存,按照输入的参数或者程序默认的参数来处理并且把结果写入到若干的文件中。输入和输出文件可以是计算机文件、管道、网络流、捕获设备等。

如何一边录制视频一边让它在网络上直播

没有办法。

一般都是先录制下来再传上去的。非要一边录制一边上传,电脑配置不好可能都死机了。也没有这样的平台提供。

录屏软件推荐:

1、Captura

一款免费开源的录屏软件,下载之后默认的是英文,需要手动改成中文。

全屏录制、区域录制、窗口录制都是可以的,并且区域录制的时候可以随时更改区域位置和大小,这个也算是比较有特点的。

视频文件支持MP4和AVI两种格式,也支持GIF录制和截图。

不过下载之后可能会出现不能用的情况,需要在设置中下载FFmpeg,下载完成后就能正常使用了。

2、ScreenToGif

一款免费开源的录屏软件,没有任何广告,体积轻巧功能丰富的软件。

有录制屏幕、录制摄像头、录制画板三种模式,我最常用的应该是录像机,拖动边框改变大小之后,就可以录制了。

除了操作简单外,它的编辑功能也很实用,制好之后可以直接编辑,删除帧数、裁剪尺寸、添加马赛克等等,别的GIF录制软件很少有那么全的。

录制好之后可以保存为GIF或者视频,视频支持AVI格式,而且不支持音频录制。

3、迅捷屏幕录像工具

一款好用的国产录屏录制软件,体积只有3M,不会过多的占用电脑内存。

主页设计也非常简洁,录屏需要修改参数的话只要点几下就好,不用层层修改,操作比较方便。

功能还是很丰富的,不管是录制视频、网课还是软件操作类的视频都可以满足。

这里说一下,因为很多设置可以在主页完成,很多人就忽略了设置里的功能,大家比较关心的录制鼠标指针功能就在设置里。

鼠标效果的颜色是可以自己修改的,我的是默认的,颜色还不错,就懒得修改了。

4、oCam

一款免费易上手的的录屏软件,虽然界面的UI有点老,但是还是好用的。

除了支持全面屏录制、区域录制,还支持固定尺寸录制,比如可以直接Youyube的尺寸,还是很方便的。

录制之后的文件可保存为MP4、MKV、M4V、FLV、GIF等格式,能满足我们平时录屏的不同需求。

除了录制视频以外,它还可以录制音频、游戏、GIF、和截图,截图在录屏的过程中也是支持的,功能还是很丰富的。

还有那些文件保存的位置、录制是否包含鼠标等等,都可以自己在设置中进行设置。

5、Bandicam

一款韩国开发的录屏软件,与其他录屏软件的相同的是可以全屏录制、矩形录制和自定义窗口录制,还支持截图。

不同的是,它可以定时录制,包括设置开始时间、结束时间、录制目标等等,一种完全不一样的体验。

在使用前需要将麦克风设置为默认设备,不然可能会出现录制的视频没有声音的情况。

❸ 想要使用ffmpeg来完成如下两个功能: 1.视频截图 2.视频分割功能

http://ffmpeg.org/ffmpeg.html
我最近也在做ffmpeg+ffserver实现流媒体服务器及时转码发送,

代码的功能只能在官网查。。

国内探讨这方面的人太少了。在谷歌搜国外的FFmpeg论坛也有不少东西。

❹ 如何利用VLC或FFMPEG将HTTP的串流转换成RTMP

这个应用主要是将HTTP的串流(非HLS或DASH)转换成RTMP协议传送到Adobe Flash Media Server或Wowza Media Server的媒体服务器。

根据维基网络: “Real Time Messaging Protocol (RTMP) was initially a proprietary protocol developed by Macromedia for streaming audio, video and data over the Internet, between a Flash player and a server. Macromedia is now owned by Adobe, which has released an incomplete version of the specification of the protocol for public use.”

RTMP的协议有以下的参数:

RTMP: 其原始采用TCP port 1935
RTMPS: 将RTMP加载到SSL的安全机制,就类似HTTPS。
RTMPE: 采用Adobe所提供给RTMP所发展的加密版本。
RTMPT: 在RTMP上加挂he RTMP protocol 封装在HTTP请求中,可以穿越防火墙。这是一个很不错的协议,使用TCP端口80和443绕过公司对防火墙。封装的会话可能携带纯RTMP,RTMPS或RTMPE包内。
RTMP 串流
VLC 在 2.0.x版本里可以支持RTMP协议。不过,有些环境却没法执行,例如2.0.2, 2.0.3, 2.0.4, 2.0.6在Windows 2008 Server 64的服务器上确实没法执行。可以开启VLC然后开启网络串流,如“RTMP://aaa.bbb.com:1935/live/串流源“,看看可否开启。主要是VLC 2.0.x采用 ffmpeg/libav的程序库,但是, 有的包装却没法支持。所以必须先做确认。当 librtmp 的支持被启动于 ffmpeg/libav 则RTMPS才可以有功用。

VLC和RTMP的情形主要是用来捕获和转码应用程序生成一个单一的流。是通过另一个应用程序分配给多个客户端。这在Wowza是非常重要的。虽然,Wowza也支持VLC采用UDP/RTP/RTSP方式接收串流,但是,很多情况下是很不稳定的。

LC直接连接到一个的RTMP串流,如WOWZA,不听传入的请求。因此,它是不可能的,以查看的RTMP流直接从VLC。您需要连接到WOWZA,观看流。这是可以用VLC做到的:

$ vlc rtmp://rtmp.server.com:1935/path/to/stream有件事必须提醒的。从VLC将RTMP串流传送给Wowza服务器并不是都很稳定的。有一些时间关系的“虫”会造成Wowza关闭连线。 这样的问题都是与“音频”与”视频“时间戳(Timestamp)有关系的。采用“audio-desync” 选项来整合RTMP也不是个好点子,但是, 可以不断调整与修改。

Webcam RTMP streaming
以下是有关webcam的应用。其他的有采集装置、设备、视频文档等应用。

Windows 的范例
在windows的采集装置都是利用DirectShow这个界面的。在VLC的模块也是用这样的界面,成为“DirectShow“或”dshow”。以下是范例:

$ vlc dshow://"" --sout '#transcode{vcodec=h264,vb=300,fps=25,scale=1,acodec=mp4a,ab=64,channels=2}:std{access=rtmp,mux=ffmpeg{mux=flv},dst=rtmp://rtmp.server.com:1935/path/to/stream}'DirectShow选项也可在QT界面里采用

Linux 的范例
通常在Linux的采集装置上都是采用“video for linux” (v4l2)这个界面。使用指令方式来采集webcam装置(或称为”v4l2 装置”)送出RTMP串流的范例如下:

$ vlc v4l2:// --v4l2-fps=25 --sout '#transcode{vcodec=h264,vb=300,fps=25,scale=1,acodec=mp4a,ab=64,channels=2}:std{access=rtmp,mux=ffmpeg{mux=flv},dst=rtmp://rtmp.server.com:1935/path/to/stream}'这个例子可以自动侦测 v4l2 装置并且选择第一个装置来采集讯号。其他的参数选项如视频标准(PAL, NTSC)、Chroma、宽度、长度等等可以自行设置。必须要注意的是,这些参数设置跟本身的设备有关。 当我门使用debug模式 (-vvv),VLC自身的video for linux (v4l2) 模块会显示出执行时所出现的数值讯息。v4l2 模块提供以下可作为优化的选项:

–v4l2-dev=: 指定所要采集的特定装置
–v4l2-standard=: 使用哪种视频标准,例如: SECAM, PAL, NTSC and more
–v4l2-width=: 视频呈现的宽度(in pixels)
–v4l2-height=: 视频呈现的长度度(in pixels)
以上是描述有关v4l2的参数选项。完整的v4l2模块讯息,可以利用下面的指令查询。

$ vlc -H -p v4l2 --advanced以下是另一个将http串流转码(transcode)到RTMP给Adobe Flash Media Server或Wowza Media Server等视频服务器

cvlc -I mmy http://orginalstreamIPaddress:50014 --sout-mux-caching=5000 --sout='#transcode{venc=x264{keyint=60},vcodec=h264,vb=800}:std{access=rtmp,mux=ffmpeg{mux=flv},dst=rtmp://destinationIPaddress:1935/live/StreamFile}}' &这是用ffmpeg的方法:

ffmpeg -i http://OriginalIPAddress:50010 -vcodec libx264 -vb 800k -acodec libfaac -ab 64k -f flv rtmp://DestinationIPAddress:1935/live/StreamFile

❺ 如何使用FFMPEG+H264实现RTP传输数据

开发环境:
WINDOWS7 32bit
MINGW
eclipse juno cdt
1、首先你要编译好FFMPEG,
a) 方法一:可以去官网下载源码,用MINGW编译(编译时记得支持H264,当然,事先得下载并编译好libx264,视频技术论坛里有很多介绍)
b) 方法二:更加省心省力的方法是,下载别人已经编译好的资源,如ZeranoeFFmpeg的,下载他的dev版本,包含了头文件,链接库等必须的东西,当然,这东西已经是支持H264的了。
2、以下的就是代码部分了:
a) 先声明必要的变量:
AVFormatContext *fmtctx;
AVStream *video_st;
AVCodec *video_codec;
const int FPS = 25; /* 25 images/s */
const char *RDIP = “127.0.0.1”;
unsigned int RDPORT = 5678;
const unsigned int OUTWIDTH = 720;
const unsigned int OUTHEIGHT = 480;
av_register_all();
avformat_network_init();

b) 初始化AV容器
fmtctx = avformat_alloc_context();

c) 获得输出格式,这里是RTP网络流
fmtctx->oformat = av_guess_format("rtp", NULL, NULL);

d)打开网络流
snprintf(fmtctx->filename, sizeof(fmtctx->filename),"rtp://%s:%d",RDIP,RDPORT);
avio_open(&fmtctx->pb,fmtctx->filename, AVIO_FLAG_WRITE)

e) 开始添加H264视频流
video_st = NULL;video_st = add_video_stream(fmtctx, &video_codec, AV_CODEC_ID_H264);

其中,add_video_stream函数为:
add_video_stream(AVFormatContext *oc,AVCodec **codec, enum AVCodecID codec_id)
{
AVCodecContext *c;
AVStream *st;
/* find the video encoder */
*codec = avcodec_find_encoder(codec_id);
st = avformat_new_stream(oc, *codec);
c = st->codec;
avcodec_get_context_defaults3(c, *codec);
c->codec_id = codec_id;
c->width = OUTWIDTH;
c->height = OUTHEIGHT;
c->time_base.den = FPS;
c->time_base.num = 1;
c->pix_fmt = PIX_FMT_YUV420P;
if(oc->oformat->flags & AVFMT_GLOBALHEADER)
c->flags|= CODEC_FLAG_GLOBAL_HEADER;
av_opt_set(c->priv_data, "preset", "ultrafast", 0);
av_opt_set(c->priv_data, "tune","stillimage,fastdecode,zerolatency",0);
av_opt_set(c->priv_data, "x264opts","crf=26:vbv-maxrate=728:vbv-bufsize=364:keyint=25",0);return st;}
// OPEN THE CODE
avcodec_open2(video_st->codec, video_codec, NULL);
/* Write the stream header, if any. */
avformat_write_header(fmtctx, NULL);

f) 现在,就可以不断的编码数据,并发生数据了
AVFrame* m_pYUVFrame = avcodec_alloc_frame();
while(1) //这里设置成无限循环,你可以设置成250,或其他数进行测试,观看结果
{
fill_yuv_image(m_pYUVFrame, video_st->codec->frame_number,OUTWIDTH, OUTHEIGHT);
/* encode the image */
AVPacket pkt;
int got_output = 0;
av_init_packet(&pkt);
pkt.data = NULL; // packet data will be allocated by the encoder
pkt.size = 0;
pkt.pts = AV_NOPTS_VALUE;
pkt.dts =AV_NOPTS_VALUE;
m_pYUVFrame->pts = video_st->codec->frame_number;
ret = avcodec_encode_video2(c, &pkt,frame, &got_output);
if (ret < 0) {fprintf(stderr, "Error encoding video frame: %s\n", av_err2str(ret));
exit(1);
}
/* If size is zero, it means the image was buffered. */
if (got_output)
{
if (c->coded_frame->key_frame)pkt.flags |= AV_PKT_FLAG_KEY;
pkt.stream_index = st->index;
if (pkt.pts != AV_NOPTS_VALUE )
{
pkt.pts = av_rescale_q(pkt.pts,video_st->codec->time_base, video_st->time_base);
}
if(pkt.dts !=AV_NOPTS_VALUE )
{
pkt.dts = av_rescale_q(pkt.dts,video_st->codec->time_base, video_st->time_base);
}
/* Write the compressed frame to the media file. */
ret = av_interleaved_write_frame(oc,&pkt);
}
else {
ret = 0;
}
}

g) Fill_yuv_image函数:
/* Prepare a mmy image. */
static void fill_yuv_image(AVPicture *pict,int frame_index,int width, int height)
{
int x, y, i;
i = frame_index;
/* Y */
for (y = 0; y < height; y++)
for (x = 0; x < width; x++)
pict->data[0][y * pict->linesize[0] +x] = x + y + i * 3;
/* Cb and Cr */
for (y = 0; y < height / 2; y++)
{
for (x = 0; x < width / 2; x++)
{
pict->data[1][y * pict->linesize[1] +x] = 128 + y + i * 2;
pict->data[2][y * pict->linesize[2] +x] = 64 + x + i * 5;
}
}
}

h) 打印sdp信息,仅需一次,打印的sdp信息,用在VLC播放器结束网络视频流时用到
//打印sdp信息
char sdp[2048];
av_sdp_create(&fmtctx,1, sdp, sizeof(sdp));
printf("%s\n",sdp);
fflush(stdout);

i)最后,做一些清理工作
avcodec_free_frame(&m_pYUVFrame);
av_write_trailer(fmtctx);
/* Free the streams. */
for (unsigned int i = 0; i< fmtctx->nb_streams;i++)
{
av_freep(&fmtctx->streams->codec);
av_freep(&fmtctx->streams);
}
if(!(fmtctx->oformat->flags& AVFMT_NOFILE))
/* Close the output file. */
avio_close(fmtctx->pb);
/*free the stream */
av_free(fmtctx);

3、编译代码,记得添加库文件,运行一次代码,不用死循环,设置不用循环,因为是要让他打印出sdp文件的信息。得到sdp信息,比如我精简成如下:
c=IN IP4 127.0.0.1
m=video 56782 RTP/AVP 96
a=rtpmap:96 H264/90000
a=framerate:25
a=fmtp:96 packetization-mode=1

把这些信息保存到一个文本文件,并改名为sdp后缀,如mySDP.sdp。
4、从官网下载VLC播放器,重新运行上述的代码,这一次要循环,具体循环多久,你自己决定,这一次是正式测试了。代码跑起来后,把刚刚的sdp文件用VLC打开,直接把sdp文件拖到VLC播放器中就行了。等待缓冲,就可以看到效果了。
5、代码中剩掉了出错检查部分,请自行添加。
6、关于IP地址,这里是127.0.0.1,是供本机测试,可以改成制定的接受数据的电脑IP地址,或者广播地址IP地址。

❻ 怎样使用ffmpeg函数接收rtsp 网络数据

RTP: Real-time Transport Protocol,实传输协议般用于媒体数据传输
RTCP: RTP Control Protocol实传输控制协议同RTP起用于数据传输监视控制功能
RTSP: Real Time Streaming Protocol,实流协议用于媒体数据流控制播放暂停等
RTP/RTCP相于底层传输层RTSPSIP等层协议起实现视频议视频直播等应用 rtsp发起/终结流媒体(通sdp)
rtp传输流媒体数据
rtcprtp进行控制同步RTSP请求主要DESCRIBE,SETUP,PLAY,PAUSE,TEARDOWN,OPTIONS等顾名思义知道起控制作用
RTP/RTCP实际传输数据协议
RTP传输音频/视频数据PLAYServer发送Client端RECORD由Client发送Server
RTCP包括Sender ReportReceiver Report用进行音频/视频同步及其用途种控制协议 RTSP程SETUP确定RTP/RTCP使用端口PLAY/PAUSE/TEARDOWN始或者停止RTP发送等等 (ixmy)

❼ window下ffmpeg怎么解决 在线等 对其不熟 只想用

1、准备工作:

在干活之前,先把下面五个软件下载下来。

1)MinGW-MSYS Bundle http://sourceforge.net/projects/mingwbundle/

2) SDL http://www.libsdl.org/download-1.2.php

3)yasm http://yasm.tortall.net/Download.html

4)FFmpeg http://www.ffmpeg.org/download.html

5)pthreadgc2.dll http://www.dll-files.com/dllindex/dll-files.shtml?pthreadgc2

2、安装MinGW-MSYS Bundle软件

网上99%的方法都是先安装mingw,再通过网络下载的方法来安装mingw和msys软件。安装好之后,还需要通过烦琐的配置,来搭建编译环境。sourceforge开源平台给大家带来了福音,MinGW-MSYS Bundle软件同时包含了MinGW和MSYS,不需要连接网络进行安装,并且包含了最新的核心组件和库文件。

按照软件默认的安装向导,一路Next,把软件安装好。我是把软件装在了C盘。

3、安装SDL

到上文列出的SDL官方网站地址,下载SDL源码包。咱下载SDL最新的源码包SDL-1.2.15.tar.gz。

到ffmpeg网站,下在ffmpeg源码包,咱下的是最新的版本ffmpeg-1.2.1.tar.gz

把ffmpeg解压缩到C:\msys\1.0\ffmpeg-1.2.1\ffmpeg-1.2.1\ 目录,再把SDL解压缩到C:\msys\1.0\ffmpeg-1.2.1\ffmpeg-1.2.1\SDL-1.2.15目录。

进入SDL目录,分别执行

./configure --prefix=/usr

make

make install

完成SDL的安装。

SDL编译完成之后,生成的bin文件、include文件、lib文件存放在C:\msys\1.0\local\SDL目录下。

通过下面命令导入SDL环境变量.

export PATH="$PATH:/usr/local/SDL/bin:/usr/local/SDL/include/SDL:/usr/local/lib"

否则,在执行ffmpeg configure时,SDL support项显示为no.(注:mingw默认根目录对应与windows下的C:\msys\1.0\目录,可以通过echo $PATH查看当前的系统路径)

4、安装yasm

到yasm官方网站,下载最新的1.2.0版本的yasm源码包Source .tar.gz。
解压到C:\msys\1.0\ffmpeg-1.2.1\yasm-1.2.0目录。

进入yasm目录,分别执行:

./configure --prefix=/usr/local/yasm

make

make install

并通过下面命令导入yasm环境变量。

export PATH="$PATH:/usr/local/yasm/bin"

5、安装ffmpeg

进入ffmpeg代码目录C:\msys\1.0\ffmpeg-1.2.1\ffmpeg-1.2.1\, 分别执行下面命令:

./configure --enable-shared --disable-static --enable-memalign-hack

make

make install

编译完成后,在C:\MinGW\msys\1.0的bin、include和lib文件夹下可以看到编译结果。

make install 之后,ffplay.exe 、ffmpeg.exe等可执行程序安装到C:\MinGW\msys\1.0\bin路径下。