FFmpeg Как записать видео в файл

Я хочу

 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 , но у меня странная ошибка "немонотонные временные метки" (у меня нет контроля над значениями 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.
13
задан Mixaz 1 December 2014 в 22:19
поделиться