
Recherche avancée
Médias (91)
-
Géodiversité
9 septembre 2011, par ,
Mis à jour : Août 2018
Langue : français
Type : Texte
-
USGS Real-time Earthquakes
8 septembre 2011, par
Mis à jour : Septembre 2011
Langue : français
Type : Texte
-
SWFUpload Process
6 septembre 2011, par
Mis à jour : Septembre 2011
Langue : français
Type : Texte
-
La conservation du net art au musée. Les stratégies à l’œuvre
26 mai 2011
Mis à jour : Juillet 2013
Langue : français
Type : Texte
-
Podcasting Legal guide
16 mai 2011, par
Mis à jour : Mai 2011
Langue : English
Type : Texte
-
Creativecommons informational flyer
16 mai 2011, par
Mis à jour : Juillet 2013
Langue : English
Type : Texte
Autres articles (77)
-
Support audio et vidéo HTML5
10 avril 2011MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...) -
Problèmes fréquents
10 mars 2010, parPHP et safe_mode activé
Une des principales sources de problèmes relève de la configuration de PHP et notamment de l’activation du safe_mode
La solution consiterait à soit désactiver le safe_mode soit placer le script dans un répertoire accessible par apache pour le site -
Mediabox : ouvrir les images dans l’espace maximal pour l’utilisateur
8 février 2011, parLa visualisation des images est restreinte par la largeur accordée par le design du site (dépendant du thème utilisé). Elles sont donc visibles sous un format réduit. Afin de profiter de l’ensemble de la place disponible sur l’écran de l’utilisateur, il est possible d’ajouter une fonctionnalité d’affichage de l’image dans une boite multimedia apparaissant au dessus du reste du contenu.
Pour ce faire il est nécessaire d’installer le plugin "Mediabox".
Configuration de la boite multimédia
Dès (...)
Sur d’autres sites (5356)
-
Feeding MediaCodec with byte data from AVPacket : problems with output buffers
2 mars 2016, par serg66Description of my task :
I’m developing a video player on Android (API >= 17). It has to work both withHLS
andmulticast
video. In addition, it has to support multiple audio tracks.Why I decided to use
ffmpeg
:- On some devices
MediaPlayer
doesn’t supportmulticast
-video MediaExtractor
doesn’t work with HLS (getTrackCount()
returns 0)- ffmpeg works both with
HLS
andmulticast
My idea :
I demux a stream using ffmpeg in a loop. I get theCSD
usingvideoStream->codec->extradata
and then properly configure theMediaFormat
. On each iteration when I have a new videoAVPacket
available, I filter it’s buffer usingav_bitstream_filter_init
toh264_mp4toannexb
. Then I call the java methodonNewVideoData
, in which I get theAVPacket
byte array. I clear the available input buffer, after that I fill it with the new data. I also get thepts
. Since I have a stream with no beginning, additionally, I calculate newpts
’ by subtracting thepts
of the firstAVPacket
from all the followingpts
’. The firstpts
I assign to 0. Then I callqueueInputBuffer
to send the buffer to the decoder.I use two threads : one for getting and submitting data to the input buffers, and another one for posting it to the
Surface
.The full player c-code :
#include
#include <android></android>log.h>
#include
#include <libavformat></libavformat>avformat.h>
#include <libavcodec></libavcodec>avcodec.h>
#include <libavutil></libavutil>buffer.h>
#define TAG "ffmpegPlayer"
struct
{
const char* url;
jint width;
jint height;
jfloat aspectRatio;
jint streamsCount;
AVFormatContext* formatContext;
AVStream* videoStream;
} context;
AVPacket packet;
AVBitStreamFilterContext* avBitStreamFilterContext;
JNIEXPORT jbyteArray JNICALL Java_com_example_app_FfmpegPlayer_getCsdNative(JNIEnv* env, jobject x)
{
jbyteArray arr = (*env)->NewByteArray(env, context.videoStream->codec->extradata_size);
(*env)->SetByteArrayRegion(env, arr, 0, context.videoStream->codec->extradata_size, (jbyte*)context.videoStream->codec->extradata);
return arr;
}
JNIEXPORT jint JNICALL Java_com_example_app_FfmpegPlayer_getWidthNative(JNIEnv* env, jobject x)
{
return context.width;
}
JNIEXPORT jint JNICALL Java_com_example_app_FfmpegPlayer_getHeightNative(JNIEnv* env, jobject x)
{
return context.height;
}
JNIEXPORT jfloat JNICALL Java_com_example_app_FfmpegPlayer_getAspectRatioNative(JNIEnv* env, jobject x)
{
return context.aspectRatio;
}
JNIEXPORT jfloat JNICALL Java_com_example_app_FfmpegPlayer_getStreamsCountNative(JNIEnv* env, jobject x)
{
return context.streamsCount;
}
JNIEXPORT jlong JNICALL Java_com_example_app_FfmpegPlayer_getPtsNative(JNIEnv* env, jobject obj)
{
return packet.pts * av_q2d(context.videoStream->time_base) * 1000000;
}
JNIEXPORT jboolean JNICALL Java_com_example_app_FfmpegPlayer_initNative(JNIEnv* env, jobject obj, const jstring u)
{
av_register_all();
avBitStreamFilterContext = av_bitstream_filter_init("h264_mp4toannexb");
const char* url = (*env)->GetStringUTFChars(env, u , NULL);
__android_log_print(ANDROID_LOG_DEBUG, TAG, "Init: %s", url);
AVFormatContext* formatContext = NULL;
if (avformat_open_input(&formatContext, url, NULL, NULL) < 0) {
__android_log_print(ANDROID_LOG_ERROR, TAG, "Unable to open input");
return JNI_FALSE;
}
if (avformat_find_stream_info(formatContext, NULL) < 0) {
__android_log_print(ANDROID_LOG_ERROR, TAG, "Unable to find stream info");
return JNI_FALSE;
}
AVInputFormat * iformat = formatContext->iformat;
__android_log_print(ANDROID_LOG_DEBUG, TAG, "format: %s", iformat->name);
context.streamsCount = formatContext->nb_streams;
__android_log_print(ANDROID_LOG_DEBUG, TAG, "Streams count: %d", formatContext->nb_streams);
int i = 0;
AVStream* videoStream = NULL;
AVDictionaryEntry* lang;
for (i = 0; i < formatContext->nb_streams; i++) {
int codecType = formatContext->streams[i]->codec->codec_type;
if (videoStream == NULL && codecType == AVMEDIA_TYPE_VIDEO) {
videoStream = formatContext->streams[i];
}
else if (codecType == AVMEDIA_TYPE_AUDIO) {
lang = av_dict_get(formatContext->streams[i]->metadata, "language", NULL, 0);
if (lang != NULL) {
__android_log_print(ANDROID_LOG_DEBUG, TAG, "Audio stream %d: %s", i, lang->value);
}
}
}
if (videoStream == NULL) {
__android_log_print(ANDROID_LOG_ERROR, TAG, "Unable to find video stream");
return JNI_FALSE;
}
context.videoStream = videoStream;
__android_log_print(ANDROID_LOG_DEBUG, TAG, "Video stream: %d", videoStream->index);
AVCodecContext *codecContext = formatContext->streams[videoStream->index]->codec;
__android_log_print(ANDROID_LOG_DEBUG, TAG, "width: %d, height: %d", codecContext->width, codecContext->height);
context.width = codecContext->width;
context.height = codecContext->height;
AVRational aspectRatio = codecContext->sample_aspect_ratio;
__android_log_print(ANDROID_LOG_DEBUG, TAG, "aspect ratio: %d/%d", aspectRatio.num, aspectRatio.den);
context.aspectRatio = aspectRatio.num / aspectRatio.den;
context.formatContext = formatContext;
return JNI_TRUE;
}
void filterPacket()
{
av_bitstream_filter_filter(avBitStreamFilterContext, context.videoStream->codec, NULL, &packet.data, &packet.size, packet.data, packet.size, packet.flags);
}
JNIEXPORT void JNICALL Java_com_example_app_FfmpegPlayer_startNative(JNIEnv* env, jobject obj)
{
jclass cl = (*env)->GetObjectClass(env, obj);
jmethodID updateMethodId = (*env)->GetMethodID(env, cl, "onNewVideoData", "()V");
while (av_read_frame(context.formatContext, &packet) >= 0) {
if (context.formatContext == NULL) {
return;
}
if (packet.stream_index == context.videoStream->index) {
filterPacket();
(*env)->CallVoidMethod(env, obj, updateMethodId);
}
}
}
JNIEXPORT jbyteArray JNICALL Java_com_example_app_FfmpegPlayer_getVideoDataNative(JNIEnv* env, jobject obj)
{
AVBufferRef *buf = packet.buf;
jbyteArray arr = (*env)->NewByteArray(env, buf->size);
(*env)->SetByteArrayRegion(env, arr, 0, buf->size, (jbyte*)buf->data);
return arr;
}The full Java-code :
package com.example.app;
import android.media.MediaCodec;
import android.media.MediaFormat;
import android.view.Surface;
import java.nio.ByteBuffer;
public class FfmpegPlayer {
static {
System.loadLibrary("avutil-54");
System.loadLibrary("swscale-3");
System.loadLibrary("swresample-1");
System.loadLibrary("avcodec-56");
System.loadLibrary("avformat-56");
System.loadLibrary("avfilter-5");
System.loadLibrary("ffmpeg-player");
}
private native boolean initNative(String url);
private native boolean startNative();
private native int getWidthNative();
private native int getHeightNative();
private native float getAspectRatioNative();
private native byte[] getVideoDataNative();
private native long getPtsNative();
private native byte[] getCsdNative();
private String source;
private PlayerThread playerThread;
private int width;
private int height;
private MediaCodec decoder;
private ByteBuffer[] inputBuffers;
private Surface surface;
private long firstPtsTime;
public PlanetaPlayer(Surface surface) {
this.surface = surface;
}
public void setDataSource(String source) {
if (!initNative(source)) {
return;
}
width = getWidthNative();
height = getHeightNative();
MediaFormat format = MediaFormat.createVideoFormat("video/avc", width, height);
format.setInteger(MediaFormat.KEY_MAX_INPUT_SIZE, width * height);
format.setByteBuffer("csd-0", ByteBuffer.wrap(getCsdNative()));
LogUtils.log("CSD: ");
outputAsHex(getCsdNative());
try {
decoder = MediaCodec.createDecoderByType("video/avc");
decoder.configure(format, surface, null, 0);
decoder.start();
playerThread = new PlayerThread();
playerThread.start();
new OutputThread().run();
}
catch (Exception e) {
e.printStackTrace();
}
}
public void onNewVideoData() {
int index = decoder.dequeueInputBuffer(0);
if (index >= 0) {
byte[] data = getVideoDataNative();
ByteBuffer byteBuffer = decoder.getInputBuffers()[index];
byteBuffer.clear();
byteBuffer.put(data);
long pts = getPtsNative();
LogUtils.log("Input AVPacket pts: " + pts);
LogUtils.log("Input AVPacket data length: " + data.length);
LogUtils.log("Input AVPacket data: ");
outputAsHex(data);
if (firstPtsTime == 0) {
firstPtsTime = pts;
pts = 0;
}
else {
pts -= firstPtsTime;
}
decoder.queueInputBuffer(index, 0, data.length, pts, 0);
}
}
private void outputAsHex(byte[] data) {
String[] test = new String[data.length];
for (int i = 0; i < data.length; i++) {
test[i] = String.format("%02x", data[i]);
}
LogUtils.log(test);
}
private class PlayerThread extends Thread {
@Override
public void run() {
super.run();
startNative();
}
}
private class OutputThread extends Thread {
@Override
public void run() {
super.run();
MediaCodec.BufferInfo info = new MediaCodec.BufferInfo();
while (true) {
int index = decoder.dequeueOutputBuffer(info, 0);
if (index >= 0) {
ByteBuffer buffer = decoder.getOutputBuffers()[index];
buffer.position(info.offset);
buffer.limit(info.offset + info.size);
byte[] test = new byte[info.size];
for (int i = 0; i < info.size; i++) {
test[i] = buffer.get(i);
}
LogUtils.log("Output info: size=" + info.size + ", presentationTimeUs=" + info.presentationTimeUs + ",offset=" + info.offset + ",flags=" + info.flags);
LogUtils.log("Output data: ");
outputAsHex(test);
decoder.releaseOutputBuffer(index, true);
}
}
}
}
}The problem :
For the tests I used a TS file with the following video stream :Codec: H264 - MPEG-4 AVC (part 10) (h264)
Resolution: 720x578
Frame rate: 25
Decoded format: Planar 4:2:0 YUVThe CSD is the following :
[00, 00, 00, 01, 09, 10, 00, 00, 00, 01, 27, 4d, 40, 1e, 9a, 62, 01, 68, 48, b0, 44, 20, a0, a0, a8, 00, 00, 03, 00, 08, 00, 00, 03, 01, 94, a0, 00, 00, 00, 01, 28, ee, 3c, 80]
On different devices I have different results. But I couldn’t achieve showing the video on the
Surface
.Input :
Input AVPacket pts: 351519222
Input AVPacket data length: 54941
Input AVPacket data: [00, 00, 00, 01, 09, 10, 00, 00, 00, 01, 27, 4d, 40, 1e, 9a, 62, 01, 68, 48, b0, 44, 20, a0, a0, a8, 00, 00, 03, 00, 08, 00, 00, 03, 01, 94, a0, 00, 00, 00, 01,...]
------------------------------------
Input AVPacket pts: 351539222
Input AVPacket data length: 9605
Input AVPacket data: [00, 00, 00, 01, 09, 30, 00, 00, 00, 01, 06, 01, 01, 24, 80, 00, 00, 00, 01, 21, e3, bd, da, e4, 46, c5, 8b, 6b, 7d, 07, 59, 23, 6f, 92, e9, fb, 3b, b9, 4d, f9,...]
------------------------------------
Input AVPacket pts: 351439222
Input AVPacket data length: 1985
Input AVPacket data: [00, 00, 00, 01, 09, 50, 00, 00, 00, 01, 06, 01, 01, 14, 80, 00, 00, 00, 01, 21, a8, f2, 74, 69, 14, 54, 4d, c5, 8b, e8, 42, 52, ac, 80, 53, b4, 4d, 24, 1f, 6c,...]
------------------------------------
Input AVPacket pts: 351459222
Input AVPacket data length: 2121
Input AVPacket data: [00, 00, 00, 01, 09, 50, 00, 00, 00, 01, 06, 01, 01, 24, 80, 00, 00, 00, 01, 21, a8, f3, 74, e9, 0b, 8b, 17, e8, 43, f8, 10, 88, ca, 2b, 11, 53, c8, 31, f0, 0b,...]
... on and onAsus Zenfone (Android 5.0.2) output thread (after decoding, strange results with 25 buffers of only 8 byte data) :
Output info: size=8, presentationTimeUs=-80001,offset=0,flags=0
Output data:
[01, 00, 00, 00, 90, c5, 99, ac]
---------------------------
Output info: size=8, presentationTimeUs=0,offset=0,flags=1
Output data:
[01, 00, 00, 00, 78, ea, 86, ac]
---------------------------
Output info: size=8, presentationTimeUs=720000,offset=0,flags=1
Output data:
[01, 00, 00, 00, e8, 86, b6, ac]
---------------------------
Output info: size=8, presentationTimeUs=780000,offset=0,flags=1
Output data:
[01, 00, 00, 00, c0, cb, 93, ac]
---------------------------
Output info: size=8, presentationTimeUs=840000,offset=0,flags=0
Output data:
[01, 00, 00, 00, 80, 87, 93, ac]
---------------------------
Output info: size=8, presentationTimeUs=960000,offset=0,flags=1
Output data:
[01, 00, 00, 00, e0, 3f, 8b, ac]
---------------------------
Output info: size=8, presentationTimeUs=1040000,offset=0,flags=1
Output data:
[01, 00, 00, 00, f8, 76, 85, ac]
---------------------------
Output info: size=8, presentationTimeUs=1180000,offset=0,flags=1
Output data:
[01, 00, 00, 00, e0, 87, 93, ac]
---------------------------
Output info: size=8, presentationTimeUs=1260000,offset=0,flags=1
Output data:
[01, 00, 00, 00, e8, b5, d2, ac]
---------------------------
Output info: size=8, presentationTimeUs=1800000,offset=0,flags=0
Output data:
[01, 00, 00, 00, 90, c5, 99, ac]
---------------------------
Output info: size=8, presentationTimeUs=1860000,offset=0,flags=1
Output data:
[01, 00, 00, 00, e0, c0, 84, ac]
---------------------------
Output info: size=8, presentationTimeUs=2080000,offset=0,flags=1
Output data:
[01, 00, 00, 00, c0, cb, 93, ac]
---------------------------
Output info: size=8, presentationTimeUs=3440000,offset=0,flags=1
Output data:
[01, 00, 00, 00, 80, 87, 93, ac]
---------------------------
Output info: size=8, presentationTimeUs=3520000,offset=0,flags=0
Output data:
[01, 00, 00, 00, 78, ea, 86, ac]
---------------------------
Output info: size=8, presentationTimeUs=4160000,offset=0,flags=1
Output data:
[01, 00, 00, 00, e8, 86, b6, ac]
---------------------------
Output info: size=8, presentationTimeUs=4300000,offset=0,flags=1
Output data:
[01, 00, 00, 00, e0, 3f, 8b, ac]
---------------------------
Output info: size=8, presentationTimeUs=4400000,offset=0,flags=1
Output data:
[01, 00, 00, 00, 90, c5, 99, ac]
---------------------------
Output info: size=8, presentationTimeUs=4480000,offset=0,flags=1
Output data:
[01, 00, 00, 00, f8, 76, 85, ac]
---------------------------
Output info: size=8, presentationTimeUs=4680000,offset=0,flags=0
Output data:
[01, 00, 00, 00, c0, cb, 93, ac]
---------------------------
Output info: size=8, presentationTimeUs=4720000,offset=0,flags=1
Output data:
[01, 00, 00, 00, e0, c0, 84, ac]
---------------------------
Output info: size=8, presentationTimeUs=4760000,offset=0,flags=1
Output data:
[01, 00, 00, 00, e0, 87, 93, ac]
---------------------------
Output info: size=8, presentationTimeUs=4800000,offset=0,flags=0
Output data:
[01, 00, 00, 00, 58, 54, 83, ac]
---------------------------
Output info: size=8, presentationTimeUs=5040000,offset=0,flags=0
Output data:
[01, 00, 00, 00, e8, b5, d2, ac]
---------------------------
Output info: size=8, presentationTimeUs=5100000,offset=0,flags=1
Output data:
[01, 00, 00, 00, 80, 87, 93, ac]
---------------------------
Output info: size=8, presentationTimeUs=5320000,offset=0,flags=0
Output data:
[01, 00, 00, 00, 78, ea, 86, ac]
---------------------------
Output info: size=8, presentationTimeUs=5380000,offset=0,flags=1
Output data:
[01, 00, 00, 00, e8, 86, b6, ac]Other Asus Zenfone logs :
01-25 17:11:36.859 4851-4934/com.example.app I/OMXClient: Using client-side OMX mux.
01-25 17:11:36.865 317-1075/? I/OMX-VDEC-1080P: component_init: OMX.qcom.video.decoder.avc : fd=43
01-25 17:11:36.867 317-1075/? I/OMX-VDEC-1080P: Capabilities: driver_name = msm_vidc_driver, card = msm_vdec_8974, bus_info = , version = 1, capabilities = 4003000
01-25 17:11:36.881 317-1075/? I/OMX-VDEC-1080P: omx_vdec::component_init() success : fd=43
01-25 17:11:36.885 4851-4934/com.example.app I/ACodec: [OMX.qcom.video.decoder.avc] DRC Mode: Dynamic Buffer Mode
01-25 17:11:36.893 317-20612/? E/C2DColorConvert: unknown format passed for luma alignment number
01-25 17:11:36.933 317-12269/? E/C2DColorConvert: unknown format passed for luma alignment number
01-25 17:11:36.933 317-12269/? E/C2DColorConvert: unknown format passed for luma alignment number
01-25 17:11:36.935 317-5559/? E/C2DColorConvert: unknown format passed for luma alignment number
01-25 17:11:36.957 317-5559/? E/C2DColorConvert: unknown format passed for luma alignment number
01-25 17:11:36.957 4851-4934/com.example.app I/ExtendedCodec: Decoder will be in frame by frame mode
01-25 17:11:36.963 317-1075/? E/C2DColorConvert: unknown format passed for luma alignment number
01-25 17:11:36.963 317-1075/? E/C2DColorConvert: unknown format passed for luma alignment number
01-25 17:11:36.964 317-20612/? E/OMX-VDEC-1080P: Extension: OMX.google.android.index.describeColorFormat not implemented
01-25 17:11:37.072 317-20612/? E/OMX-VDEC-1080P: Extension: OMX.google.android.index.describeColorFormat not implemented
01-25 17:11:37.072 4851-4934/com.example.app W/ACodec: do not know color format 0x7fa30c04 = 2141391876Asus Nexus 7 (Android 6.0.1) crashes :
01-25 17:23:06.921 11602-11695/com.example.app I/OMXClient: Using client-side OMX mux.
01-25 17:23:06.952 11602-11694/com.example.app I/MediaCodec: [OMX.qcom.video.decoder.avc] setting surface generation to 11880449
01-25 17:23:06.954 194-194/? E/OMX-VDEC-1080P: Extension: OMX.google.android.index.storeANWBufferInMetadata not implemented
01-25 17:23:06.954 194-194/? E/OMX-VDEC-1080P: Extension: OMX.google.android.index.storeMetaDataInBuffers not implemented
01-25 17:23:06.954 194-194/? E/OMXNodeInstance: getExtensionIndex(45:qcom.decoder.avc, OMX.google.android.index.storeMetaDataInBuffers) ERROR: NotImplemented(0x80001006)
01-25 17:23:06.954 11602-11695/com.example.app E/ACodec: [OMX.qcom.video.decoder.avc] storeMetaDataInBuffers failed w/ err -2147483648
01-25 17:23:06.963 11602-11695/com.example.app D/SurfaceUtils: set up nativeWindow 0xa0b7a108 for 720x576, color 0x7fa30c03, rotation 0, usage 0x42002900
01-25 17:23:06.967 194-604/? E/OMX-VDEC-1080P: GET_MV_BUFFER_SIZE returned: Size: 122880 and alignment: 8192
01-25 17:23:07.203 11602-11695/com.example.app W/AHierarchicalStateMachine: Warning message AMessage(what = 'omxI') = {
int32_t type = 0
int32_t event = 2130706432
int32_t data1 = 1
int32_t data2 = 0
} unhandled in root state.
01-25 17:23:07.232 11602-11695/com.example.app D/SurfaceUtils: set up nativeWindow 0xa0b7a108 for 720x576, color 0x7fa30c03, rotation 0, usage 0x42002900
01-25 17:23:07.241 194-194/? E/OMX-VDEC-1080P: GET_MV_BUFFER_SIZE returned: Size: 122880 and alignment: 8192
01-25 17:23:07.242 194-194/? E/OMX-VDEC-1080P: Insufficient sized buffer given for playback, expected 671744, got 663552
01-25 17:23:07.242 194-194/? E/OMXNodeInstance: useBuffer(45:qcom.decoder.avc, Output:1 671744@0xb60a0860) ERROR: BadParameter(0x80001005)
01-25 17:23:07.243 11602-11695/com.example.app E/ACodec: registering GraphicBuffer 0 with OMX IL component failed: -2147483648
01-25 17:23:07.243 11602-11695/com.example.app E/ACodec: Failed to allocate output port buffers after port reconfiguration: (-2147483648)
01-25 17:23:07.243 11602-11695/com.example.app E/ACodec: signalError(omxError 0x80001001, internalError -2147483648)
01-25 17:23:07.243 11602-11694/com.example.app E/MediaCodec: Codec reported err 0x80001001, actionCode 0, while in state 6
01-25 17:23:07.245 11602-11602/com.example.app W/System.err: java.lang.IllegalStateException
01-25 17:23:07.245 11602-11602/com.example.app W/System.err: at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
01-25 17:23:07.245 11602-11602/com.example.app W/System.err: at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:2379)
01-25 17:23:07.245 11602-11602/com.example.app W/System.err: at com.example.app.FfmpegPlayer$OutputThread.run(FfmpegPlayer.java:122)
01-25 17:23:07.245 11602-11602/com.example.app W/System.err: at com.example.app.FfmpegPlayer.setDataSource(FfmpegPlayer.java:66)
01-25 17:23:07.245 11602-11602/com.example.app W/System.err: at com.example.app.activities.TestActivity$2.surfaceCreated(TestActivity.java:151)
01-25 17:23:07.245 11602-11602/com.example.app W/System.err: at android.view.SurfaceView.updateWindow(SurfaceView.java:583)
01-25 17:23:07.245 11602-11602/com.example.app W/System.err: at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:177)
01-25 17:23:07.246 11602-11602/com.example.app W/System.err: at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:944)
01-25 17:23:07.246 11602-11602/com.example.app W/System.err: at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2055)
01-25 17:23:07.246 11602-11602/com.example.app W/System.err: at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
01-25 17:23:07.246 11602-11602/com.example.app W/System.err: at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
01-25 17:23:07.246 11602-11602/com.example.app W/System.err: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
01-25 17:23:07.246 11602-11602/com.example.app W/System.err: at android.view.Choreographer.doCallbacks(Choreographer.java:670)
01-25 17:23:07.246 11602-11602/com.example.app W/System.err: at android.view.Choreographer.doFrame(Choreographer.java:606)
01-25 17:23:07.246 11602-11602/com.example.app W/System.err: at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
01-25 17:23:07.246 11602-11602/com.example.app W/System.err: at android.os.Handler.handleCallback(Handler.java:739)
01-25 17:23:07.246 11602-11602/com.example.app W/System.err: at android.os.Handler.dispatchMessage(Handler.java:95)
01-25 17:23:07.246 11602-11602/com.example.app W/System.err: at android.os.Looper.loop(Looper.java:148)
01-25 17:23:07.246 11602-11602/com.example.app W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5417)
01-25 17:23:07.246 11602-11602/com.example.app W/System.err: at java.lang.reflect.Method.invoke(Native Method)
01-25 17:23:07.246 11602-11602/com.example.app W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
01-25 17:23:07.246 11602-11602/com.example.app W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)Another device always has empty output buffers, thought the indexes aren >= 0 ;
What am I doing wrong ?
- On some devices
-
FFMPEG Unable to Decode Quicktime QDMC Stream (No decoder for stream)
9 janvier 2017, par mbmastWe are using FFMPEG to convert iPhone video to MP4. This requires an AAC decoder which is not included in any binary distributions of FFMPEG (due to licensing issues). The solution is to download the FFMPEG source and compile it yourself. I’ve done this, apparently incorrectly, as I cannot decode the audio stream. I am getting this error :
/usr/ffmpeg_builds/ffmpeg -y -i /home/domain/public_html/wp-content/uploads/celebs/main/step-2.mov -threads 12 -vcodec libx264 -acodec libfdk_aac -b:v 1000k -refs 6 -coder 1 -sc_threshold 40 -flags +loop -me_range 16 -subq 7 -i_qfactor 0.71 -qcomp 0.6 -qdiff 4 -trellis 1 -b:a 128k -pass 1 -passlogfile /tmp/ffmpeg-passes57a054ee917c4ahl3t/pass-57a054ee91965 /home/domain/public_html/wp-content/uploads/celebs/main/testing-5.mp4
ffmpeg version N-81827-g81bab10 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-17)
configuration: --prefix=/root/ffmpeg_build --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --bindir=/root/bin --pkg-config-flags=--static --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libfreetype --enable-libx264
libavutil 55. 32.100 / 55. 32.100
libavcodec 57. 60.100 / 57. 60.100
libavformat 57. 51.102 / 57. 51.102
libavdevice 57. 0.102 / 57. 0.102
libavfilter 6. 63.100 / 6. 63.100
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 2.100 / 2. 2.100
libpostproc 54. 0.100 / 54. 0.100
Guessed Channel Layout for Input Stream #0.1 : mono
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/domain/public_html/wp-content/uploads/celebs/main/step-2.mov':
Metadata:
creation_time : 1998-11-04T16:40:13.000000Z
Duration: 00:01:00.83, start: 0.000000, bitrate: 110 kb/s
Stream #0:0(eng): Video: svq1 (SVQ1 / 0x31515653), yuv410p, 160x120, 90 kb/s, 7.51 fps, 7.50 tbr, 600 tbn, 600 tbc (default)
Metadata:
creation_time : 1998-11-04T16:40:13.000000Z
handler_name : Apple Alias Data Handler
encoder : Sorenson Video
Stream #0:1(eng): Audio: qdmc (QDMC / 0x434D4451), 44100 Hz, mono (default)
Metadata:
creation_time : 1998-11-04T16:40:13.000000Z
handler_name : Apple Alias Data Handler
No decoder for stream #0:1, filtering impossible
Error opening filters!I suspect that I failed to compile and include the correct codec library when I built FFMPEG. The problem is I don’t know which library I should have built/included. I haven’t found anything that says to decode QDMC audio in FFMPEG you need the XXXXX library.
Here’s the complete list of decoders that my build supports :
/usr/ffmpeg_builds/ffmpeg -decoders
ffmpeg version N-81827-g81bab10 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-17)
configuration: --prefix=/root/ffmpeg_build --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --bindir=/root/bin --pkg-config-flags=--static --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libfreetype --enable-libx264
libavutil 55. 32.100 / 55. 32.100
libavcodec 57. 60.100 / 57. 60.100
libavformat 57. 51.102 / 57. 51.102
libavdevice 57. 0.102 / 57. 0.102
libavfilter 6. 63.100 / 6. 63.100
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 2.100 / 2. 2.100
libpostproc 54. 0.100 / 54. 0.100
Decoders:
V..... = Video
A..... = Audio
S..... = Subtitle
.F.... = Frame-level multithreading
..S... = Slice-level multithreading
...X.. = Codec is experimental
....B. = Supports draw_horiz_band
.....D = Supports direct rendering method 1
------
V....D 012v Uncompressed 4:2:2 10-bit
V....D 4xm 4X Movie
V....D 8bps QuickTime 8BPS video
V....D aasc Autodesk RLE
VF...D aic Apple Intermediate Codec
V....D alias_pix Alias/Wavefront PIX image
V....D amv AMV Video
V....D anm Deluxe Paint Animation
V....D ansi ASCII/ANSI art
VF...D apng APNG (Animated Portable Network Graphics) image
V....D asv1 ASUS V1
V....D asv2 ASUS V2
V....D aura Auravision AURA
V....D aura2 Auravision Aura 2
V....D avrn Avid AVI Codec
V....D avrp Avid 1:1 10-bit RGB Packer
V....D avs AVS (Audio Video Standard) video
V....D avui Avid Meridien Uncompressed
V....D ayuv Uncompressed packed MS 4:4:4:4
V....D bethsoftvid Bethesda VID video
V....D bfi Brute Force & Ignorance
V....D binkvideo Bink video
V....D bintext Binary text
V....D bmp BMP (Windows and OS/2 bitmap)
V....D bmv_video Discworld II BMV video
V....D brender_pix BRender PIX image
V....D c93 Interplay C93
V....D cavs Chinese AVS (Audio Video Standard) (AVS1-P2, JiZhun profile)
V....D cdgraphics CD Graphics video
V....D cdxl Commodore CDXL video
VF...D cfhd Cineform HD
V....D cinepak Cinepak
V....D cljr Cirrus Logic AccuPak
V....D cllc Canopus Lossless Codec
V....D eacmv Electronic Arts CMV video (codec cmv)
V....D cpia CPiA video format
V....D camstudio CamStudio (codec cscd)
V....D cyuv Creative YUV (CYUV)
V.S..D dds DirectDraw Surface image decoder
V....D dfa Chronomaster DFA
V.S..D dirac BBC Dirac VC-2
VFS..D dnxhd VC3/DNxHD
V....D dpx DPX (Digital Picture Exchange) image
V....D dsicinvideo Delphine Software International CIN video
V.S..D dvvideo DV (Digital Video)
V....D dxa Feeble Files/ScummVM DXA
V....D dxtory Dxtory
VFS..D dxv Resolume DXV
V....D escape124 Escape 124
V....D escape130 Escape 130
VFS..D exr OpenEXR image
VFS..D ffv1 FFmpeg video codec #1
VF..BD ffvhuff Huffyuv FFmpeg variant
V.S..D fic Mirillis FIC
V....D flashsv Flash Screen Video v1
V....D flashsv2 Flash Screen Video v2
V....D flic Autodesk Animator Flic video
V...BD flv FLV / Sorenson Spark / Sorenson H.263 (Flash Video) (codec flv1)
VF...D fraps Fraps
V....D frwu Forward Uncompressed
V....D g2m Go2Meeting
V....D gif GIF (Graphics Interchange Format)
V....D h261 H.261
V...BD h263 H.263 / H.263-1996, H.263+ / H.263-1998 / H.263 version 2
V...BD h263i Intel H.263
V...BD h263p H.263 / H.263-1996, H.263+ / H.263-1998 / H.263 version 2
VFS..D h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
VFS..D hap Vidvox Hap decoder
VFS..D hevc HEVC (High Efficiency Video Coding)
V....D hnm4video HNM 4 video
V....D hq_hqa Canopus HQ/HQA
V.S..D hqx Canopus HQX
VF..BD huffyuv Huffyuv / HuffYUV
V....D idcinvideo id Quake II CIN video (codec idcin)
V....D idf iCEDraw text
V....D iff IFF ACBM/ANIM/DEEP/ILBM/PBM/RGB8/RGBN (codec iff_ilbm)
V....D indeo2 Intel Indeo 2
V....D indeo3 Intel Indeo 3
V....D indeo4 Intel Indeo Video Interactive 4
V....D indeo5 Intel Indeo Video Interactive 5
V....D interplayvideo Interplay MVE video
VFS..D jpeg2000 JPEG 2000
V....D jpegls JPEG-LS
V....D jv Bitmap Brothers JV video
V....D kgv1 Kega Game Video
V....D kmvc Karl Morton's video codec
VF...D lagarith Lagarith lossless
V....D loco LOCO
V....D m101 Matrox Uncompressed SD
V....D eamad Electronic Arts Madcow Video (codec mad)
VFS..D magicyuv MagicYUV video
VF...D mdec Sony PlayStation MDEC (Motion DECoder)
VF...D mimic Mimic
V....D mjpeg MJPEG (Motion JPEG)
V....D mjpegb Apple MJPEG-B
V....D mmvideo American Laser Games MM Video
V....D motionpixels Motion Pixels video
V.S.BD mpeg1video MPEG-1 video
V.S.BD mpeg2video MPEG-2 video
V.S.BD mpegvideo MPEG-1 video (codec mpeg2video)
VF..BD mpeg4 MPEG-4 part 2
V....D msa1 MS ATC Screen
V...BD msmpeg4v1 MPEG-4 part 2 Microsoft variant version 1
V...BD msmpeg4v2 MPEG-4 part 2 Microsoft variant version 2
V...BD msmpeg4 MPEG-4 part 2 Microsoft variant version 3 (codec msmpeg4v3)
V....D msrle Microsoft RLE
V....D mss1 MS Screen 1
V....D mss2 MS Windows Media Video V9 Screen
V....D msvideo1 Microsoft Video 1
V....D mszh LCL (LossLess Codec Library) MSZH
V....D mts2 MS Expression Encoder Screen
V....D mvc1 Silicon Graphics Motion Video Compressor 1
V....D mvc2 Silicon Graphics Motion Video Compressor 2
V....D mxpeg Mobotix MxPEG video
V....D nuv NuppelVideo/RTJPEG
V....D paf_video Amazing Studio Packed Animation File Video
V....D pam PAM (Portable AnyMap) image
V....D pbm PBM (Portable BitMap) image
V....D pcx PC Paintbrush PCX image
V....D pgm PGM (Portable GrayMap) image
V....D pgmyuv PGMYUV (Portable GrayMap YUV) image
V....D pictor Pictor/PC Paint
VF...D png PNG (Portable Network Graphics) image
V....D ppm PPM (Portable PixelMap) image
V.S..D prores ProRes
V.S..D prores_lgpl Apple ProRes (iCodec Pro) (codec prores)
V....D ptx V.Flash PTX image
V....D qdraw Apple QuickDraw
V....D qpeg Q-team QPEG
V....D qtrle QuickTime Animation (RLE) video
V....D r10k AJA Kona 10-bit RGB Codec
V....D r210 Uncompressed RGB 10-bit
V..... rawvideo raw video
V....D rl2 RL2 video
V....D roqvideo id RoQ video (codec roq)
V....D rpza QuickTime video (RPZA)
V....D rscc innoHeim/Rsupport Screen Capture Codec
V....D rv10 RealVideo 1.0
V....D rv20 RealVideo 2.0
VF...D rv30 RealVideo 3.0
VF...D rv40 RealVideo 4.0
V....D sanm LucasArts SANM/Smush video
V....D screenpresso Screenpresso
V....D sgi SGI image
V....D sgirle Silicon Graphics RLE 8-bit video
VF...D sheervideo BitJazz SheerVideo
V....D smackvid Smacker video (codec smackvideo)
V....D smc QuickTime Graphics (SMC)
V..... smvjpeg SMV JPEG
V....D snow Snow
V....D sp5x Sunplus JPEG (SP5X)
V....D sunrast Sun Rasterfile image
V....D svq1 Sorenson Vector Quantizer 1 / Sorenson Video 1 / SVQ1
V...BD svq3 Sorenson Vector Quantizer 3 / Sorenson Video 3 / SVQ3
V....D targa Truevision Targa image
V....D targa_y216 Pinnacle TARGA CineWave YUV16
V....D tdsc TDSC
V....D eatgq Electronic Arts TGQ video (codec tgq)
V....D eatgv Electronic Arts TGV video (codec tgv)
VF..BD theora Theora
V....D thp Nintendo Gamecube THP video
V....D tiertexseqvideo Tiertex Limited SEQ video
VF...D tiff TIFF image
V....D tmv 8088flex TMV
V....D eatqi Electronic Arts TQI Video (codec tqi)
V....D truemotion1 Duck TrueMotion 1.0
V....D truemotion2 Duck TrueMotion 2.0
V....D truemotion2rt Duck TrueMotion 2.0 Real Time
V....D camtasia TechSmith Screen Capture Codec (codec tscc)
V....D tscc2 TechSmith Screen Codec 2
V....D txd Renderware TXD (TeXture Dictionary) image
V....D ultimotion IBM UltiMotion (codec ulti)
VF...D utvideo Ut Video
V....D v210 Uncompressed 4:2:2 10-bit
V....D v210x Uncompressed 4:2:2 10-bit
V....D v308 Uncompressed packed 4:4:4
V....D v408 Uncompressed packed QT 4:4:4:4
V....D v410 Uncompressed 4:4:4 10-bit
V....D vb Beam Software VB
VF...D vble VBLE Lossless Codec
V....D vc1 SMPTE VC-1
V....D vc1image Windows Media Video 9 Image v2
V....D vcr1 ATI VCR1
V....D xl Miro VideoXL (codec vixl)
V....D vmdvideo Sierra VMD video
V....D vmnc VMware Screen Codec / VMware Video
VF..BD vp3 On2 VP3
V....D vp5 On2 VP5
V....D vp6 On2 VP6
V.S..D vp6a On2 VP6 (Flash version, with alpha channel)
V....D vp6f On2 VP6 (Flash version)
V....D vp7 On2 VP7
VFS..D vp8 On2 VP8
VF...D vp9 Google VP9
VF...D webp WebP image
V...BD wmv1 Windows Media Video 7
V...BD wmv2 Windows Media Video 8
V....D wmv3 Windows Media Video 9
V....D wmv3image Windows Media Video 9 Image
V....D wnv1 Winnov WNV1
V....D vqavideo Westwood Studios VQA (Vector Quantized Animation) video (codec ws_vqa)
V....D xan_wc3 Wing Commander III / Xan
V....D xan_wc4 Wing Commander IV / Xxan
V....D xbin eXtended BINary text
V....D xbm XBM (X BitMap) image
V..... xface X-face image
V....D xwd XWD (X Window Dump) image
V....D y41p Uncompressed YUV 4:1:1 12-bit
V....D ylc YUY2 Lossless Codec
V..... yop Psygnosis YOP Video
V....D yuv4 Uncompressed packed 4:2:0
V....D zerocodec ZeroCodec Lossless Video
V....D zlib LCL (LossLess Codec Library) ZLIB
V....D zmbv Zip Motion Blocks Video
A....D 8svx_exp 8SVX exponential
A....D 8svx_fib 8SVX fibonacci
A....D aac AAC (Advanced Audio Coding)
A....D aac_fixed AAC (Advanced Audio Coding) (codec aac)
A....D libfdk_aac Fraunhofer FDK AAC (codec aac)
A....D aac_latm AAC LATM (Advanced Audio Coding LATM syntax)
A....D ac3 ATSC A/52A (AC-3)
A....D ac3_fixed ATSC A/52A (AC-3) (codec ac3)
A....D adpcm_4xm ADPCM 4X Movie
A....D adpcm_adx SEGA CRI ADX ADPCM
A....D adpcm_afc ADPCM Nintendo Gamecube AFC
A....D adpcm_aica ADPCM Yamaha AICA
A....D adpcm_ct ADPCM Creative Technology
A....D adpcm_dtk ADPCM Nintendo Gamecube DTK
A....D adpcm_ea ADPCM Electronic Arts
A....D adpcm_ea_maxis_xa ADPCM Electronic Arts Maxis CDROM XA
A....D adpcm_ea_r1 ADPCM Electronic Arts R1
A....D adpcm_ea_r2 ADPCM Electronic Arts R2
A....D adpcm_ea_r3 ADPCM Electronic Arts R3
A....D adpcm_ea_xas ADPCM Electronic Arts XAS
A....D g722 G.722 ADPCM (codec adpcm_g722)
A....D g726 G.726 ADPCM (codec adpcm_g726)
A....D g726le G.726 ADPCM little-endian (codec adpcm_g726le)
A....D adpcm_ima_amv ADPCM IMA AMV
A....D adpcm_ima_apc ADPCM IMA CRYO APC
A....D adpcm_ima_dat4 ADPCM IMA Eurocom DAT4
A....D adpcm_ima_dk3 ADPCM IMA Duck DK3
A....D adpcm_ima_dk4 ADPCM IMA Duck DK4
A....D adpcm_ima_ea_eacs ADPCM IMA Electronic Arts EACS
A....D adpcm_ima_ea_sead ADPCM IMA Electronic Arts SEAD
A....D adpcm_ima_iss ADPCM IMA Funcom ISS
A....D adpcm_ima_oki ADPCM IMA Dialogic OKI
A....D adpcm_ima_qt ADPCM IMA QuickTime
A....D adpcm_ima_rad ADPCM IMA Radical
A....D adpcm_ima_smjpeg ADPCM IMA Loki SDL MJPEG
A....D adpcm_ima_wav ADPCM IMA WAV
A....D adpcm_ima_ws ADPCM IMA Westwood
A....D adpcm_ms ADPCM Microsoft
A....D adpcm_mtaf ADPCM MTAF
A....D adpcm_psx ADPCM Playstation
A....D adpcm_sbpro_2 ADPCM Sound Blaster Pro 2-bit
A....D adpcm_sbpro_3 ADPCM Sound Blaster Pro 2.6-bit
A....D adpcm_sbpro_4 ADPCM Sound Blaster Pro 4-bit
A....D adpcm_swf ADPCM Shockwave Flash
A....D adpcm_thp ADPCM Nintendo THP
A....D adpcm_thp_le ADPCM Nintendo THP (little-endian)
A....D adpcm_vima LucasArts VIMA audio
A....D adpcm_xa ADPCM CDROM XA
A....D adpcm_yamaha ADPCM Yamaha
AF...D alac ALAC (Apple Lossless Audio Codec)
A....D amrnb AMR-NB (Adaptive Multi-Rate NarrowBand) (codec amr_nb)
A....D amrwb AMR-WB (Adaptive Multi-Rate WideBand) (codec amr_wb)
A....D ape Monkey's Audio
A....D atrac1 ATRAC1 (Adaptive TRansform Acoustic Coding)
A....D atrac3 ATRAC3 (Adaptive TRansform Acoustic Coding 3)
A....D atrac3plus ATRAC3+ (Adaptive TRansform Acoustic Coding 3+) (codec atrac3p)
A....D on2avc On2 Audio for Video Codec (codec avc)
A....D binkaudio_dct Bink Audio (DCT)
A....D binkaudio_rdft Bink Audio (RDFT)
A....D bmv_audio Discworld II BMV audio
A....D comfortnoise RFC 3389 comfort noise generator
A....D cook Cook / Cooker / Gecko (RealAudio G2)
A..... dsd_lsbf DSD (Direct Stream Digital), least significant bit first
A..... dsd_lsbf_planar DSD (Direct Stream Digital), least significant bit first, planar
A..... dsd_msbf DSD (Direct Stream Digital), most significant bit first
A..... dsd_msbf_planar DSD (Direct Stream Digital), most significant bit first, planar
A....D dsicinaudio Delphine Software International CIN audio
A....D dss_sp Digital Speech Standard - Standard Play mode (DSS SP)
A....D dst DST (Digital Stream Transfer)
A....D dca DCA (DTS Coherent Acoustics) (codec dts)
A....D dvaudio Ulead DV Audio
A....D eac3 ATSC A/52B (AC-3, E-AC-3)
A....D evrc EVRC (Enhanced Variable Rate Codec)
AF...D flac FLAC (Free Lossless Audio Codec)
A....D g723_1 G.723.1
A....D g729 G.729
A....D gsm GSM
A....D gsm_ms GSM Microsoft variant
A....D iac IAC (Indeo Audio Coder)
A....D imc IMC (Intel Music Coder)
A....D interplay_dpcm DPCM Interplay
A....D interplayacm Interplay ACM
A....D mace3 MACE (Macintosh Audio Compression/Expansion) 3:1
A....D mace6 MACE (Macintosh Audio Compression/Expansion) 6:1
A....D metasound Voxware MetaSound
A....D mlp MLP (Meridian Lossless Packing)
A....D mp1 MP1 (MPEG audio layer 1)
A....D mp1float MP1 (MPEG audio layer 1) (codec mp1)
A....D mp2 MP2 (MPEG audio layer 2)
A....D mp2float MP2 (MPEG audio layer 2) (codec mp2)
A....D mp3 MP3 (MPEG audio layer 3)
A....D mp3float MP3 (MPEG audio layer 3) (codec mp3)
A....D mp3adu ADU (Application Data Unit) MP3 (MPEG audio layer 3)
A....D mp3adufloat ADU (Application Data Unit) MP3 (MPEG audio layer 3) (codec mp3adu)
A....D mp3on4 MP3onMP4
A....D mp3on4float MP3onMP4 (codec mp3on4)
A....D als MPEG-4 Audio Lossless Coding (ALS) (codec mp4als)
A....D mpc7 Musepack SV7 (codec musepack7)
A....D mpc8 Musepack SV8 (codec musepack8)
A....D nellymoser Nellymoser Asao
A....D opus Opus
A....D paf_audio Amazing Studio Packed Animation File Audio
A....D pcm_alaw PCM A-law / G.711 A-law
A....D pcm_bluray PCM signed 16|20|24-bit big-endian for Blu-ray media
A....D pcm_dvd PCM signed 16|20|24-bit big-endian for DVD media
A....D pcm_f32be PCM 32-bit floating point big-endian
A....D pcm_f32le PCM 32-bit floating point little-endian
A....D pcm_f64be PCM 64-bit floating point big-endian
A....D pcm_f64le PCM 64-bit floating point little-endian
A....D pcm_lxf PCM signed 20-bit little-endian planar
A....D pcm_mulaw PCM mu-law / G.711 mu-law
A....D pcm_s16be PCM signed 16-bit big-endian
A....D pcm_s16be_planar PCM signed 16-bit big-endian planar
A....D pcm_s16le PCM signed 16-bit little-endian
A....D pcm_s16le_planar PCM signed 16-bit little-endian planar
A....D pcm_s24be PCM signed 24-bit big-endian
A....D pcm_s24daud PCM D-Cinema audio signed 24-bit
A....D pcm_s24le PCM signed 24-bit little-endian
A....D pcm_s24le_planar PCM signed 24-bit little-endian planar
A....D pcm_s32be PCM signed 32-bit big-endian
A....D pcm_s32le PCM signed 32-bit little-endian
A....D pcm_s32le_planar PCM signed 32-bit little-endian planar
A....D pcm_s64be PCM signed 64-bit big-endian
A....D pcm_s64le PCM signed 64-bit little-endian
A....D pcm_s8 PCM signed 8-bit
A....D pcm_s8_planar PCM signed 8-bit planar
A....D pcm_u16be PCM unsigned 16-bit big-endian
A....D pcm_u16le PCM unsigned 16-bit little-endian
A....D pcm_u24be PCM unsigned 24-bit big-endian
A....D pcm_u24le PCM unsigned 24-bit little-endian
A....D pcm_u32be PCM unsigned 32-bit big-endian
A....D pcm_u32le PCM unsigned 32-bit little-endian
A....D pcm_u8 PCM unsigned 8-bit
A....D pcm_zork PCM Zork
A....D qcelp QCELP / PureVoice
A....D qdm2 QDesign Music Codec 2
A....D real_144 RealAudio 1.0 (14.4K) (codec ra_144)
A....D real_288 RealAudio 2.0 (28.8K) (codec ra_288)
A....D ralf RealAudio Lossless
A....D roq_dpcm DPCM id RoQ
A....D s302m SMPTE 302M
A....D sdx2_dpcm DPCM Squareroot-Delta-Exact
A....D shorten Shorten
A....D sipr RealAudio SIPR / ACELP.NET
A....D smackaud Smacker audio (codec smackaudio)
A....D sol_dpcm DPCM Sol
A..X.D sonic Sonic
AF...D tak TAK (Tom's lossless Audio Kompressor)
A....D truehd TrueHD
A....D truespeech DSP Group TrueSpeech
AF...D tta TTA (True Audio)
A....D twinvq VQF TwinVQ
A....D vmdaudio Sierra VMD audio
A....D vorbis Vorbis
A....D wavesynth Wave synthesis pseudo-codec
AF...D wavpack WavPack
A....D ws_snd1 Westwood Audio (SND1) (codec westwood_snd1)
A....D wmalossless Windows Media Audio Lossless
A....D wmapro Windows Media Audio 9 Professional
A....D wmav1 Windows Media Audio 1
A....D wmav2 Windows Media Audio 2
A....D wmavoice Windows Media Audio Voice
A....D xan_dpcm DPCM Xan
A....D xma1 Xbox Media Audio 1
A....D xma2 Xbox Media Audio 2
S..... ssa ASS (Advanced SubStation Alpha) subtitle (codec ass)
S..... ass ASS (Advanced SubStation Alpha) subtitle
S..... dvbsub DVB subtitles (codec dvb_subtitle)
S..... dvdsub DVD subtitles (codec dvd_subtitle)
S..... cc_dec Closed Caption (EIA-608 / CEA-708) Decoder (codec eia_608)
S..... pgssub HDMV Presentation Graphic Stream subtitles (codec hdmv_pgs_subtitle)
S..... jacosub JACOsub subtitle
S..... microdvd MicroDVD subtitle
S..... mov_text 3GPP Timed Text subtitle
S..... mpl2 MPL2 subtitle
S..... pjs PJS subtitle
S..... realtext RealText subtitle
S..... sami SAMI subtitle
S..... stl Spruce subtitle format
S..... srt SubRip subtitle (codec subrip)
S..... subrip SubRip subtitle
S..... subviewer SubViewer subtitle
S..... subviewer1 SubViewer1 subtitle
S..... text Raw text subtitle
S..... vplayer VPlayer subtitle
S..... webvtt WebVTT subtitle
S..... xsub XSUBAny idea what I did wrong when building FFMPEG ?
Here’s a link to the video file that caused the problem : step-2.mov
-
Running Windows XP In 2016
2 janvier 2016, par Multimedia MikeI have an interest in getting a 32-bit Windows XP machine up and running. I have a really good yet slightly dated and discarded computer that seemed like a good candidate for dedicating to this task. So the question is : Can Windows XP still be installed from scratch on a computer, activated, and used in 2016 ? I wasn’t quite sure since I have heard stories about how Microsoft has formally ended support for Windows XP as of the first half of 2014 and I wasn’t entirely sure what that meant.
Spoiler : It’s still possible to install and activate Windows XP as of the writing of this post. It’s also possible to download and install all the updates published up until support ended.
The Candidate Computer
This computer was assembled either in late 2008 or early 2009. It was a beast at the time.
Click for a larger image
It was built around the newly-released NVIDIA GTX 280 video card. The case is a Thermaltake DH-101, which is a home theater PC thing. The motherboard is an Asus P5N32-SLI Premium with a Core 2 Duo X6800 2.93 GHz CPU on board. 2 GB of RAM and a 1.5 TB hard drive are also present.
The original owner handed it off to me because their family didn’t have much use for it anymore (too many other machines in the house). Plus it was really, obnoxiously loud. The noisy culprit was the stock blue fan that came packaged with the Intel processor (seen in the photo) whining at around 65 dB. I replaced the fan and brought the noise level way down.
As for connectivity, the motherboard has dual gigabit NICs (of 2 different chipsets for some reason) and onboard wireless 802.11g. I couldn’t make the latter work and this project was taking place a significant distance from my wired network. Instead, I connected a USB 802.11ac dongle and antenna which is advertised to work in both Windows XP and Linux. It works great under Windows XP. Meanwhile, making the adapter work under Linux provided a retro-computing adventure in which I had to modify C code to make the driver work.
So, score 1 for Windows XP over Linux here.
The Simple Joy of Retro-computing
One thing you have to watch out for when you get into retro-computing is fighting the urge to rant about the good old days of computing. Most long-time computer users have a good understanding of the frustration that computers keep getting faster by orders of magnitude and yet using them somehow feels slower and slower over successive software generations.
This really hits home when you get old software running, especially on high-end hardware (relative to what was standard contemporary hardware). After I got this new Windows XP machine running, as usual, I was left wondering why software was so much faster a few generations ago.
Of course, as mentioned, it helps when you get to run old software on hardware that would have been unthinkably high end at the software’s release. Apparently, the minimum WinXP specs as set by MS are a 233 MHz Pentium CPU and 64 MB of RAM, with 1.5 GB of hard drive space. This machine has more than 10x the clock speed (and 2 CPUs), 32x the RAM, and 1000x the HD space. Further, I’m pretty sure 100 Mbit ethernet was the standard consumer gear in 2001 while 802.11b wireless was gaining traction. The 802.11ac adapter makes networking quite pleasant.
Purpose
Retro-computing really seems to be ramping up in popularity lately. For some reason, I feel compelled to declare at this juncture that I was into it before it was cool.Why am I doing this ? I have a huge collection of old DOS/Windows computer games. I also have this nerdy obsession with documenting old video games in the MobyGames database. I used to do a lot of this a few years ago, tracking the effort on my gaming blog. In the intervening years, I have still collected a lot of old, unused, unloved video games, usually either free or very cheap while documenting my collection efforts on that same blog.
So I want to work my way through some of this backlog, particularly the games that are not yet represented in the MobyGames database, and even more pressing, ones that the internet (viewed through Google at least) does not seem to know about. To that end, I thought this was a good excuse to get Windows XP on this old machine. A 32-bit Windows XP machine is capable of running any software advertised as supporting Windows XP, Windows ME, Windows 98, Windows 95, and even 16-bit Windows 3.x (I have games for all these systems). That covers a significant chunk of PC history. It can probably be made to run DOS games as well, but those are (usually) better run under DosBox. In order to get the right display feel, I even invested in a (used) monitor sporting a 4:3 aspect ratio. If I know these old games, most will be engineered and optimized for that ratio rather than the widescreen resolutions seen nowadays.
I would also like to get back to that Xbox optical disc experimentation I was working on a few years ago. Another nice feature of this motherboard is that it still provides a 40-pin IDE/PATA adapter which makes the machine useful for continuing that old investigation (and explains why I have that long IDE cable to no where pictured hanging off the board).
The Messy Details
I did the entire installation process twice. The first time was a bumbling journey of discovery and copious note-taking. I still have Windows XP installation media that includes service pack 2 (SP2), along with 2 separate licenses that haven’t been activated for a long time. My plan was to install it fresh, then install the relevant drivers. Then I would investigate the Windows update and activation issues and everything should be fine.So what’s the deal with Windows Update for XP, and with activations ? Second item first : it IS possible to still activate Windows XP. The servers are still alive and respond quickly. However, as always, you don’t activate until you’re sure everything is working at some baseline. It took awhile to get there.
As for whether Windows Update still works for XP, that’s a tougher question. Short answer is yes ; longer answer is that it can be difficult to kick off the update process. At least on SP2, the “Windows Update” program launches IE6 and navigates to a special microsoft.com URL which initiates the update process (starting with an ActiveX control). This URL no longer exists.
From what I can piece together from my notes, this seems to be the route I eventually took :
- Install Windows XP fresh
- Install drivers for the hardware ; fortunately, Asus still has all the latest drivers necessary for the motherboard and its components but it’s necessary to download these from another network-connected PC since the networking probably won’t be running “out of the box”
- Download the .NET 3.5 runtime, which is the last one supported by Windows XP, and install it
- Download the latest NVIDIA drivers ; this needs to be done after the previous step because the installer requires the .NET runtime ; run the driver installer and don’t try to understand why it insists on re-downloading .NET 3.5 runtime before installation
- While you’re downloading stuff on other computers to be transported to this new machine, be sure to download either Chrome or Firefox per your preference ; if you try to download via IE6, you may find that their download pages aren’t compatible with IE6
- Somewhere along the line (I’m guessing as a side effect of the .NET 3.5 installation), the proper, non-IE6-based Windows Update program magically springs to life ; once this happens, there will be 144 updates (in my case anyway) ; installing these will probably require multiple reboots, but SP3 and all known pre-deprecation security fixes will be installed
- Expect that, even after installing all of these, a few more updates will appear ; eventually, you’ll be at the end of the update road
- Once you’re satisfied everything is working satisfactorily, take the plunge and activate your installation
Residual Quirks
Steam runs great on Windows XP, as do numerous games I have purchased through the service. So that opens up a whole bunch more games that I could play on this machine. Steam’s installer highlights a curious legacy problem of Windows XP– it seems there are many languages that it does not support “out of the box” :
It looks like the Chinese options and a few others that are standard now weren’t standard 15 years ago.
Also, a little while after booting up, I’ll get a crashing error concerning a process called geoforms.scr. This appears to be NVIDIA-related. However, I don’t notice anything obviously operationally wrong with the system.
Regarding DirectX support, DirectX 9 is the highest version officially supported by Windows XP. There are allegedly methods to get DirectX 10 running as well, but I don’t care that much. I did care, briefly, when I realized that a bunch of the demos for the NVIDIA GTX 280 required DX10 which left me wondering why it was possible to install them on Windows XP.
Eventually, by installing enough of these old games, I fully expect to have numerous versions of .NET, DirectX, QT, and Video for Windows installed side by side.
Out of curiosity, I tried playing a YouTube HD/1080p video. I wanted to see if the video was accelerated through my card. The video played at full speed but I noticed some tearing. Then I inspected the CPU usage and noticed that the CPU was quite loaded. So either the GTX 280 doesn’t have video acceleration, or Windows XP doesn’t provide the right APIs, or Chrome is not able to access the APIs in Windows XP, or perhaps some combination of the foregoing.
Games are working well, though. I tried one of my favorite casual games and got sucked into that for, like, an entire night because that’s what casual games do. But then, I booted up a copy of WarCraft III that I procured sometime ago. I don’t have any experience with the WarCraft universe (RTS or MMO) but I developed a keen interest in StarCraft II over the past few years and wanted to try WarCraft III. Unfortunately, I couldn’t get WarCraft III to work correctly on several different Windows 7 installations (movies didn’t play, which left me slightly confused as to what I was supposed to do).
Still works beautifully on the new old Windows XP machine.
The post Running Windows XP In 2016 first appeared on Breaking Eggs And Making Omelettes.