2015-04-30 39 views
5

Mam nagi plik h.264 (z aparatu raspberry pi) i chciałbym go zawinąć jako MP4. Nie muszę tego odtwarzać, edytować, dodawać ani usuwać niczego ani uzyskiwać dostępu do pikseli.Jak owinąć plik h.264 jako mp4 na iOS

Wiele osób pytało o kompilację ffmpeg na iOS lub przesyłanie strumieniowe danych na żywo. Jednak ze względu na brak łatwego tłumaczenia pomiędzy linią poleceń ffmpeg i jego iOS budować, to jest bardzo trudne dla mnie, aby dowiedzieć się, jak wdrożyć tę prostą komendę:

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

nie specjalnie zależy, czy tak się stanie przez ffmpeg, avconv lub AVFoundation (lub coś innego). Wygląda na to, że nie powinno to być trudne na urządzeniu.

Odpowiedz

2

Nie jest to trudne, ale wymaga trochę pracy i dbałości o szczegóły. Oto mój najlepszy przypuszczenie:

  1. czytać PPS/SPS z input.h264
  2. wysokości ekstrakt & szerokości od SPS
  3. generować AVCC nagłówek z PPS/SPS
  4. utworzyć AVAssetWriter z typem pliku AVFileTypeQuickTimeMovie
  5. utworzyć AVAssetWriterInput
  6. dodać AVAssetWriterInput jak AVMediaTypeVideo z wysokości & szerokości do AVAsse tWriter
  7. odczytać z pliku input.h264 (najprawdopodobniej w formacie załącznika B) jeden NAL na raz
  8. skonwertuj NAL z twojego input.h264 z prefiksu kodu początkowego (0 0 1; Załącznik B) do wielkości ustalonej (format mp4)
  9. drop NALS typu AU, PPS, SPS
  10. stworzyć CMSampleBuffer dla każdego NAL i dodać CMFormatDescription z AVCC nagłówku
  11. reanimować znaczniki czasu zaczynające zero stosując znaną frame rate (uważaj, jeśli klatki są zreorganizowane)
  12. dołączyć swoją CMSampleBuffer do AVAssetWriterInput
  13. goto 7 aż do EOF
+1

Dzięki @Markus, który wygląda jak silne przegląd konceptualnej. Czy mógłbyś wyjaśnić akronimy i, jeśli to możliwe, podać nieco więcej pomocy związanej z systemem iOS? – buildsucceeded

+1

Czy możesz podać mi przykładowy kod działający z podanymi krokami? –