
Recherche avancée
Autres articles (29)
-
Gestion générale des documents
13 mai 2011, parMé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, parUne 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 2011Le 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 MrOrgonDespite 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-javaimport 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 CDYI 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 tottenI 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();
}
}