- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我注意到对于某些视频文件,AVPacket 结构中返回的 PTS 时间戳不是从 0 开始,而是在一段时间后。例如。在 3.128 左右。我测试的 99% 的视频文件都有从 0 开始的 PTS 时间戳,但很少有文件有一些奇怪的时间戳从 3.128 或 1.2 或其他什么开始。我该如何处理这些案件?我是否应该只记录第一个数据包的 PTS 时间戳,然后从所有后续时间戳值中减去此 PTS 以获得基于 0 的 PTS 值?或者我应该如何处理这些非基于 0 的时间戳?感谢您的帮助!
最佳答案
Libavcodec/avformat 只是为您提供文件中的数据。不幸的是(或者幸运的是,这取决于您的观点),许多文件格式不需要时间戳从 0 开始。事实上,如果多个文件各自构成较长流的一部分并且您让它们从其他值开始可能很重要希望能够以非破坏性方式将它们重新组合在一起。
如果您想要基于 0 的时间戳,那么就像您所说的那样,您需要保存最低/第一个时间戳并从所有时间戳中减去该值。但是请注意,对于一些非常丑陋的格式(如 DVD 视频),时间戳在内容中间重置是很常见的,这甚至可能导致您的方法得到负时间戳。如果您预计自己可能会处理此类内容,则需要检测不连续性并对其进行修补。上次我使用 avcodec/avformat,它们没有自动为您执行此操作的功能,但它们现在可以了。如果您认为您可能需要,我会调查一下。
关于c - AVCodec PTS 时间戳不从 0 开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10570685/
我一直在尝试从格式 SubRip 转码字幕(.srt) 到 MPEG4 Timed Text将它们混合到一个 MP4 容器中,其中已经有音频和视频。使用 ffmpeg 从命令行执行此操作微不足道: f
我正在尝试在 FFMPEG 库中构建示例代码 我在我的项目中添加 libavcode.h , libavcode.a 并将标题搜索 usr/local/include 和库搜索设置为 usr/loca
我需要知道如何使用 avcodec/avformat 查找视频文件中的总帧数。 我有一个项目,我从使用 ffmpeg 库解码视频流的其他人那里获得。我需要改进一些功能来逐帧搜索,所以我的第一个任务是简
我正在尝试使用 libav 将 MP4 文件转换为 MP3 文件。基本上想达到什么ffmpeg -i filename.mp4 filename.mp3做。我找到了 this官方例子。但是当我使用输入
我一直在到处寻找一个选项来强制 avcodec 为其 AVFrame 数据使用未对齐的内存。 根据像素格式,AVFrame->data 的水平面可能会填充额外的数据以与内存对齐以提高性能。 例如:每个
我在解码 HEVC 时遇到问题使用 avcodec 编码的视频。 修改源代码的一行允许解码mpeg1这不是我需要的。 谢谢 #include #include #include #include
我从这个站点下载了控制 AR Drone 的项目: https://github.com/Ruslan-B/AR.Drone 这个项目很旧。然后我从这个站点下载了 ffmpeg.autogen 库 h
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
我将视频数据包从视频流写入缓冲区。然后我尝试将它们写入文件。 av_init_packet( &pkt ); int bufer_size=250;
我正在使用 avcodec 在 linux 上解码一些 hevc 剪辑,avcodec 库是从源包 ffmpeg-4.3.1 构建的,带有命令: configure --prefix=/mnt/pro
我正在使用带有 avcodec 的 OPUS 对声音进行编码并使用我自己的协议(protocol)对其进行流式传输。 到目前为止,它适用于 MP2 编解码器,但是当我切换到 OPUS 时,我遇到了这个
我注意到对于某些视频文件,AVPacket 结构中返回的 PTS 时间戳不是从 0 开始,而是在一段时间后。例如。在 3.128 左右。我测试的 99% 的视频文件都有从 0 开始的 PTS 时间戳,
我正在使用 AVCodec 作为视频流解码器,想知道是否可以通过 FFMPEG 将硬件加速与 hwaccel 一起使用?还是已经默认使用了?我已经列出了可用的编解码器,但我不明白如何在我的代码中实现它
今天在CodeBlocks中运行ffmpeg示例c程序,报错: invalid conversion from int to avcodecid[-fpermissive] 我把部分代码放在这里: s
我正在尝试编写一个应用程序来获取输入视频并将其裁剪为方形视频并忽略音频流。因为如果使用命令性能不佳,我正在尝试使用 libavcodec 和 libavformat 来完成它。但是输出不能被任何视频播
我正在尝试使用 gcc 执行 tutorial01.c,我在同一个文件夹中有 gcc 和 tutorial01.c 以及 libavcodec 和 libavformat 及其相关文件,它给了我这个错
我已经安装了ffmpeg-devel使用 dnf,但包含 "libavcodec/avcodec.h" , g++ 告诉我 a.cpp:1:10: fatal error: libavcodec/av
我正在使用这个项目https://github.com/apc-llc/moviemaker-cpp 我想知道如何在我的视频上设置固定帧率 现在,当我输入 30FPS 作为 c->framerate
我正在使用 C/C++ 中的 FFMpeg 库开发媒体播放器。 This source使用以下代码查找文件中视频流的解码器: pCodec=avcodec_find_decoder(pCodecCtx
我尝试在我的ubuntu1604平台上调试ffmpeg,但它总是说找不到头文件,但实际上我确实在编译代码中包含了头文件。 错误信息如下: error message 这是我的测试代码: #inclu
我是一名优秀的程序员,十分优秀!