Recherche avancée

Médias (0)

Mot : - Tags -/interaction

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (29)

  • Gestion générale des documents

    13 mai 2011, par

    MédiaSPIP ne modifie jamais le document original mis en ligne.
    Pour chaque document mis en ligne il effectue deux opérations successives : la création d’une version supplémentaire qui peut être facilement consultée en ligne tout en laissant l’original téléchargeable dans le cas où le document original ne peut être lu dans un navigateur Internet ; la récupération des métadonnées du document original pour illustrer textuellement le fichier ;
    Les tableaux ci-dessous expliquent ce que peut faire MédiaSPIP (...)

  • La file d’attente de SPIPmotion

    28 novembre 2010, par

    Une file d’attente stockée dans la base de donnée
    Lors de son installation, SPIPmotion crée une nouvelle table dans la base de donnée intitulée spip_spipmotion_attentes.
    Cette nouvelle table est constituée des champs suivants : id_spipmotion_attente, l’identifiant numérique unique de la tâche à traiter ; id_document, l’identifiant numérique du document original à encoder ; id_objet l’identifiant unique de l’objet auquel le document encodé devra être attaché automatiquement ; objet, le type d’objet auquel (...)

  • Pas question de marché, de cloud etc...

    10 avril 2011

    Le vocabulaire utilisé sur ce site essaie d’éviter toute référence à la mode qui fleurit allègrement
    sur le web 2.0 et dans les entreprises qui en vivent.
    Vous êtes donc invité à bannir l’utilisation des termes "Brand", "Cloud", "Marché" etc...
    Notre motivation est avant tout de créer un outil simple, accessible à pour tout le monde, favorisant
    le partage de créations sur Internet et permettant aux auteurs de garder une autonomie optimale.
    Aucun "contrat Gold ou Premium" n’est donc prévu, aucun (...)

Sur d’autres sites (5324)

  • Android : how to film a video before extracting its audio

    20 février 2017, par MrOrgon

    Despite many searches, I haven’t been able to develop a Android prototype able to film a video before extracting its audio as .wav in a separate activity.

    I have developed so far a simple filming activity which relies on Android’s Camera application. My strategty was to put the video’s Uri as Extra to the next activity, before using FFMPEG, but I can’t make the transition between Uri and FFMPEG. Indeed, I’m a fresh Android Studio beginner, so I still am not sure about what concept to use.

    Here’s my code for the video recording activity.

    import android.net.Uri;
    import android.os.Build;
    import android.os.Bundle;
    import android.provider.MediaStore;
    import android.widget.Toast;
    import android.widget.VideoView;

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.nio.channels.FileChannel;

    import static java.security.AccessController.getContext;


    public class RecordActivity extends Activity{

    static final int REQUEST_VIDEO_CAPTURE = 0;

    VideoView mVideoView = null;
    Uri videoUri = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       mVideoView = (VideoView) findViewById(R.id.videoVieww);
       setContentView(R.layout.activity_record);

       Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);

       Toast.makeText(RecordActivity.this,         String.valueOf(Build.VERSION.SDK_INT) , Toast.LENGTH_SHORT).show();

       takeVideoIntent.putExtra(MediaStore.EXTRA_OUTPUT, videoUri);
       if (takeVideoIntent.resolveActivity(getPackageManager()) != null) {
           startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE);
       }

    }


       @Override
       protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
           if (requestCode == REQUEST_VIDEO_CAPTURE && resultCode == RESULT_OK) {
               videoUri = intent.getData();

               Intent intentForFilterActivity = new Intent(RecordActivity.this, FilterActivity.class);
               intentForFilterActivity.putExtra("VideoToFilter", videoUri.getPath());
               startActivity(intentForFilterActivity);

           }
       }
    }

    Here’s the the code for the audio extraction activity. It is called "FilterActivity", as its final aim is to filter outdoor noise using additional functions. I’m using WritingMinds’ implementation of FFMPEG.
    https://github.com/WritingMinds/ffmpeg-android-java

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.test.ActivityUnitTestCase;
    import android.widget.Toast;

    import com.github.hiteshsondhi88.libffmpeg.ExecuteBinaryResponseHandler;
    import com.github.hiteshsondhi88.libffmpeg.FFmpeg;
    import  com.github.hiteshsondhi88.libffmpeg.exceptions.FFmpegCommandAlreadyRunningException;



    public class FilterActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_filter);

       Intent intentVideo = getIntent();
       String pathIn = intentVideo.getStringExtra("VideoToFilter");

       FFmpeg ffmpeg = FFmpeg.getInstance(FilterActivity.this);
       try {
           String[] cmdExtract = {"-i " + pathIn + " extracted.wav"};
           ffmpeg.execute(cmdExtract, new ExecuteBinaryResponseHandler() {

               @Override
               public void onStart() {}

               @Override
               public void onProgress(String message) {}

               @Override
               public void onFailure(String message) {
                   Toast.makeText(FilterActivity.this, "Failure !", Toast.LENGTH_SHORT).show();
               }

               @Override
               public void onSuccess(String message) {}

               @Override
               public void onFinish() {}
           });
       } catch (FFmpegCommandAlreadyRunningException e) {
       }
    }


    }

    and I always get the "Failure !" message.

    Some parts of the code may look extremely bad. As as written previously, I’m a real Android Studio beginner.

    Do you have any correction that could work ? Or even just a strategy ?

    Thank you in advance !

  • Python read byte array of avi header

    25 février 2020, par CDY

    I am trying to get rtsp data from server using ffmpeg and convert it to avi format then temporary saving in the memory.

    I wish that I can query 2 minutes data then drop first minute only remain and save second minute. As a result, I need to get the avi header firstly.

    However, I don’t know so much about the avi format, so not 100% for sure about my code which get right avi header.

    The header I got is like that :

    b'RIFF\xff\xff\xff\xffAVI LIST&\x01\x00\x00hdrlavih8\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

    and the code I used as following :

    class CCTVReader():
    def __init__(self, q, in_stream, name):
       super().__init__()
       self.isHeader = True
       self.q = q
       self.name = name
       self.startTime = datetime.datetime.timestamp(datetime.datetime.now())
       self.in_stream = in_stream
       self.chunk_size = 1024
       self.command = ["ffmpeg",
                       "-c:v", "h264",    
                       "-rtsp_transport", "tcp",
                       "-i", in_stream,    
                       "-c:v", "copy",    
                       "-an", "-sn",      
                       "-f", "avi",
                       "-"]

    def run(self):
       pipe = sp.Popen(self.command, stdout=sp.PIPE, bufsize=1024**3)

       while True:
           if self.isHeader:
               data = pipe.stdout.read(56)
               if len(data) < 56:
                   break
               self.isHeader = False
           else:
               if datetime.datetime.timestamp(datetime.datetime.now()) - self.startTime >= 60 * 2:
                   break
               data = pipe.stdout.read(self.chunk_size)      
           self.q.put((data, datetime.datetime.timestamp(datetime.datetime.now())))



       print("finish", self.in_stream, time.time())

    Could I just put this header with second minute data together and write a avi format video stream ?

  • Receiving RTP stream - AudioStream, AudioGroup

    21 février 2020, par totten

    I would like to listen an RTP audio stream, however the voice has little gaps in it - not continues. What may be the solution ? Am I missing something on Receiver(android) side or Streamer(ffmpeg) side ?

    I’m using ffmpeg to stream RTP audio,

    ffmpeg -f lavfi -i aevalsrc="sin(400*2*PI*t)" -ar 8000 -vcodec pcm_u8 -f rtp rtp://192.168.0.15:41954 (port changes.)

    And here is my related android code :

    AudioStream audioStream;
    AudioGroup audioGroup;
    @Override
    public void onStart() {
       super.onStart();
       StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitNetwork().build();
       StrictMode.setThreadPolicy(policy);
       AudioManager audio = (AudioManager)getSystemService(AUDIO_SERVICE);
       audio.setMode(AudioManager.MODE_IN_COMMUNICATION);
       audioGroup = new AudioGroup();
       audioGroup.setMode(AudioGroup.MODE_ECHO_SUPPRESSION);
       InetAddress inetAddress;
       try {
           inetAddress = InetAddress.getByName("192.168.0.15");
           audioStream = new AudioStream(inetAddress);
           audioStream.setCodec(AudioCodec.PCMU);
           audioStream.setMode(RtpStream.MODE_NORMAL);
           InetAddress inetAddressRemote = InetAddress.getByName("192.168.0.14");
           audioStream.associate(inetAddressRemote, 6000);
           ((TextView)findViewById(R.id.tv_port)).setText("Port : " + String.valueOf(audioStream.getLocalPort()));
           audioStream.join(audioGroup);
       }
       catch ( UnknownHostException e ) {
           e.printStackTrace();
       }
       catch ( SocketException e ) {
           e.printStackTrace();
       }
    }