Quello che voglio èFFmpeg Come scrivere video in un file
1. Get video packet from stream source
2. Decode it
3. And write that decoded data as video file(avi, mpeg etc)
posso in grado di ottenere pacchetti video da un file (come AVPacket) e anche in grado di decodificare e salvare come immagine. (RAW) (I tutorial di FFmpeg mostrano come farlo). Ma non posso (non so) scrivere i dati video in un file (altro) che può essere riprodotto da lettori multimediali (come VLC).
auguri
Ps: esempi di codice reale sarà grande, se possibile ...
ora faccio test con av_interleaved_write ma ho ottenuto strano errore "timestamp non monotone" (non ho il controllo sui valori pts di sorgente media)
qualche informazione in più
In FFmpeg devo
- Leggere i pacchetti multimediali dalla sorgente multimediale (può essere file reale (.avi, mov) o anche server rtsp).
- Quindi scrivere quei mezzi di pacchetti in un file vero e proprio (.avi fisica, .mov file etc)
ho bisogno di lettore e scrittore. Posso leggere il file sorgente multimediale (anche codificare i pacchetti in base al formato specificato). Ma non posso scrivere sul file ... (che ogni giocatore può giocare)
E alcuni pseudocodice
File myFile("MyTestFile.avi");
while (source ->hasVideoPackets)
{
packet = source->GetNextVideoPacket();
Frame decodedFrame = Decode(packet);
VideoPacket encodedPacket = Encode(decodedFrame);
myFile.WriteFile(encodedPacket);
}
o solo scrivere il file originale senza codificare decodificare
File myFile("MyTestFile.avi");
while (source ->hasVideoPackets)
{
packet = source->GetNextVideoPacket();
myFile.WriteFile(packet);
}
Poi
I can able to open MyTest.avi file with a player.
Bounty Award per la persona che fornisce un collegamento a un buon esempio che implementa questo. usando av_interleaved_write_frame o av_write_frame –
controlla questo link che dimostra la scrittura del file video usando lib di FFMPEG: https://stackoverflow.com/a/43464269/6180077 –