当前位置: 首页 > 知识库问答 >
问题:

如何配置AVStream使用FFmpeg编写29.97fps文件

葛和志
2023-03-14

我试图用ffmpeg来编写mkv文件,用FFV1和FLAC编码,用NTSC格式,但是VLC和媒体信息中显示的帧率不正确。

下面是我如何创建和配置输出格式上下文:

AVOutputFormat  *outputFormat = av_guess_format("matroska", NULL, NULL);

//Allocate an AVFormatContext for an output format.
int err = avformat_alloc_output_context2(&_formatContext, outputFormat, NULL, filename);

//Specify the codec of the outputFormat
_formatContext->oformat->video_codec = _videoCodecContext->codec_id;

//Create AVStream 
AVStream *videoStream = avformat_new_stream(_formatContext, NULL);  

//FrameDuration.value : 1001, FrameDuration.timescale : 30000
videoStream->time_base = (AVRational){ (int)_frameDuration.value, (int)_frameDuration.timescale };  //1001 30000

//Copy video stream parameters to the muxer
err = avcodec_parameters_from_context(videoStream->codecpar, _videoCodecContext);

//Open file for writing
err = avio_open(&_formatContext->pb, filename, AVIO_FLAG_WRITE);            

if (err >= 0) {
    //Write header
    err = avformat_write_header(_formatContext, &options);
}
// Rescale output packet timestamp values from codec to stream timebase
av_packet_rescale_ts(inAVPacket, *inTimeStamp, [outputStream stream]->time_base);

共有1个答案

尉迟正奇
2023-03-14

设置avg_frame_rate可以解决这个问题...

videoStream->avg_frame_rate = _videoCodecContext->framerate;
 类似资料:
  • 有了Web框架和ORM框架,我们就可以开始装配App了。 通常,一个Web App在运行时都需要读取配置文件,比如数据库的用户名、口令等,在不同的环境中运行时,Web App可以通过读取不同的配置文件来获得正确的配置。 由于Python本身语法简单,完全可以直接用Python源代码来实现配置,而不需要再解析一个单独的.properties或者.yaml等配置文件。 默认的配置文件应该完全符合本地开

  • 我正在尝试使用ffmpeg逐帧编写视频,如下所述:http://zulko.github.io/blog/2013/09/27/read-and-write-video-frames-in-python-using-ffmpeg/ 然而,我总是得到一个OSError:[Errno 22]无效参数。我在Windows7上使用Python 3.4。代码如下: 任何帮助都非常感谢。 编辑:根据此处的要求

  • 问题内容: 我有一个使用maven作为构建工具的应用程序。 我正在使用Maven配置文件从不同的配置文件设置不同的属性。 我想做的是将maven中的所有活动配置文件也移植到spring活动配置文件中,以便我可以在bean签名()中引用它们。但我不确定该怎么做。 例如:考虑以下Maven设置 假设我在未指定任何其他配置文件的情况下运行maven,而我希望spring具有和 配置为活动配置文件。 问题

  • 我有、和 我正在使用maven命令它不起作用,并且我无法使用选择开发配置文件。如何选择? 文档中说可以工作,我尝试了但没有工作。在我的项目中,我使用它运行,但是如果我使用选择dev配置文件,控制台会打印这么多日志并警告我从来没有看到使用过,并告诉我 那么如何解决两个问题呢?谢谢~