2015-04-30 17 views
5

Tôi có tệp h.264 trần (từ một máy ảnh mâm xôi pi) và tôi muốn bọc nó dưới dạng mp4. Tôi không cần phải chơi, chỉnh sửa, thêm hoặc xóa bất kỳ thứ gì hoặc truy cập pixel.Cách gói một tệp h.264 dưới dạng mp4 trên iOS

Rất nhiều người đã hỏi về cách biên dịch ffmpeg cho iOS hoặc phát trực tuyến dữ liệu. Nhưng với việc thiếu dịch dễ dàng giữa các dòng lệnh ffmpeg và iOS của nó xây dựng, nó rất khó khăn cho tôi để tìm hiểu làm thế nào để thực hiện lệnh đơn giản này:

ffmpeg -i input.h264 -vcodec copy out.mp4

Tôi không đặc biệt quan tâm đến việc này xảy ra thông qua ffmpeg, avconv hoặc AVFoundation (hoặc cái gì khác). Nó chỉ có vẻ như nó không phải là-khó khăn này để làm trên một thiết bị.

Trả lời

2

Nó không phải là khó nhưng đòi hỏi một số công việc và sự chú ý đến từng chi tiết. Dưới đây là dự đoán tốt nhất của tôi:

  1. đọc PPS/SPS từ input.h264
  2. chiết xuất cao & chiều rộng của bạn từ SPS
  3. tạo tiêu đề AVCC từ PPS/SPS
  4. tạo AVAssetWriter với loại tập tin AVFileTypeQuickTimeMovie
  5. tạo một AVAssetWriterInput
  6. thêm AVAssetWriterInput làm AVMediaTypeVideo với chiều cao & chiều rộng của bạn vào AVAsse tWriter
  7. đọc từ đầu vào của bạn.h264 (có thể ở định dạng Phụ lục B) một NAL tại một thời điểm
  8. chuyển đổi NAL từ đầu vào.h264 từ mã bắt đầu được đặt trước (0 0 1; Phụ lục B) kích thước tiền tố (định dạng mp4)
  9. thả NALs kiểu AU, PPS, SPS
  10. tạo CMSampleBuffer cho mỗi NAL và thêm một CMFormatDescription với tiêu đề AVCC
  11. timestamps tái tạo bắt đầu từ một số không sử dụng được biết đến tỷ lệ khung hình (xem ra nếu khung của bạn được sắp xếp lại)
  12. thêm CMSampleBuffer của bạn để AVAssetWriterInput bạn
  13. goto 7 đến EOF
+1

Cảm ơn @Markus, trông giống như một cái nhìn tổng quan về khái niệm mạnh mẽ. Bạn có thể giải thích các từ viết tắt và nếu có thể, hãy cung cấp thêm một chút trợ giúp cụ thể cho iOS không? – buildsucceeded

+1

Bạn có thể vui lòng cung cấp cho tôi mã mẫu làm việc với các bước nhất định không? –

Các vấn đề liên quan