gpt4 book ai didi

c - FFmpeg 如何将视频写入文件

转载 作者:太空狗 更新时间:2023-10-29 16:39:08 24 4
gpt4 key购买 nike

我想要的是

 1. Get video packet from stream source
2. Decode it
3. And write that decoded data as video file(avi, mpeg etc)

我可以从文件中获取视频数据包(作为 AVPacket),也可以解码并保存为图像。(原始)(FFmpeg 教程展示了如何做到这一点)。但我不能(不知道)将该视频数据写入一个文件(其他)可以被媒体播放器(如VLC)播放。

祝福

Ps:如果可能的话,真正的代码示例会很棒......

现在我用 av_interleaved_write 进行测试,但我得到了奇怪的错误“非单调时间戳”(我无法控制媒体源的 pts 值)

一些额外信息

在 FFmpeg 中我必须

  1. 从媒体源(可能是真实文件(.avi,mov)甚至是 rtsp 服务器)读取媒体包。
  2. 然后将这些媒体数据包写入真实文件(物理.avi、.mov 等文件)

我需要读者和作家。我可以读取媒体源文件(甚至可以根据给定格式对数据包进行编码)。但是我无法写入文件...(任何播放器都可以播放)

还有一些伪代码

File myFile("MyTestFile.avi");

while ( source ->hasVideoPackets)
{
packet = source->GetNextVideoPacket();
Frame decodedFrame = Decode(packet);
VideoPacket encodedPacket = Encode( decodedFrame);
myFile.WriteFile(encodedPacket);
}

或者只写原始文件而不进行编码解码

     File myFile("MyTestFile.avi");

while ( source ->hasVideoPackets)
{
packet = source->GetNextVideoPacket();
myFile.WriteFile(packet);
}

然后

I can able to open MyTest.avi file with a player.

最佳答案

现在FFmpeg主干的doc/examples/transcoding.c中有一个新的视频转码示例,它完全可以满足您的需求:API example for demuxing, decoding, filtering, encoding and muxing.

这是针对当前的 ffmpeg 2.4.4

关于c - FFmpeg 如何将视频写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5107900/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com