2016-03-23 35 views
0

yılında mux ham h264 benim çerçeveleri ve presentationTimeUs ham h264 verilerini var ve mp4 kapta verileri mux istiyorum. MediaMuxer dışında ffmpeg veya herhangi bir kütüphaneyle nasıl yapabilirim?android - mp4 konteyner

Güncelleme: Ben presentatoinTimeUs

+0

Sesler ffmpeg .mp4 muxing yapmak için ffmpeg kitaplığı kullanma örnekleri için? – fadden

+0

Sen MediaCodec ile H264 için [] bayt kodlanmış – Mulvya

+0

out.mp4' ffmpeg -f h264 -i raw.264 'deneyebilirsiniz ama 4.3 android eklenen çünkü ben (mp4 kapta muxing verileri için MediaMuxer kullanmak istemedi). Dosyaya ham h264 yazdığımda, iyi çalmadığı ve çok hızlı oynamadığı ve bu komutun çalıştırıldığı zaman: ffmpeg -f h264 -i raw.264 out.mp4 sadece mp4 kapsayıcısına video koyar ve hiçbir şeyi çözmez. Fpmpeg komutunun, mp4 dosyasında, presentationTimeUs veya gereksinim duyduğu herhangi bir meta veriyi ayarlamak da dahil olmak üzere, yalnızca bir h264 çerçevesi yazması gerekiyor. –

cevap

0

Sen ffmpeg veya herhangi kütüphane ile ya ilişkili meta-bilgi olmadan keyfi H264 ham verileri, yazamıyor dahil mp4 kaba sadece bir çerçevenin h264 verileri yazmak için bir komut gerekir. MP4 gibi bir kap, bir oyuncunun bu ham verilerin (ör. Her bir çerçevenin PTS, kodek konfigürasyonu, film boyutu, renk formatı, vb.) Ve ham sıkıştırılmış video akışında bulunmayan daha fazla şeyin nasıl ele alınacağını bilmesi için var olur. Daha sonra bir kompresörün bit akışını analiz etmek gerekirse

Bununla birlikte, ters yapabilirsiniz:

Eğer aradığınız gibi -i file.mp4 -f h264 out.h264

+0

MediaCodec ile h264'e h264 kodladım ancak mp4 kapsayıcısında mugsing verileri için MediaMuxer kullanmak istemedim (çünkü Android 4.3'ten eklenmiştir). Dosyaya ham h264 yazdığımda, iyi çalmadığı ve çok hızlı oynamadığı ve bu komutun çalıştırıldığı zaman: ffmpeg -f h264 -i raw.264 out.mp4 sadece mp4 kapsayıcısına video koyar ve hiçbir şeyi çözmez. Fpmpeg komutunun, mp4 dosyasında, presentationTimeUs veya gereksinim duyduğu herhangi bir meta veriyi ayarlamak da dahil olmak üzere, yalnızca bir h264 çerçevesi yazması gerekiyor. –

+1

Kare hızını zorlamak için "-r 24" eklemeyi deneyin. Bir konteynere tek bir ENCODED kare ham veri ekleyemez ve ffmpeg veya başka bir araç kullanarak zaman damgasını da belirtemezsiniz. Bu ayrıntı seviyesi, ffmpeg'in ne yapabileceğinin çok altındadır (yani, bir konteynırdan/formattan diğerine aktarım veya yeniden kodlama). Bu çerçeve, kendi ayarlarıyla kodlanmış bir ana kare (veya değil) olabilir. Ham bir tampona sahip olmak, nasıl kodlandığı ve bir kapta bir araya getirilip getirilemeyeceği hakkında neredeyse hiçbir şey söylemiyor. Bu yüzden MediaMuxer bir BufferInfo'ya ihtiyaç duyar ve dahili olarak parça numarasını tutar, vb. –

+0

bu yüzden ffmpeg'e ihtiyacım yok, fakat bunun için kütüphane olmalı. –