Tag: ffmpeg

我在哪里可以找到C / C ++ FFmpeg广泛的教程?

我想使用ffmpeg(在其c库forms中)将video分成更多部分,重新​​组合它们并对最终结果进行编码。 基本的东西。 但是很难找到关于此的文档或提示。 我应该在哪里寻求建议?

无法将libavformat / ffmpeg与x264和RTP同步

我一直在研究一些流媒体软件,它使用H.264通过网络从各种摄像机和流中获取实时信息。 为了实现这一点,我直接使用x264编码器(带有“zerolatency”预设)并提供NAL,因为它们可用于libavformat以打包到RTP(最终是RTSP)。 理想情况下,此应用程序应尽可能实时。 在大多数情况下,这一直运作良好。 不幸的是,存在某种同步问题:客户端上的任何video播放似乎都显示了一些平滑的帧,然后是短暂的暂停,然后是更多的帧; 重复。 此外,似乎有大约4秒的延迟。 我尝试过的每一个video播放器都会出现这种情况:Totem,VLC和基本的gstreamer管道。 我把它煮成了一个小小的测试用例: #include #include #include #include #include #include #define WIDTH 640 #define HEIGHT 480 #define FPS 30 #define BITRATE 400000 #define RTP_ADDRESS “127.0.0.1” #define RTP_PORT 49990 struct AVFormatContext* avctx; struct x264_t* encoder; struct SwsContext* imgctx; uint8_t test = 0x80; void create_sample_picture(x264_picture_t* picture) { // create a frame to […]

检测图像中的十字架

我正在开发一个程序来检测探测设备的尖端并分析探测过程中的颜色变化。 输入/输出机制或多或少地到位。 我现在需要的是事物的实际肉体:检测提示。 在下面的图像中,提示位于十字架的中心。 我想在一些阈值之后将BFS应用于图像,但后来卡住了,不知道如何继续。 然后我在阅读之后转向OpenCV,它提供了图像中的特征检测。 然而,我对这里使用的大量概念和技术感到不知所措,对如何继续进行无知。 我正确地看着它吗? 你能给我一些指示吗? 从短video中提取的图像 阈值设置为95的二进制版本

ffmpeg av_seek_frame

我试图使用ffmpeg的av_seek_frame方法在电影中寻找,但是我在确定如何生成时间戳以寻找时遇到最大问题。 假设我想要向前或向后搜索x个帧,我知道电影当前在哪个帧,我将如何进行此操作?

停止/取消执行FFmpeg命令

有FFmpeg Static(二进制)可用于Android,我们可以在执行某些操作时停止/取消一些FFmpeg执行(命令) https://github.com/WritingMinds/ffmpeg-android-java/issues/33 但我想使用FFmpeg共享库和JNI,我找到了下一个库https://github.com/IljaKosynkin/FFmpeg-Development-Kit (它工作正常) 但没有选择停止执行FFmpeg命令(或杀死进程) 我们run那里使用Java本地run方法来开始执行一些命令: Java: https : //github.com/IljaKosynkin/FFmpeg-Development-Kit/blob/master/JNI/app/src/main/java/com/example/ilja/jni/VideoKit.java#L57 然后在C中我们调用FFmpeg的main方法: C: https : //github.com/IljaKosynkin/FFmpeg-Development-Kit/blob/master/JNI/app/jni/videokit.c#L41 在调用Java run和C main方法后,如何停止/取消某些FFmpeg执行?

使用管道将文件i / o引导到另一个进程

刚开始学习/使用管道,并想知道如何将应用程序的文件输出路由到管道,以便其他应用程序可以使用它。 确切地说,我想将ffmpeg的输出(转码后的video数据)传输到我的应用程序中以使用它。 如果我创建一个像/tmp/out.mp4这样的命名管道并将其作为输出文件名提供给ffmpeg,ffmpeg将尝试再次创建此文件,可能会覆盖我的管道(或类似的东西)。 如何应对这种情况? 是否有任何通用的方法可以透明地转移应用程序的文件IO? (我正在尝试编写一个video流服务器(仅供学习和娱乐),它将像avi这样的格式转换为流式友好格式,如mpeg4,在流媒体中,我发现ffmpeg对于此目的来说太慢了,它需要2秒才能转码1秒video:( 这是我的设置/ PC或ffmpeg的问题是否缓慢? ) PS:顺便说一下,我在C中写这个。

由ffmpeg和SDL制作的奇怪声音

我正在关注原始dranger.com/ffmpeg教程的更新版本, url为https://github.com/mpenkov/ffmpeg-tutorial 第三步(源代码: https : //github.com/mpenkov/ffmpeg-tutorial/blob/master/tutorial03.c )增加声音,但产生的声音很奇怪。 当音频流是AAC时,我只听到静电。 当音频流是MP3时,我听到声音非常高的音调。 怎么了?

如何通过Alchemy gcc编译ffmpeg?

所以我创建了ffmpeg配置文件,使其成为纯C(独立于平台,但理论上只是) 所以我的配置很简单(0.6.1,0.6.3测试): ./configure –disable-doc –disable-ffplay –disable-ffprobe –disable-ffserver –disable-avdevice –disable-avfilter –disable-pthreads –disable-everything –enable-muxer=flv –enable-encoder=flv –enable-encoder=h263 –disable-mmx –disable-shared –prefix=bin/ –disable-protocols –disable-network –disable-optimizations –disable-debug –disable-asm –disable-stripping 在Linux上进行编译将在4个库中解析,总大小为1 mb。 但我需要使用自定义编译器编译ffmpeg(开源gcc模拟称为Adobe Alchemy ,让我们将C / c ++编译到Flash中) 它在标准化过程中给出了几乎每个文件的错误: Array @ARGV missing the @ in argument 1 of shift() at /home/rupert/Downloads/alchemy-ubuntu-v0.5a/achacks/gcc line 218. cc1: error: unrecognized command line option “-Wtype-limits” cc1: error: […]

使用ffmpeg安装Open-CV时出错

我正在尝试在Ubuntu 11.04上安装Open-CV库。 我按照InstallationGuide中的所有说明进行操作。 但是在成功安装后我意识到我没有FFMPEG支持,因为在我的配置文件中禁用了FFMPEG : Video I/O: — DC1394 1.x: NO — DC1394 2.x: YES — FFMPEG: NO — codec: YES — format: YES — util: YES — swscale: NO — gentoo-style: YES — GStreamer: YES — UniCap: NO — PvAPI: NO — V4L/V4L2: Using libv4l — Xine: NO 所以我尝试在安装FFMEPG之后重建所有内容,如此处所述 。 使用该指令配置安装后 cmake -D CMAKE_BUILD_TYPE=RELEASE […]

在libav中读取dumepd RTP流

嗨,我需要一些帮助/指导,因为我陷入了研究的困境。 问题: 如何在API(通过编程)或控制台版本中使用gstreamer或av​​lib(ffmpeg)转换RTP数据。 数据 我有来自RTP / RTCP的RTP转储,因此我可以获得文件中每个RTP数据包的精确启动和停止。 这是一个H264video流转储。 数据是这样的,因为我需要通过libcurl获取RTCP / RTP交错流(我现在正在做) 状态 我曾尝试使用ffmpeg来使用纯RTP数据包,但似乎通过控制台或编程使用rtp涉及在ffmpeg中“启动”整个rtsp / rtp会话业务。 我已经停在那里,暂时我没有更深入地追求这条道路。 我想这可能与情人级别的RTP API如ff_rtp_parse_packet()我对这个lib太新了直接做到这一点。 然后就是gstreamer它有更多的function可以在没有编程的情况下完成它,但暂时我无法弄清楚如何将它传递给我的RTP转储。 我还试图做一点诡计,并通过socat / nc将转储流转到udp端口,并通过ffplay以sdp文件作为输入来监听,似乎有一些进展rtp至少得到识别,但是对于socat来说,有大量的数据包丢失(数据发送得太快了吗?),最后数据不可视化。 当我使用nc时 ,video严重失误,但至少没有那么多收到错误。 无论如何,数据都无法正确显示。 我知道我可以“手动”拆分数据但是想法是通过某种类型的库来实现,因为最终还会有第二个带有音频的流,它必须与video一起复用。 我很感激有关如何解决这个问题的任何帮助。 谢谢。