- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试使用 libavcodec 将视频编码为 H264
ffmpeg::avcodec_encode_video(codec,output,size,avframe);
返回一个错误,我没有正确设置 avframe->pts 值。
我尝试将其设置为 0,1、AV_NOPTS_VALUE 和 90khz * framenumber 但仍然出现错误 non-strictly-monotonic PTS
ffmpeg.c 示例使用 ffmpeg::av_rescale_q() 设置 packet.pts,但这仅在您对帧进行编码后调用!
当与 MP4V 编解码器一起使用时,avcodec_encode_video() 会自行正确设置 pts 值。
最佳答案
我遇到了同样的问题,通过在调用 avcodec_encode_video 之前计算 pts 解决了这个问题,如下所示:
//Calculate PTS: (1 / FPS) * sample rate * frame number
//sample rate 90KHz is for h.264 at 30 fps
picture->pts = (1.0 / 30) * 90 * frame_count;
out_size = avcodec_encode_video(c, video_outbuf, video_outbuf_size, picture);
从 this helpful blog post 窃取的解决方案
(注意:将采样率更改为 khz,以 hz 表示帧之间的时间太长,可能需要使用此值 - 这里不是视频编码专家,只是想要一些有用的东西,而这个确实有用)
关于c++ - ffmpeg::avcodec_encode_video 设置 PTS h264,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6603979/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我正在寻找一种方法来检测带有图像点的消息 SCTE35 点。你有什么建议吗? 谢谢你的帮助 最佳答案 到目前为止我已经成功使用了DVBInspector对于这个问题。 关于ffmpeg - 如何使用
当从具有视频和音频流的媒体文件中提取片段而不重新编码(-c 复制)时,指定的请求查找和结束时间很可能不会精确地落在源中的关键帧上。 在这种情况下,ffmpeg 将抓取每个轨道最近的关键帧,并使用不同的
我的应用程序需要在输入的两个(或多个)流之间切换,而只有一个输出(您可以将其视为流多路复用器)。来自输入的帧被解码,然后由于覆盖的东西再次重新编码。 因此,为了安排 AVFrame PTS,我在编码帧
我有一个带有视频和元数据流的 TS。视频已正确设置 PTS 值,而元数据没有(ffprobe 为每个提供 N/A)。但是,元数据包在流中的位置正确。 有没有一种方法可以根据元数据包在流中的位置为它们分
有人可以简要解释一下首字母缩略词 PTS 在视频编码方面的含义吗? 最佳答案 演示文稿时间戳。我不能说它比维基页面更好,在这里找到:http://en.wikipedia.org/wiki/Prese
我正在尝试在输入流上重置 pts 并创建新的 pts 并将流发布到 RTMP。 ffmpeg -re -f lavfi -i "movie=${SOURCE}:s=0+1[out0][out1];[0
假设我有一个来自现有 HLS 的 .ts 文件,我只是想调整它的大小。例如,创建第二个较低分辨率的流,可以在带宽不足时切换。 ffmpeg -i video1080_1.ts -vf "scale=1
我有一个视频,其中包含超出视频数据末尾的一些音频数据包: $> ffprobe -show_packets video.mp4 ... ... ... [PACKET] codec_type=vide
我有一个 mov我需要得到结尾的文件pts对于音频和视频流。我可以通过执行以下操作(手动)来做到这一点: ffprobe -show_packets file.mov 这给了我这样的输出(当然还有更多
我有以下文件: version: 1 n_points: 68 { 55.866278 286.258077 54.784191 315.123248 62.148364 348.908294 83
据我所知,PCR 以 42 位存储,PTS 以 33 位存储在 mpegts 容器中 所以, Max value for PCR is 2^42 = 4398046511104 Max value
我有一个IP摄像机,可以发送8000hz采样率配置的音频和H264视频。 我做了一个程序,从这个IP摄像机生成TS文件,它在VLC,除了iPhone的Android Media Player,Mac
尝试通过 ffmpeg 了解一些音频/视频同步问题,我注意到以下内容。运行此代码 while (av_read_frame(formatCtx, &packet) >= 0) { if (pac
我在从 avi 转码为 mp4(x264) 时遇到了 fps 问题。最终问题出在 PTS 和 DTS 值上,因此在 av_interleaved_write_frame 函数之前添加了第 12-15
我有一个 MPEG2 TS 文件,现在我有兴趣从每个图片帧中提取 PTS 信息。我知道 PTS 是用 33 位描述的,包括 3 个标记位。但是我不知道如何将这个位域转换为更容易理解的形式(秒,毫秒)。
我有一个使用 STDIN 3 的终端 (/proc/xxxx/fd/0 ->/dev/pts/3) 所以如果(在另一个终端)我这样做: echo 'do_something_command' > /d
我正在使用 ffprobe 测试带有 H264 视频的 mp4 文件。 我正在使用以下命令来获取帧信息。 ffprobe -i -show_frames -select_streams v 我得到以
我们有一些处理视频的 FFmpeg 信封。 视频的树首帧为:B -> B -> I 如下图: PTS 和 DTS 对第一帧返回负数: 我们有一些代码会跳过某个时间点以下的帧(第一帧为 0)。 是否可以
我一直在使用从 python 脚本调用的 ffmpeg 命令对文件文件夹进行转码: ffmpeg -y -i in_file.mov -loglevel warning -codec:v libx26
我是一名优秀的程序员,十分优秀!