Tag: ffmpeg

FFmpeg如何将video写入文件

我想要的是 1. Get video packet from stream source 2. Decode it 3. And write that decoded data as video file(avi, mpeg etc) 我可以从文件中获取video数据包(如AVPacket),也可以解码并保存为图像。(原始)(FFmpeg教程显示如何操作)。 但我不能 (不知道) 将video数据写入可由媒体播放器(如VLC)播放的文件 (其他)。 最好的祝愿 Ps:如果可能的话,真正的代码样本会很棒…… 现在我用av_interleaved_write进行测试但是我得到了奇怪的错误“非单调时间戳”(我无法控制媒体源的pts值) 一些额外的信息 在FFmpeg,我必须 从媒体源读取媒体数据包(可能是真实文件(.avi,mov)甚至是rtsp服务器)。 然后将这些媒体数据包写入真实文件(物理.avi,.mov等文件) 我需要读者和作家。 我可以读取媒体源文件(甚至根据给定的格式对数据包进行编码)。 但我不能写文件…(任何玩家都可以玩) 还有一些伪代码 File myFile(“MyTestFile.avi”); while ( source ->hasVideoPackets) { packet = source->GetNextVideoPacket(); Frame decodedFrame = Decode(packet); VideoPacket encodedPacket = […]

如何在FFmpeg C / C ++中寻找

有没有人知道如何在FFmpeg中实现秒(或毫秒)的搜索。 我目前有一个使用av_read_frame()运行video帧的循环,我想确定此帧应该以秒为单位的时间。 如果它到达某一点,那么我想寻求video的后续点。 顺便说一下,它不是video播放器,只是处理帧。 我听说我应该可以从数据包中获取dts或pts,但它总是返回0。

如何找出这个ffmpeg错误代码的含义?

我正在使用函数avcodec_decode_video2 。 在流中的编码更改时,它返回-1094995529。 文档仅说明: 出错时返回负值,否则返回使用的字节数,如果没有帧可以解压缩,则返回零。 但似乎没有返回代码或任何其他forms的文档。 错误是什么意思,我如何确定一般?

使用ffmpeg库编译c代码时出错

我在我的新ubuntu 16.04操作系统中安装了ffmpeg库。 当我尝试编译我的c代码时,我得到以下奇怪的错误: /home/widerstand/ffmpeg_build/lib/libavutil.a(hwcontext_vaapi.o): In function `vaapi_device_free’: /home/widerstand/ffmpeg_sources/ffmpeg/libavutil/hwcontext_vaapi.c:861: undefined reference to `XCloseDisplay’ /home/widerstand/ffmpeg_build/lib/libavutil.a(hwcontext_vaapi.o): In function `vaapi_device_create’: /home/widerstand/ffmpeg_sources/ffmpeg/libavutil/hwcontext_vaapi.c:891: undefined reference to `XOpenDisplay’ /home/widerstand/ffmpeg_sources/ffmpeg/libavutil/hwcontext_vaapi.c:896: undefined reference to `vaGetDisplay’ /home/widerstand/ffmpeg_sources/ffmpeg/libavutil/hwcontext_vaapi.c:903: undefined reference to `XDisplayName’ /home/widerstand/ffmpeg_sources/ffmpeg/libavutil/hwcontext_vaapi.c:893: undefined reference to `XDisplayName’ /home/widerstand/ffmpeg_sources/ffmpeg/libavutil/hwcontext_vaapi.c:917: undefined reference to `vaGetDisplayDRM’ /home/widerstand/ffmpeg_sources/ffmpeg/libavutil/hwcontext_vaapi.c:891: undefined reference to `XOpenDisplay’ /home/widerstand/ffmpeg_sources/ffmpeg/libavutil/hwcontext_vaapi.c:893: undefined reference to `XDisplayName’ /home/widerstand/ffmpeg_sources/ffmpeg/libavutil/hwcontext_vaapi.c:898: undefined reference to […]

使用FFMPEG从IP摄像机读取RTCP数据包

我正在使用ffmpeg C库。 我需要拦截来自摄像头的RTCP数据包,以便从发件人报告中获取时间戳。 ffmpeg中是否有任何方法或结构可以提供这些信息? 我完全陷入困境,但我无法解决这个问题。 任何帮助将不胜感激。 提前致谢,

使用libavcodec将音频编码到aac

我正在使用libavcodec(截至3/3/10的最新git)将原始pcm编码为aac(启用了libfaac支持)。 我这样做是通过每次使用codec_context-> frame_size样本重复调用avcodec_encode_audio来实现的。 前四个调用成功返回,但第五个调用永远不会返回。 当我使用gdb中断时,堆栈已损坏。 如果我使用audacity将pcm数据导出到.wav文件,那么我可以使用命令行ffmpeg转换为aac而没有任何问题,所以我确定这是我做错了。 我写了一个小的测试程序来复制我的问题。 它从文件中读取测试数据,可在此处获取: http : //birdie.protoven.com/audio.pcm (签名16位LE pcm约2秒) 如果我直接使用FAAC,我可以完成所有工作,但如果我可以使用libavcodec,那么代码会更清晰,因为我也编码video,并将两者都写入mp4。 ffmpeg版本信息: FFmpeg version git-c280040, Copyright (c) 2000-2010 the FFmpeg developers built on Mar 3 2010 15:40:46 with gcc 4.4.1 configuration: –enable-libfaac –enable-gpl –enable-nonfree –enable-version3 –enable-postproc –enable-pthreads –enable-debug=3 –enable-shared libavutil 50.10. 0 / 50.10. 0 libavcodec 52.55. 0 / 52.55. 0 libavformat […]

使用FFmpeg libavformat记录RTSP流

我正试图用FFmpeg libavformat记录来自Axis相机的RTSP流。 我可以从文件中获取video,然后将其保存到另一个文件,这没关系。 但是摄像机发送奇怪的数据,FPS为100,摄像机每隔4帧发送一次,因此结果FPS约为25.但是libavformat设置数据包dts / pts为90000 fps(默认值?),新文件流有100fps。 结果是一小时video,只有100帧。 这是我的代码 #include #include #include #include #include int main(int argc, char** argv) { AVFormatContext* context = avformat_alloc_context(); int video_stream_index; av_register_all(); avcodec_register_all(); avformat_network_init(); //open rtsp if(avformat_open_input(&context, “rtsp://195.200.199.8/mpeg4/media.amp”,NULL,NULL) != 0){ return EXIT_FAILURE; } if(avformat_find_stream_info(context,NULL) < 0){ return EXIT_FAILURE; } //search video stream for(int i =0;inb_streams;i++){ if(context->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO) video_stream_index = […]

SDL2.0替代SDL_Overlay

所以我一直在尝试在ffmpeg上学习以下教程: http : //dranger.com/ffmpeg/tutorial02.html 但是,当我尝试使用gcc编译时,我得到以下输出: root:/Users/mbrodeur/Downloads/HACKATHON CONTENT/Tutorials-> gcc -o tutorial02 tutorial02.c -lavutil -lavformat -lavcodec -lz -lavutil -lm -lswscale -D_THREAD_SAFE -lSDL2 tutorial02.c: In function ‘main’: tutorial02.c:41: error: ‘SDL_Overlay’ undeclared (first use in this function) tutorial02.c:41: error: (Each undeclared identifier is reported only once tutorial02.c:41: error: for each function it appears in.) tutorial02.c:41: error: ‘bmp’ undeclared (first […]

使用FFMPEG库接收RTSP流

我使用RTSP在LAN流video上有一个IPCamera。 我已经能够使用ffplay命令成功捕获并显示它: ffplay rtsp://admin:123456@192.168.2.50:7070 (带身份validation) 所以我想使用ffmpeg库在C / C ++中使用编程实现相同的function。 我想这一定是可能的。 那么让我说两个简单的问题: 如何使用FFMPEG库在C / C ++程序中接收流? (只是提供一些URL /教程,因为谷歌没有帮助) 如何显示收到的video? (在这里,一些很好的URL指导我)。