ffmpeg - 如何使用实际捕获帧的时间设置 PTS 字段(使用 FFmpeg)?
问题描述
使用 FFmpeg,我想用实际捕获帧的时间来更新 PTS 字段。我正在使用以下 FFmpeg 命令(“copyts”标志完成这项工作):
ffmpeg -re -f v4l2 -copyts -i /dev/video0 -c:v libx264 -intra -f mpegts -mpegts_copyts 1 udp://192.168.10.199:1234
但是,它只能在很小的帮助下工作......我不得不编辑 v4l2.c 文件:
static int mmap_read_frame(AVFormatContext *ctx, AVPacket *pkt)
{
...
...
...
pkt->pts = buf_ts.tv_sec * INT64_C(1000000) + buf_ts.tv_usec;
pkt->pts &= 0x1ffffffff; /*modified by me*/
pkt->dts = 0; /*modified by me*/
av_log(ctx, AV_LOG_ERROR, "pts: %lld, dts: %lld\n", pkt->pts, pkt->dts);
convert_timestamp(ctx, &pkt->pts);
return pkt->size;
}
当然,我不想修改功能......
任何想法使用“copyts”标志,这样它就可以在不编辑函数 mmap_read_frame() 的情况下工作?
我正在使用最新的 FFmpeg 源。没有我的修改我得到这个:
Output #0, mpegts, to 'udp://192.168.10.55:1234':
Metadata:
encoder : Lavf58.35.100
Stream #0:0: Video: h264 (cedrus264), nv12, 1280x720, q=2-31, 200 kb/s, 10 fps, 90k tbn, 10 tbc
Metadata:
encoder : Lavc58.64.101 cedrus264
frame= 1 fps=0.2 q=-0.0 Lsize= 28kB time=59652:19:24.70 bitrate= 0.0kbits/s speed=4.82e+07x
video:27kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 4.599154%
解决方案
推荐阅读
- python - Leetcode 387 的时间复杂度
- apache-kafka - 无法使用 kafka-avro-console-consumer 读取 avro 消息。SerializationException:未知的魔术字节
- android-studio - 无法确定任务 ':app:bundleReleaseResources' 的依赖关系
- c++ - Why does visual studio print FFFFFFFF for char -1?
- node.js - 使用 node.js 将文件上传到 Azure IoT 中心时出现 BlobSasError
- mysql - go-sql-driver/mysql - inserting a float64 into mariadb (double column) gives unsupported type func() float64, a func
- javascript - DOM背景颜色传播闪烁继承谷歌浏览器中的初始bg颜色使用主题切换来重载body bg颜色
- python - 从数组列表中提取具有特定标签的单词
- string - Edit a text file line by line in bash
- laravel - Laravel - Eloquent Model Relationship with Order By Inner query is not working