2013-07-06 4 views
9

Wymagania:

Chcę rozwijać aplikację, która ma wideo recoding z pauza i wznowienie funkcji.

Próbowałem:

I opracowali aplikację upto recoding wideo przy użyciu widoku powierzchni.

już obecnie badane:

już przeszukiwane wszystkie strony, a także like ale do tej pory nie mogę uzyskać rozwiązanie i że wiem, że nie jest opcja domyślna w systemie Android i na przerwie wznowić wideo i wiedzieć, łącząc wideo, możemy go osiągnąć.

czego potrzebuję:

Proszę udostępnić mi czy jest jakiś plugin zewnętrzne dostępne dla niej, prowadź mnie, jak to osiągnąć, jeśli już osiągnięty, a także udostępnić mi żadnych Resouce że związane, jak scalić film ..i Szukano ale brak właściwego zasobu widziałem Proszę podzielić się niczego, jeśli okaże ..Jak dodać pauzę i wznowić funkcję podczas recoding wideo w android

Odpowiedz

5

wreszcie znaleźć odpowiedź :)
i badań o FFmpeg wydaje się bardziej głęboko I jeszcze kilka dni, kiedy się wokół niego kopie, ale nie mogę uzyskać
odpowiedniego zasobu dla ffmepg i próbuję użyć mp4parser lib i pomyślnie ukończyłem moje wymaganie.

Kod Na łączenie kilku wideo

public class MergeVide extends AsyncTask<String, Integer, String> { 

    @Override 
    protected void onPreExecute() { 
     progressDialog = ProgressDialog.show(Video.this, 
       "Preparing for upload", "Please wait...", true); 
     // do initialization of required objects objects here 
    }; 

    @Override 
    protected String doInBackground(String... params) { 
     try { 
      String paths[] = new String[count]; 
      Movie[] inMovies = new Movie[count]; 
      for (int i = 0; i < count; i++) { 
       paths[i] = path + filename + String.valueOf(i + 1) + ".mp4"; 
       inMovies[i] = MovieCreator.build(new FileInputStream(
         paths[i]).getChannel()); 
      } 
      List<Track> videoTracks = new LinkedList<Track>(); 
      List<Track> audioTracks = new LinkedList<Track>(); 
      for (Movie m : inMovies) { 
       for (Track t : m.getTracks()) { 
        if (t.getHandler().equals("soun")) { 
         audioTracks.add(t); 
        } 
        if (t.getHandler().equals("vide")) { 
         videoTracks.add(t); 
        } 
       } 
      } 

      Movie result = new Movie(); 

      if (audioTracks.size() > 0) { 
       result.addTrack(new AppendTrack(audioTracks 
         .toArray(new Track[audioTracks.size()]))); 
      } 
      if (videoTracks.size() > 0) { 
       result.addTrack(new AppendTrack(videoTracks 
         .toArray(new Track[videoTracks.size()]))); 
      } 

      BasicContainer out = (BasicContainer) new DefaultMp4Builder() 
        .build(result); 

      @SuppressWarnings("resource") 
      FileChannel fc = new RandomAccessFile(String.format(Environment 
        .getExternalStorageDirectory() + "/wishbyvideo.mp4"), 
        "rw").getChannel(); 
      out.writeContainer(fc); 
      fc.close(); 
     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     String mFileName = Environment.getExternalStorageDirectory() 
       .getAbsolutePath(); 
     mFileName += "/wishbyvideo.mp4"; 
     filename = mFileName; 
     return mFileName; 
    } 

    @Override 
    protected void onPostExecute(String value) { 
     super.onPostExecute(value); 
     progressDialog.dismiss(); 
     Intent i = new Intent(Video.this, VideoUpload.class); 
     i.putExtra("videopath", value); 
     i.putExtra("id", id); 
     i.putExtra("name", name); 
     i.putExtra("photo", photo); 
     startActivity(i); 
     finish(); 
     } 
} 


liczba to nic innego jak liczyć plików wideo.

Powyższy kod umożliwia połączenie większej ilości wideo i wysłanie ostatecznego kodu do innej czynności, w której zdecydowałem się wyświetlić podgląd wideo.
przed użyciem powyższego kodu, upewnij się, że używasz mp4parser lib.

+0

Hej Karthi, próbowałem użyć tego kodu. Zgłasza błąd i zaleca mnie rzucić z DataSource, po odlaniu rzuca ClassCastException na tej linii: inMovies [i] = MovieCreator.build (. (DataSource) nowy FileInputStream ( ścieżki [i]) getChannel()); Potem zastąpił drogę bez kanału i FileInputStream jak jest przyjmowanie bezpośredniej plik ciąg też, że szwów film też, ale nie powiedzie się, aby grać i łączy nieprawidłowo. Czy możesz mi powiedzieć, że wersja słoika, którego użyłeś, spróbuję zastąpić tym słojem. Powiedz mi też, jak nie przesyłać DataSource. Uprzejmie proszę dać mi znać. Dzięki. – iabhi

+0

Cóż mam wyjątek „java.io.IOException: Nie można dołączyć Mp4TrackImpl {handler =«vide»} do Mp4TrackImpl {handler =«vide»} Ponieważ ich Przykładowy opis Boksy różnią:” dodając ten. if (videoTracks.size()> 0) { wynik.addTrack (nowy AppendTrack (wideoTracks .toArray (nowa ścieżka [videoTracks.size()]))); } –

+0

@karthi możesz nam powiedzieć, co to jest BasicContainer? – duggu

Powiązane problemy