
Recherche avancée
Médias (91)
-
999,999
26 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Audio
-
The Slip - Artworks
26 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Texte
-
Demon seed (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
-
The four of us are dying (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
-
Corona radiata (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
-
Lights in the sky (wav version)
26 septembre 2011, par
Mis à jour : Avril 2013
Langue : English
Type : Audio
Autres articles (103)
-
MediaSPIP 0.1 Beta version
25 avril 2011, parMediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
The zip file provided here only contains the sources of MediaSPIP in its standalone version.
To get a working installation, you must manually install all-software dependencies on the server.
If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...) -
MediaSPIP version 0.1 Beta
16 avril 2011, parMediaSPIP 0.1 beta est la première version de MediaSPIP décrétée comme "utilisable".
Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
Pour avoir une installation fonctionnelle, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...) -
Amélioration de la version de base
13 septembre 2013Jolie sélection multiple
Le plugin Chosen permet d’améliorer l’ergonomie des champs de sélection multiple. Voir les deux images suivantes pour comparer.
Il suffit pour cela d’activer le plugin Chosen (Configuration générale du site > Gestion des plugins), puis de configurer le plugin (Les squelettes > Chosen) en activant l’utilisation de Chosen dans le site public et en spécifiant les éléments de formulaires à améliorer, par exemple select[multiple] pour les listes à sélection multiple (...)
Sur d’autres sites (10378)
-
FFMPEG h.264 stream to VLC from raw YUV444 produces black screen
30 novembre 2018, par GerbGerbNot sure if this fits better here or over on Super User, so please redirect if here is the wrong place.
I am piping raw YUV444 640x480 frames to ffmpeg from inside a C++ program using stdout. ffmpeg encodes them using h.264 and streams the video via UDP to an IP of my choice.
When I am not streaming and saving the video as -mp4 file, everything works - But when I stream over the network and try to receive in VLC, the stream is received and the playing timer under the video screen runs, but the image is black, none of the video is displayed. Also I have some crackling sounds on my audio output.
My FFMPEG settings are as follows :
ffmpeg -y -loglevel info -f rawvideo -r 25 -c:v rawvideo -pix_fmt yuv444p -s 640x480 -i - -c:v libx264 -preset superfast -framerate 25 -f mpegts udp://192.168.150.1:20001
in VLC, I just use "open network stream" with udp ://@:20001. The port is open, I tested it with a simple dummy sender/receiver.
Almost the same cli arguments for the video recording lead to a perfectly playable video when writing to a file and downloading it :ffmpeg -y -loglevel info -f rawvideo -r 25 -c:v rawvideo -pix_fmt yuv444p -s 640x480 -i - -c:v libx264 -preset superfast -framerate 25 video.mp4
If I try to stream the same video using
ffmpeg -i video.mp4 -v 0 -vcodec mpeg4 -f mpegts udp://192.168.150:20001
the screen remains black.
VLC debug output changes between different runs, because other modules are selected, so I assume stream type recognition goes haywire. But why ?
What am I doing wrong ?
Here the ffmpeg log
and the VLC log -
Changing Audio Volume using FFmpeg Android Error
23 août 2018, par katarotyI am using FFmpeg and I need to change the volume of the
Audio
.This is the
command
that should change the volume of the audio :ffmpeg -i input.wav -filter:a "volume=1.5" output.wav
I read from somewhere that it had to overwrite the file if it already existed so either one had to delete the file or use
-y
. When I tried to do it without the-y
command it never got toonSuccess()
or ´onFailure(), but it always printed out theonStart()
message.String[] cmdy = { "-i -y" , pcmtowavTempFile.toString(), "-af", "volume=5", pcmtowavTempFile.toString()};
ffmpeg.execute(cmdy, new ExecuteBinaryResponseHandler() {
@Override
public void onStart() {
System.out.println("ayy: onStart");
}
@Override
public void onSuccess(String message) {
System.out.println("ayy: onSuccess");
super.onSuccess(message);
}
@Override
public void onFailure(String message) {
System.out.println("ayy: onFailure " + message);
super.onFailure(message);
}
});At the moment I get this error :
ffmpeg version n4.0-39-gda39990 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 4.9.x (GCC) 20150123 (prerelease)
configuration: --target-os=linux --cross-prefix=/root/bravobit/ffmpeg-android/toolchain-android/bin/arm-linux-androideabi- --arch=arm --cpu=cortex-a8 --enable-runtime-cpudetect --sysroot=/root/bravobit/ffmpeg-android/toolchain-android/sysroot --enable-pic --enable-libx264 --enable-ffprobe --enable-libopus --enable-libvorbis --enable-libfdk-aac --enable-libfreetype --enable-libfribidi --enable-libmp3lame --enable-fontconfig --enable-libvpx --enable-libass --enable-yasm --enable-pthreads --disable-debug --enable-version3 --enable-hardcoded-tables --disable-ffplay --disable-linux-perf --disable-doc --disable-shared --enable-static --enable-runtime-cpudetect --enable-nonfree --enable-network --enable-avresample --enable-avformat --enable-avcodec --enable-indev=lavfi --enable-hwaccels --enable-ffmpeg --enable-zlib --enable-gpl --enable-small --enable-nonfree --pkg-config=pkg-config --pkg-config-flags=--static --prefix=/root/bravobit/ffmpeg-android/build/armeabi-v7a --extra-cflags='-I/root/bravobit/ffmpeg-android/toolchain-android/include -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all' --extra-ldflags='-L/root/bravobit/ffmpeg-android/toolchain-android/lib -Wl,-z,relro -Wl,-z,now -pie' --extra-cxxflags=
libavutil 56. 14.100 / 56. 14.100
libavcodec 58. 18.100 / 58. 18.100
libavformat 58. 12.100 / 58. 12.100
libavdevice 58. 3.100 / 58. 3.100
libavfilter 7. 16.100 / 7. 16.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 1.100 / 5. 1.100
libswresample 3. 1.100 / 3. 1.100
libpostproc 55. 1.100 / 55. 1.100
Unrecognized option 'i -y'.Which clearly states that it does not recognize option
i -y
, but also as I said earlier then if I remove the-y
it never gets toonSuccess()
oronFailure()
.help me to find a solution. Thanks.
-
How to decrease the latency of the RTP streaming with ffmpeg in Android ?
24 août 2018, par Douglas Lima DantasI’m creating a App that do a RTP streaming. It uses a ParcelFileDescriptor pipe pair, where a MediaRecorder writes in the pipe while the ffmpeg receives the audio from the pipe and sends by RTP.
In my desktop, using the same wifi router, I receive the RTP stream using ffplay, and it has a delay between 5s 10s.
I tried capture audio using ffmpeg in Android, but itsn’t possible. I tried to use ffplay -fflags nobuffer, use MIC as source, change the encoder, etc.
I need the lowest delay possible. How can I do it ?
The code :
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
MediaRecorder mediaRecorder;
AudioRecord record;
MediaPlayer mediaPlayer;
ParcelFileDescriptor[] pipePair;
ParcelFileDescriptor pipeRead;
ParcelFileDescriptor pipeWrite;
Process ffmpegProc;
// Requesting permission to RECORD_AUDIO
private boolean permissionsAccepted = false;
private String [] permissions = {
Manifest.permission.RECORD_AUDIO,
Manifest.permission.INTERNET,
Manifest.permission.ACCESS_NETWORK_STATE
};
private static final int REQUEST_PERMISSIONS = 200;
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode){
case REQUEST_PERMISSIONS:
permissionsAccepted = grantResults[0] == PackageManager.PERMISSION_GRANTED;
break;
}
if (!permissionsAccepted ) finish();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActivityCompat.requestPermissions(this, permissions, REQUEST_PERMISSIONS);
TextView hello = (TextView) findViewById(R.id.hello);
hello.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "Clicado",Toast.LENGTH_SHORT)
.show();
copiarFFMpeg();
}
});
}
private void executarFFMpeg(final String[] cmd, ParcelFileDescriptor read) {
try {
ffmpegProc = Runtime.getRuntime().exec(cmd);
} catch (IOException e) {
e.printStackTrace();
}
(new Thread(new Runnable() {
@Override
public void run() {
try {
InputStream inStream = ffmpegProc.getInputStream();
InputStreamReader sReader = new InputStreamReader(inStream);
BufferedReader bufferedReader = new BufferedReader(sReader);
String line;
while ((line = bufferedReader.readLine()) != null) {
Log.d("FFMPEG",line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
})).start();
(new Thread(new Runnable() {
@Override
public void run() {
byte[] buffer = new byte[8192];
int read = 0;
OutputStream ffmpegInput = ffmpegProc.getOutputStream();
FileInputStream reader = new FileInputStream(pipeRead.getFileDescriptor());
try {
while (true) {
if (reader.available()>0) {
read = reader.read(buffer);
ffmpegInput.write(buffer, 0, read);
ffmpegInput.flush();
} else {
Thread.sleep(10);
}
}
} catch (InterruptedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
onDestroy();
}
}
})).start();
Log.d("FFMPEG","Executado");
}
private boolean estaExecutando(Process ffmpegProc) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
return ffmpegProc.isAlive();
} else {
try {
ffmpegProc.exitValue();
return false;
} catch (Exception e) {
return true;
}
}
}
private void criarMediaRecorder() {
if (pipeWrite != null) {
try {
//ffplay.exe -protocol_whitelist rtp,file,udp ..\file.sdp
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.AAC_ADTS);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
//mediaRecorder.setAudioChannels(2);
mediaRecorder.setOutputFile(pipeWrite.getFileDescriptor());
mediaRecorder.prepare();
mediaRecorder.start();
Log.d("MREC","MediaRecorder criado");
} catch (Exception e) {
e.printStackTrace();
}
}
}
private void criarPipe() {
try {
pipePair =ParcelFileDescriptor.createPipe();
} catch (IOException e) {
Log.e("PIPE","Deu zica na criação do pipe");
e.printStackTrace();
finish();
}
pipeRead = new ParcelFileDescriptor(pipePair[0]);
pipeWrite = new ParcelFileDescriptor(pipePair[1]);
}
private void copiarFFMpeg() {
FFmpeg ffmpeg = FFmpeg.getInstance(this);
try {
ffmpeg.loadBinary(new LoadBinaryResponseHandler() {
@Override
public void onStart() {
Log.d("FFMPEG","Iniciar cópia");
}
@Override
public void onFailure() {
Log.e("FFMPEG","Cópia falhou");
}
@Override
public void onSuccess() {
Log.d("FFMPEG","Cópiado com sucesso");
criarPipe();
//mediaRecorder.start();
File ffmpegBin = new File(getFilesDir().getAbsolutePath()+"/ffmpeg");
String[] cmd = new String[] {
ffmpegBin.getAbsolutePath(),
"-re",
"-thread_queue_size","4",
"-i","pipe:",
//"-c:a","libx264",
//"-preset","veryfast",
//"-tune","zerolatency",
"-f",
"rtp",
"rtp://192.168.0.33:1234"
};
executarFFMpeg(cmd, pipeRead);
criarMediaRecorder();
}
@Override
public void onFinish() {
}
});
} catch (FFmpegNotSupportedException e) {
// Handle if FFmpeg is not supported by device
Log.e("FFMPEG", "Não sou suportado :/");
}
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
public void onClick(View view) {
}
}The command :
ffplay rtp://192.168.0.33:1234
ffplay -fflags nobuffer rtp://192.168.0.33:1234