Я хочу
1. Get video packet from stream source
2. Decode it
3. And write that decoded data as video file(avi, mpeg etc)
Я могу получить видеопакеты из файла (как AVPacket), а также декодировать и сохранять в виде изображения. (raw) (учебники FFmpeg показывают, как это сделать). Но я не могу (не знаю) записать эти видео данные в файл (другой), который может воспроизводиться медиаплеерами (например, VLC).
Лучшие пожелания
Ps: образцы реального кода будут великолепны, если это возможно...
Теперь я делаю тест с av_interleaved_write, но у меня возникла странная ошибка "non monotone timestamps" (у меня нет контроля над значениями pts медиа-источника)
Дополнительные сведения
В FFmpeg я должен
- Прочитайте мультимедийные пакеты из медиа-источника (это может быть реальный файл (.avi, mov) или даже сервер rtsp).
- Затем напишите эти медиа-пакеты в реальный файл (файл .avi,.mov и т.д.)
Мне нужен читатель и писатель. Я могу читать медиа-исходный файл (даже кодировать пакеты в соответствии с заданным форматом). Но я не могу писать в файл... (который может играть любой игрок)
И некоторый pseudoCode
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.