
Recherche avancée
Médias (1)
-
Richard Stallman et le logiciel libre
19 octobre 2011, par
Mis à jour : Mai 2013
Langue : français
Type : Texte
Autres articles (81)
-
Emballe médias : à quoi cela sert ?
4 février 2011, parCe plugin vise à gérer des sites de mise en ligne de documents de tous types.
Il crée des "médias", à savoir : un "média" est un article au sens SPIP créé automatiquement lors du téléversement d’un document qu’il soit audio, vidéo, image ou textuel ; un seul document ne peut être lié à un article dit "média" ; -
Gestion des droits de création et d’édition des objets
8 février 2011, parPar défaut, beaucoup de fonctionnalités sont limitées aux administrateurs mais restent configurables indépendamment pour modifier leur statut minimal d’utilisation notamment : la rédaction de contenus sur le site modifiables dans la gestion des templates de formulaires ; l’ajout de notes aux articles ; l’ajout de légendes et d’annotations sur les images ;
-
Supporting all media types
13 avril 2011, parUnlike most software and media-sharing platforms, MediaSPIP aims to manage as many different media types as possible. The following are just a few examples from an ever-expanding list of supported formats : images : png, gif, jpg, bmp and more audio : MP3, Ogg, Wav and more video : AVI, MP4, OGV, mpg, mov, wmv and more text, code and other data : OpenOffice, Microsoft Office (Word, PowerPoint, Excel), web (html, CSS), LaTeX, Google Earth and (...)
Sur d’autres sites (3541)
-
Recording video on Android using JavaCV (Updated)
12 février 2014, par Fabio BergmannI'm trying to record a video in Android using the JavaCV lib.
I need to record the video in 640x360.I have installed everything as described in README.txt file and I followed the example as below :
https://code.google.com/p/javacv/source/browse/samples/RecordActivity.java
In this example, the video size is this :
private int imageWidth = 320 ;
private int imageHeight = 240 ;In my case, I need to record a video in 640x360 H.264.
(UPDATE) I have reverted my code and kept exactly like in the example, just changing imageWidth and imageHeight to 640x360.
Now I'm getting the video like this image :
http://bergmann.net.br/img/screenshot_video_error.pngHere is my code :
import android.app.Activity;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.hardware.Camera;
import android.hardware.Camera.PreviewCallback;
import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.PowerManager;
import android.util.Log;
import android.view.Display;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import java.io.IOException;
import java.nio.ShortBuffer;
import com.googlecode.javacv.FFmpegFrameRecorder;
import static com.googlecode.javacv.cpp.opencv_core.*;
public class FFmpegRecordActivity extends Activity implements OnClickListener {
private final static String CLASS_LABEL = "RecordActivity";
private final static String LOG_TAG = CLASS_LABEL;
private PowerManager.WakeLock mWakeLock;
private String ffmpeg_link = "/mnt/sdcard/stream.flv";
long startTime = 0;
boolean recording = false;
private volatile FFmpegFrameRecorder recorder;
private boolean isPreviewOn = false;
private int sampleAudioRateInHz = 44100;
private int imageWidth = 640;
private int imageHeight = 360;
private int frameRate = 30;
/* audio data getting thread */
private AudioRecord audioRecord;
private AudioRecordRunnable audioRecordRunnable;
private Thread audioThread;
volatile boolean runAudioThread = true;
/* video data getting thread */
private Camera cameraDevice;
private CameraView cameraView;
private IplImage yuvIplimage = null;
/* layout setting */
private final int bg_screen_bx = 232;
private final int bg_screen_by = 128;
private final int bg_screen_width = 700;
private final int bg_screen_height = 500;
private final int bg_width = 1123;
private final int bg_height = 715;
private final int live_width = 1280;
private final int live_height = 720;
private int screenWidth, screenHeight;
private Button btnRecorderControl;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(R.layout.main);
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK,
CLASS_LABEL);
mWakeLock.acquire();
initLayout();
initRecorder();
}
@Override
protected void onResume() {
super.onResume();
if (mWakeLock == null) {
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK,
CLASS_LABEL);
mWakeLock.acquire();
}
}
@Override
protected void onPause() {
super.onPause();
if (mWakeLock != null) {
mWakeLock.release();
mWakeLock = null;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
recording = false;
if (cameraView != null) {
cameraView.stopPreview();
cameraDevice.release();
cameraDevice = null;
}
if (mWakeLock != null) {
mWakeLock.release();
mWakeLock = null;
}
}
private void initLayout() {
/* get size of screen */
Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE))
.getDefaultDisplay();
screenWidth = display.getWidth();
screenHeight = display.getHeight();
RelativeLayout.LayoutParams layoutParam = null;
LayoutInflater myInflate = null;
myInflate = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
RelativeLayout topLayout = new RelativeLayout(this);
setContentView(topLayout);
LinearLayout preViewLayout = (LinearLayout) myInflate.inflate(
R.layout.main, null);
layoutParam = new RelativeLayout.LayoutParams(screenWidth, screenHeight);
topLayout.addView(preViewLayout, layoutParam);
/* add control button: start and stop */
btnRecorderControl = (Button) findViewById(R.id.recorder_control);
btnRecorderControl.setText("Start");
btnRecorderControl.setOnClickListener(this);
/* add camera view */
int display_width_d = (int) (1.0 * bg_screen_width * screenWidth / bg_width);
int display_height_d = (int) (1.0 * bg_screen_height * screenHeight / bg_height);
int prev_rw, prev_rh;
if (1.0 * display_width_d / display_height_d > 1.0 * live_width
/ live_height) {
prev_rh = display_height_d;
prev_rw = (int) (1.0 * display_height_d * live_width / live_height);
} else {
prev_rw = display_width_d;
prev_rh = (int) (1.0 * display_width_d * live_height / live_width);
}
prev_rw = 640;
prev_rh = 360;
layoutParam = new RelativeLayout.LayoutParams(prev_rw, prev_rh);
layoutParam.topMargin = (int) (1.0 * bg_screen_by * screenHeight / bg_height);
layoutParam.leftMargin = (int) (1.0 * bg_screen_bx * screenWidth / bg_width);
cameraDevice = Camera.open();
Log.i(LOG_TAG, "cameara open");
cameraView = new CameraView(this, cameraDevice);
topLayout.addView(cameraView, layoutParam);
Log.i(LOG_TAG, "cameara preview start: OK");
}
// ---------------------------------------
// initialize ffmpeg_recorder
// ---------------------------------------
private void initRecorder() {
Log.w(LOG_TAG, "init recorder");
if (yuvIplimage == null) {
yuvIplimage = IplImage.create(imageWidth, imageHeight,
IPL_DEPTH_8U, 2);
Log.i(LOG_TAG, "create yuvIplimage");
}
Log.i(LOG_TAG, "ffmpeg_url: " + ffmpeg_link);
recorder = new FFmpegFrameRecorder(ffmpeg_link, imageWidth,
imageHeight, 1);
recorder.setFormat("flv");
recorder.setSampleRate(sampleAudioRateInHz);
// Set in the surface changed method
recorder.setFrameRate(frameRate);
Log.i(LOG_TAG, "recorder initialize success");
audioRecordRunnable = new AudioRecordRunnable();
audioThread = new Thread(audioRecordRunnable);
}
public void startRecording() {
try {
recorder.start();
startTime = System.currentTimeMillis();
recording = true;
audioThread.start();
} catch (FFmpegFrameRecorder.Exception e) {
e.printStackTrace();
}
}
public void stopRecording() {
runAudioThread = false;
if (recorder != null && recording) {
recording = false;
Log.v(LOG_TAG,
"Finishing recording, calling stop and release on recorder");
try {
recorder.stop();
recorder.release();
} catch (FFmpegFrameRecorder.Exception e) {
e.printStackTrace();
}
recorder = null;
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (recording) {
stopRecording();
}
finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
// ---------------------------------------------
// audio thread, gets and encodes audio data
// ---------------------------------------------
class AudioRecordRunnable implements Runnable {
@Override
public void run() {
android.os.Process
.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);
// Audio
int bufferSize;
short[] audioData;
int bufferReadResult;
bufferSize = AudioRecord
.getMinBufferSize(sampleAudioRateInHz,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT);
audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,
sampleAudioRateInHz, AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT, bufferSize);
audioData = new short[bufferSize];
Log.d(LOG_TAG, "audioRecord.startRecording()");
audioRecord.startRecording();
/* ffmpeg_audio encoding loop */
while (runAudioThread) {
// Log.v(LOG_TAG,"recording? " + recording);
bufferReadResult = audioRecord.read(audioData, 0,
audioData.length);
if (bufferReadResult > 0) {
Log.v(LOG_TAG, "bufferReadResult: " + bufferReadResult);
// If "recording" isn't true when start this thread, it
// never get's set according to this if statement...!!!
// Why? Good question...
if (recording) {
try {
recorder.record(ShortBuffer.wrap(audioData, 0,
bufferReadResult));
// Log.v(LOG_TAG,"recording " + 1024*i + " to " +
// 1024*i+1024);
} catch (FFmpegFrameRecorder.Exception e) {
Log.v(LOG_TAG, e.getMessage());
e.printStackTrace();
}
}
}
}
Log.v(LOG_TAG, "AudioThread Finished, release audioRecord");
/* encoding finish, release recorder */
if (audioRecord != null) {
audioRecord.stop();
audioRecord.release();
audioRecord = null;
Log.v(LOG_TAG, "audioRecord released");
}
}
}
// ---------------------------------------------
// camera thread, gets and encodes video data
// ---------------------------------------------
class CameraView extends SurfaceView implements SurfaceHolder.Callback,
PreviewCallback {
private SurfaceHolder mHolder;
private Camera mCamera;
public CameraView(Context context, Camera camera) {
super(context);
Log.w("camera", "camera view");
mCamera = camera;
mHolder = getHolder();
mHolder.addCallback(CameraView.this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mCamera.setPreviewCallback(CameraView.this);
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
stopPreview();
mCamera.setPreviewDisplay(holder);
} catch (IOException exception) {
mCamera.release();
mCamera = null;
}
}
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
Log.v(LOG_TAG, "Setting imageWidth: " + imageWidth
+ " imageHeight: " + imageHeight + " frameRate: "
+ frameRate);
Camera.Parameters camParams = mCamera.getParameters();
camParams.setPreviewSize(imageWidth, imageHeight);
Log.v(LOG_TAG,
"Preview Framerate: " + camParams.getPreviewFrameRate());
camParams.setPreviewFrameRate(frameRate);
mCamera.setParameters(camParams);
startPreview();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
try {
mHolder.addCallback(null);
mCamera.setPreviewCallback(null);
} catch (RuntimeException e) {
// The camera has probably just been released, ignore.
}
}
public void startPreview() {
if (!isPreviewOn && mCamera != null) {
isPreviewOn = true;
mCamera.startPreview();
}
}
public void stopPreview() {
if (isPreviewOn && mCamera != null) {
isPreviewOn = false;
mCamera.stopPreview();
}
}
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
/* get video data */
if (yuvIplimage != null && recording) {
yuvIplimage.getByteBuffer().put(data);
Log.v(LOG_TAG, "Writing Frame");
try {
long t = 1000 * (System.currentTimeMillis() - startTime);
if (t > recorder.getTimestamp()) {
recorder.setTimestamp(t);
}
recorder.record(yuvIplimage);
} catch (FFmpegFrameRecorder.Exception e) {
Log.v(LOG_TAG, e.getMessage());
e.printStackTrace();
}
}
}
}
@Override
public void onClick(View v) {
if (!recording) {
startRecording();
Log.w(LOG_TAG, "Start Button Pushed");
btnRecorderControl.setText("Stop");
} else {
// This will trigger the audio recording loop to stop and then set
// isRecorderStart = false;
stopRecording();
Log.w(LOG_TAG, "Stop Button Pushed");
btnRecorderControl.setText("Start");
}
}
}Anyone know how to fix it ?
Thanks in advance !
-
I am able to create m3u8 file using ffmpeg from rtmp live but not able to play the file in html5 video tag & apple device
3 janvier 2014, par NikitaI am able to create the m3u8 file by following steps :
1.Execute ffmpeg -v verbose -i rtmp://<host>:<port>/<stream> -c:v libx264 -c:a aac -ac 1 -strict -2 -crf 18 -profile:v baseline -maxrate 400k -bufsize 1835k -pix_fmt yuv420p -flags -global_header -hls_time 10 -hls_list_size 6 -hls_wrap 10 -start_number 1 <pathtofolderyouwantto>/<streamname>.m3u8
</streamname></pathtofolderyouwantto></stream></port></host>2.Make that folder you just mentioned on ffmpeg command () to be accessible by an http url.
3.Create a simple html page to play :
<video controls="controls" width="480" height="270" src="<streamName>.m3u8"></video>
But not able to play using html5 video tag as well as in apple device.
following is my ffmpeg console output :
sending ctrl. type: 0x0003
Invoking createStream
FCSubscribe: livestream
Invoking FCSubscribe
RTMP_ClientPacket, received: invoke 29 bytes
(object begin)
Property:
Property:
Property: NULL
Property:
(object end)
HandleInvoke, server invoking <_result>
HandleInvoke, received result for method call <createstream>
SendPlay, seekTime=0, stopTime=0, sending play: livestream
Invoking play
sending ctrl. type: 0x0003
RTMP_ClientPacket, received: invoke 21 bytes
(object begin)
Property:
Property:
Property: NULL
Property: NULL
(object end)
HandleInvoke, server invoking <_result>
HandleInvoke, received result for method call <fcsubscribe>
HandleChangeChunkSize, received: chunk size change to 1024
Received FLV packet before play()! Ignoring.
HandleCtrl, received ctrl. type: 0, len: 6
HandleCtrl, Stream Begin 1
RTMP_ClientPacket, received: invoke 160 bytes
(object begin)
Property:
Property:
Property: NULL
Property:
(object begin)
Property:
Property:
Property:
Property:
Property:
(object end)
(object end)
HandleInvoke, server invoking <onstatus>
HandleInvoke, onStatus: NetStream.Play.Reset
RTMP_ClientPacket, received: invoke 154 bytes
(object begin)
Property:
Property:
Property: NULL
Property:
(object begin)
Property:
Property:
Property:
Property:
Property:
(object end)
(object end)
HandleInvoke, server invoking <onstatus>
HandleInvoke, onStatus: NetStream.Play.Start
HandleCtrl, received ctrl. type: 6, len: 6
HandleCtrl, Ping 1465657184
sending ctrl. type: 0x0007
HandleCtrl, received ctrl. type: 6, len: 6
HandleCtrl, Ping 1465659184
sending ctrl. type: 0x0007
HandleCtrl, received ctrl. type: 6, len: 6
HandleCtrl, Ping 1465661184
sending ctrl. type: 0x0007
HandleCtrl, received ctrl. type: 6, len: 6
HandleCtrl, Ping 1465662184
sending ctrl. type: 0x0007
HandleCtrl, received ctrl. type: 6, len: 6
HandleCtrl, Ping 1465663184
sending ctrl. type: 0x0007
HandleCtrl, received ctrl. type: 6, len: 6
HandleCtrl, Ping 1465678183
sending ctrl. type: 0x0007
HandleCtrl, received ctrl. type: 6, len: 6
HandleCtrl, Ping 1465680183
sending ctrl. type: 0x0007
HandleCtrl, received ctrl. type: 6, len: 6
HandleCtrl, Ping 1465682183
sending ctrl. type: 0x0007
HandleCtrl, received ctrl. type: 6, len: 6
HandleCtrl, Ping 1465684183
sending ctrl. type: 0x0007
HandleCtrl, received ctrl. type: 6, len: 6
HandleCtrl, Ping 1465686183
sending ctrl. type: 0x0007
HandleCtrl, received ctrl. type: 6, len: 6
HandleCtrl, Ping 1465688183
sending ctrl. type: 0x0007
HandleCtrl, received ctrl. type: 6, len: 6
HandleCtrl, Ping 1465690183
sending ctrl. type: 0x0007
HandleCtrl, received ctrl. type: 6, len: 6
HandleCtrl, Ping 1465692183
sending ctrl. type: 0x0007
HandleCtrl, received ctrl. type: 6, len: 6
HandleCtrl, Ping 1465694183
sending ctrl. type: 0x0007
HandleCtrl, received ctrl. type: 6, len: 6
HandleCtrl, Ping 1465696183
sending ctrl. type: 0x0007
HandleCtrl, received ctrl. type: 6, len: 6
HandleCtrl, Ping 1465698182
sending ctrl. type: 0x0007
HandleCtrl, received ctrl. type: 6, len: 6
HandleCtrl, Ping 1465700182
sending ctrl. type: 0x0007
HandleCtrl, received ctrl. type: 6, len: 6
HandleCtrl, Ping 1465702182
sending ctrl. type: 0x0007
HandleCtrl, received ctrl. type: 6, len: 6
HandleCtrl, Ping 1465704182
sending ctrl. type: 0x0007
HandleCtrl, received ctrl. type: 6, len: 6
HandleCtrl, Ping 1465706182
sending ctrl. type: 0x0007
[flv @ 0263ce00] Estimating duration from bitrate, this may be inaccurate
Input #0, flv, from 'rtmp://serveripaddress/oflaDemo/livestream live=1':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: vp6f, yuv420p, 320x240, 1k tbr, 1k tbn, 1k tbc
[graph 0 input from stream 0:0 @ 03020420] w:320 h:240 pixfmt:yuv420p tb:1/1000 fr:1000/1 sar:0/1 sws_param:flags=2
[libx264 @ 02833600] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2
[libx264 @ 02833600] profile Constrained Baseline, level 4.2
[mpegts @ 038c1180] muxrate VBR, pcr every 100 pkts, sdt every 200, pat/pmt every 40 pkts
Output #0, hls, to 'C:/Program Files/Apache Software Foundation/apache-tomcat-6.0.35/webapps/mediaplayer/stream.m3u8':
Metadata:
encoder : Lavf54.37.100
Stream #0:0: Video: h264, yuv420p, 320x240, q=-1--1, 90k tbn, 1k tbc
Stream mapping:
Stream #0:0 -> #0:0 (vp6f -> libx264)
Press [q] to stop, [?] for help
Error while decoding stream #0:0: Error number -1 occurred
Last message repeated 2 times
*** 192 dup!
*** 47 dup!
*** 63 dup!
Last message repeated 2 times
*** 47 dup!
*** 63 dup!
Last message repeated 1 times
Bitrate not available, avio_tell() failed: Error number -22 occurred
*** 63 dup! fps=0.0 q=28.0 size= 0kB time=00:00:00.56 bitrate= 0.0kbits/s dup=601 drop=0
*** 47 dup!
*** 63 dup!
Last message repeated 2 times
*** 47 dup!
*** 63 dup!
Last message repeated 3 times
Bitrate not available, avio_tell() failed: Error number -22 occurred
*** 47 dup! fps=1129 q=47.0 size= 0kB time=00:00:01.17 bitrate= 0.0kbits/s dup=1199 drop=0
*** 63 dup!
Last message repeated 2 times
*** 47 dup!
*** 63 dup!
Last message repeated 2 times
*** 47 dup!
*** 63 dup!
Last message repeated 1 times
Bitrate not available, avio_tell() failed: Error number -22 occurred
*** 63 dup! fps=1164 q=40.0 size= 0kB time=00:00:01.82 bitrate= 0.0kbits/s dup=1844 drop=0
*** 47 dup!
*** 63 dup!
Last message repeated 2 times
*** 47 dup!
*** 63 dup!
Last message repeated 2 times
*** 47 dup!
*** 63 dup!
Bitrate not available, avio_tell() failed: Error number -22 occurred
*** 63 dup! fps=1181 q=57.0 size= 0kB time=00:00:02.48 bitrate= 0.0kbits/s dup=2489 drop=0
Last message repeated 1 times
*** 47 dup!
*** 63 dup!
Last message repeated 2 times
*** 47 dup!
*** 63 dup!
Last message repeated 1 times
*** 64 dup!
Bitrate not available, avio_tell() failed: Error number -22 occurred
*** 46 dup! fps=1181 q=44.0 size= 0kB time=00:00:03.09 bitrate= 0.0kbits/s dup=3088 drop=0
*** 63 dup!
Last message repeated 2 times
*** 47 dup!
*** 63 dup!
*** 64 dup!
*** 62 dup!
*** 63 dup!
*** 47 dup!
*** 64 dup!
Bitrate not available, avio_tell() failed: Error number -22 occurred
*** 62 dup! fps=1190 q=49.0 size= 0kB time=00:00:03.74 bitrate= 0.0kbits/s dup=3733 drop=0
*** 63 dup!
*** 48 dup!
*** 62 dup!
*** 64 dup!
*** 62 dup!
*** 48 dup!
*** 62 dup!
*** 64 dup!
*** 62 dup!
*** 47 dup!
Bitrate not available, avio_tell() failed: Error number -22 occurred
*** 63 dup! fps=1201 q=32.0 size= 0kB time=00:00:04.40 bitrate= 0.0kbits/s dup=4377 drop=0
Last message repeated 2 times
*** 48 dup!
*** 63 dup!
Last message repeated 1 times
*** 62 dup!
*** 48 dup!
*** 63 dup!
Last message repeated 1 times
*** 62 dup!
Bitrate not available, avio_tell() failed: Error number -22 occurred
*** 48 dup! fps=1214 q=57.0 size= 0kB time=00:00:05.07 bitrate= 0.0kbits/s dup=5038 drop=0
*** 63 dup!
*** 62 dup!
*** 63 dup!
*** 48 dup!
*** 62 dup!
*** 63 dup!
Last message repeated 1 times
*** 47 dup!
*** 64 dup!
*** 63 dup!
Last message repeated 1 times
Bitrate not available, avio_tell() failed: Error number -22 occurred
*** 47 dup! fps=1226 q=52.0 size= 0kB time=00:00:05.79 bitrate= 0.0kbits/s dup=5747 drop=0
*** 63 dup!
Last message repeated 3 times
*** 47 dup!
*** 63 dup!
Last message repeated 2 times
*** 47 dup!
*** 63 dup!
Last message repeated 1 times
Bitrate not available, avio_tell() failed: Error number -22 occurred
*** 63 dup! fps=1232 q=57.0 size= 0kB time=00:00:06.51 bitrate= 0.0kbits/s dup=6455 drop=0
*** 47 dup!
*** 63 dup!
Last message repeated 2 times
*** 47 dup!
*** 63 dup!
Last message repeated 2 times
*** 47 dup!
*** 63 dup!
Last message repeated 1 times
Bitrate not available, avio_tell() failed: Error number -22 occurred
*** 63 dup! fps=1240 q=57.0 size= 0kB time=00:00:07.23 bitrate= 0.0kbits/s dup=7163 drop=0
*** 47 dup!
*** 63 dup!
Last message repeated 2 times
*** 47 dup!
*** 63 dup!
Last message repeated 2 times
*** 47 dup!
*** 63 dup!
Last message repeated 1 times
Bitrate not available, avio_tell() failed: Error number -22 occurred
*** 63 dup! fps=1243 q=44.0 size= 0kB time=00:00:07.95 bitrate= 0.0kbits/s dup=7871 drop=0
*** 47 dup!
*** 63 dup!
Last message repeated 2 times
*** 47 dup!
*** 63 dup!
Last message repeated 3 times
*** 47 dup!
Bitrate not available, avio_tell() failed: Error number -22 occurred
*** 63 dup! fps=1245 q=52.0 size= 0kB time=00:00:08.61 bitrate= 0.0kbits/s dup=8516 drop=0
Last message repeated 2 times
*** 47 dup!
*** 63 dup!
Last message repeated 2 times
*** 47 dup!
*** 63 dup!
Last message repeated 2 times
*** 47 dup!
Bitrate not available, avio_tell() failed: Error number -22 occurred
*** 63 dup! fps=1250 q=49.0 size= 0kB time=00:00:09.33 bitrate= 0.0kbits/s dup=9224 drop=0
Last message repeated 2 times
*** 47 dup!
*** 63 dup!
Last message repeated 1 times
</onstatus></onstatus></fcsubscribe></createstream> -
Stream a short video continuously with ffmpeg
12 janvier 2014, par Blue SkyI have a short video (3 sec), and I want to stream it over a UDP address like udp ://127.0.0.1:1000 continously (repeatedly) so that the stream runs forever unless the user stops the streaming session. How can I do so ? Thanks !