Autore Topic: Come impostare codifica h264 high (NO baseline) e major brand isom (NO 3gp4)?  (Letto 560 volte)

Offline OmarLuigi

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Tab
  • Sistema operativo:
    Windows 7
Altra domandina per voi... Questa volta abbastanza tecnica e noiosa...
Ho realizzato una app che si collega a vari webserver dell'azienda per cui sono tirocinante... Visualizza alcune risorse ed, inoltre, da la possibilità di scattare foto e girare video e caricarli sul server attraverso un apposito servizio di webserving.
Tutto funziona correttamente, solo una cosa mi da problemi...
Questa azienda ha un sito internet da cui può visualizzare alcune risorse, comprese le foto ed i video che carico con il mio programma... In particolare i video sono visualizzati attraverso un Adobe Flash Player....

Maledetto player! I video, per come l'invio, arrivano correttamente al server, e da esso si possono correttamente visualizzare attraverso quicktime o mediaplayer... Inutile dire che i video da me girati sono correttamente visualizzabili anche su pc locale o sul galaxy!
Al player però non piacciono, e quando ne apro uno attraverso esso, lo carica e parte, visualizzando però schermo nero accompagnato dall'audio corretto.

Aprite l'immagine allegata.
I dati inerenti ad "a.mpeg4" sono quelli di uno dei video che viene correttamente visualizzato con il player, mentre quelli di "b.mpeg4" sono quelli inerenti uno dei video che ho caricato io sul server.
Notiamo che le caratteristiche sottolineate sono le principali diverse.

Sto passando parecchie ore a cercare un qualche modo per rendere uguali in tutto e per tutto le caratteristiche dei due file... Ma quello che vedete in figura è il massimo che sono riuscito a fare.

Posto il codice rilevante:
Codice (Java): [Seleziona]
[...]
VideoCamera = new MediaRecorder();
[...]
    private void initRecorder()
    {   VideoCamera.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
        VideoCamera.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
        VideoCamera.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        VideoCamera.setVideoSize(640, 480);
        VideoCamera.setVideoFrameRate(30);
        VideoCamera.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
        VideoCamera.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
    }

Notiamo che baseline, high (e main) sono due possibili modalità di funzionamento di H264... A quanto pare il galaxy di default usa baseline... Mentre io vorrei high!
Per invece passare da 3gp4 a isom non so che pesci pigliare!

Qualche idea?!

Graaaaaaaaaaaaaaaaazie!  O:-)

PS: il player accetta anche file di estensione .flv... Quindi un alternativa potrebbe essere quella di impostare il MediaRecorder per memorizzare questo tipo di video... Ma non sembra un formato supportato in android... O no!?
« Ultima modifica: 23 Giugno 2011, 16:23:18 CEST da OmarLuigi »