gì tôi muốn làFFmpeg Làm thế nào để viết đoạn video vào một tập tin
1. Get video packet from stream source
2. Decode it
3. And write that decoded data as video file(avi, mpeg etc)
tôi có thể có thể nhận được gói video từ một tập tin (như AVPacket) và cũng có thể giải mã và lưu dưới dạng ảnh. (Thô) (Hướng dẫn FFmpeg hiển thị cách thực hiện). Nhưng tôi không thể (không biết) ghi dữ liệu video đó vào một tệp (khác) có thể được phát bởi trình phát đa phương tiện (chẳng hạn như VLC).
nhất Wishes
Ps: mẫu Bất mã sẽ là tuyệt vời nếu có thể ...
Bây giờ tôi thực hiện thử nghiệm với av_interleaved_write nhưng tôi đã nhận lỗi lạ "timestamps không đơn điệu" (tôi không có kiểm soát qua điểm giá trị của nguồn phương tiện truyền thông)
Một số phụ Info
trong FFmpeg tôi phải
- Đọc các gói phương tiện từ nguồn phương tiện (có thể là tệp thực (.avi, mov) hoặc thậm chí máy chủ rtsp).
- Sau đó viết những gói tin phương tiện truyền thông vào một tập tin thực (.avi vật lý, .mov file etc)
Tôi cần người đọc và nhà văn. Tôi có thể đọc các tập tin nguồn phương tiện truyền thông (thậm chí mã hóa các gói tin theo định dạng nhất định). Nhưng tôi không thể ghi ra tập tin ... (mà bất kỳ người chơi có thể chơi)
Và một số giả
File myFile("MyTestFile.avi");
while (source ->hasVideoPackets)
{
packet = source->GetNextVideoPacket();
Frame decodedFrame = Decode(packet);
VideoPacket encodedPacket = Encode(decodedFrame);
myFile.WriteFile(encodedPacket);
}
Hoặc Chỉ cần viết các tập tin ban đầu mà không cần mã hóa giải mã
File myFile("MyTestFile.avi");
while (source ->hasVideoPackets)
{
packet = source->GetNextVideoPacket();
myFile.WriteFile(packet);
}
Sau đó
I can able to open MyTest.avi file with a player.
Giải thưởng tiền thưởng cho người cung cấp liên kết đến một ví dụ điển hình thực hiện điều này. sử dụng av_interleaved_write_frame hoặc av_write_frame –
kiểm tra liên kết này minh họa tệp video bằng cách sử dụng FFMPEG libs: https://stackoverflow.com/a/43464269/6180077 –