草庐IT

$ffmpeg、ffplay

全部标签

c++ - 解码音频和视频并处理两个流——ffmpeg、sdl、opencv

我的目标是独立处理mpeg-2文件的音频和视频,并在两个流上保持同步。视频的持续时间最长约为1或2分钟。首先,关注这个post“opencv用于阅读视频(并执行该过程),ffmpeg用于音频,SDL用于播放两者”听起来很完美。考虑到最近的ffmpeg命名更改,我对代码做了一些修改。在64位机器上用cmake编译是可以的。打开编解码器时出现错误“不支持的编解码器[3]”。代码如下。其次,我寻找处理两个流程同步性的代码。#include"opencv/highgui.h"#include"opencv/cv.h"#ifndefINT64_C#defineINT64_C(c)(c##LL)#

c++ - 确定 FFMPEG 的 AVFrame 中数据 [0] 的大小

我正在尝试使用以下代码行将视频帧的AVFrame->data[0]分配给uint8_t*缓冲区:size_tsizeOfFrameData=mpAVFrameInput->linesize[0]*mpAVFrameInput->height;memcpy(mFrameData,mpAVFrameInput->data[0],sizeOfFrameData);我想知道这是否是将帧数据复制到FFMPEG中的uint8_t*变量的正确方法? 最佳答案 获取缓冲区大小:intavpicture_get_size(enumAVPixelFor

c++ - ffmpeg 创建 RTP 流

我正在尝试使用ffmpeg(libavcodec/libavformat-MSVCx64和Zeranoe构建)进行编码和流式传输这是我的代码,主要改编自编码示例,删除了错误处理#include"stdafx.h"extern"C"{#include#include#include#include#include#include#include#include}#pragmacomment(lib,"avformat.lib")#pragmacomment(lib,"avutil.lib")#pragmacomment(lib,"avcodec.lib")intmain(){avcode

c++ - 如何使用 FFmpeg C API 对 H.264 视频进行编码,然后使用媒体播放器打开输出?

我正在尝试使用FFMPEGCAPI对H.264视频进行编码。我已经成功编译并执行了decoding/encodingexample由FFMPEG提供。我面临的问题是示例创建的.mpg文件(使用AV_CODEC_ID_MPEG1VIDEO编码)有效。Windows会创建缩略图和所有内容。另一方面,.h264(用AV_CODEC_ID_H264编码)文件没有。当我尝试在VLC中播放文件时,播放/暂停按钮只是闪烁,Windows中没有缩略图,什么也没有。在编码过程中,libx264报告如下:[libx264@004b81a0]usingcpucapabilities:MMX2SSE2Fast

c++ - ffmpeg Bmp 到 yuv : Crash at sws_scale

上下文:我有一系列连续的位图,我想将它们编码成一种轻型视频格式。我使用ffmpeg版本2.8.3(内部版本here),在qt5、qtIDE和msvc2013适用于win32。问题:我的代码在sws_scale()处崩溃(有时在avcodec_encode_video2()处)。当我探索堆栈时,崩溃事件发生在sws_getCachedContext()。(我只能看到这些ffmpeg构建的堆栈)。我只使用这些ffmpeg库(来自Qt.pro文件):LIBS+=-lavcodec-lavformat-lswscale-lavutilswscale是哪个bug。这是代码:voidnewVide

c++ - 如何从 ffmpeg 中打开的文件中获取流信息?

我正在尝试使用ffmpeg读取视频文件。我有对应于它的旧版本的工作代码,并开始尝试升级到最新的构建版本,将所有那些已弃用的函数替换为它们的实际类似物。但是我遇到了一个问题。似乎没有检索到任何流,并且视频加载停止在轨道中。这是我使用的代码://Openvideofileif(avformat_open_input(&pFormatCtx,filename.toStdString().c_str(),NULL,NULL)!=0)returnFILE_NOT_OPENED;//Couldn'topenfile//Retrievestreaminformationif(avformat_fin

ios - 在 iOS 中使用 ffmpeg 进行 hls 直播

我是ffmpeg的新手,我正在尝试创建直播应用程序(HLS),我想要直播而不是VOD。我可以通过终端使用ffmpeg并从m4v创建.ts文件,但我不知道如何在iPhone中实现同样的事情。我的做法是在iPhone端创建.ts文件,然后发送到服务器。我不确定这种方法是否正确,如果这种方法正确,我可以创建.ts文件,否则什么是正确的方法? 最佳答案 如果你想从iPhone创建.ts文件,你需要FFmpegWrapper图书馆,然后这样做,NSString*outputPath=[documentDirectoryPathstringBy

【FFMPEG源码分析】从ffplay源码摸清ffmpeg框架(二)

demux模块从前面一篇文章中可以得知,demux模块的使用方法大致如下:分配AVFormatContext通过avformat_open_input(…)传入AVFormatContext指针和文件路径,启动demux通过av_read_frame(…)从AVFormatContext中读取demux后的audio/video/subtitle数据包AVPacketAVFormatContext*ic=avformat_alloc_context();avformat_open_input(&ic,filename,null,null);while(1){AVPacket*pkt=av_pa

ios - 如何在 ffmpeg 中使用 librtmp?

我找到了一个可以使用ffmpeg流式传输rtmp协议(protocol)的库,然后我使用--enable-librtmp编译了ffmpeg。但下一步会是什么?我找不到任何使用此功能的示例? 最佳答案 现在可以通过抽象的ffmpeg接口(interface)打开rtmpurl了:AVFormatContext*s=NULL;intret=avformat_open_input(&s,"rtmp://server[:port][/app][/playpath][keyword=value]...",NULL,NULL);

android - 适用于 Android 和 IOS 的 FFMPEG HLS 流

我正在尝试使用ffmpeg和apache2.2流式传输到移动设备,但我没有成功。我使用此命令创建fragment和播放列表:ffmpeg-ihttp://x.x.x.x:8080-codec:vlibx264-r25-pix_fmtyuv420p-profile:vbaseline-level3-b:v500k-s640x480-codec:aaac-strictexperimental-ac2-b:a128k-movflagsfaststart-flags-global_header-map0-fhls-hls_time10-hls_list_size5-hls_allow_cach