
Recherche avancée
Autres articles (42)
-
Des sites réalisés avec MediaSPIP
2 mai 2011, parCette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page. -
HTML5 audio and video support
13 avril 2011, parMediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
For older browsers the Flowplayer flash fallback is used.
MediaSPIP allows for media playback on major mobile platforms with the above (...) -
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 (...)
Sur d’autres sites (5316)
-
exo player mp2, aac audio format and avi video format [closed]
27 mai 2020, par Muhammet

/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.google.android.exoplayer2.ext.ffmpeg;

import android.os.Handler;
import androidx.annotation.Nullable;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.ExoPlaybackException;
import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.audio.AudioProcessor;
import com.google.android.exoplayer2.audio.AudioRendererEventListener;
import com.google.android.exoplayer2.audio.AudioSink;
import com.google.android.exoplayer2.audio.DefaultAudioSink;
import com.google.android.exoplayer2.audio.SimpleDecoderAudioRenderer;
import com.google.android.exoplayer2.drm.DrmSessionManager;
import com.google.android.exoplayer2.drm.ExoMediaCrypto;
import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.util.MimeTypes;
import java.util.Collections;
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;

/**
 * Decodes and renders audio using FFmpeg.
 */
public final class FfmpegAudioRenderer extends SimpleDecoderAudioRenderer {

 /** The number of input and output buffers. */
 private static final int NUM_BUFFERS = 16;
 /** The default input buffer size. */
 private static final int DEFAULT_INPUT_BUFFER_SIZE = 960 * 6;

 private final boolean enableFloatOutput;

 private @MonotonicNonNull FfmpegDecoder decoder;

 public FfmpegAudioRenderer() {
 this(/* eventHandler= */ null, /* eventListener= */ null);
 }

 /**
 * @param eventHandler A handler to use when delivering events to {@code eventListener}. May be
 * null if delivery of events is not required.
 * @param eventListener A listener of events. May be null if delivery of events is not required.
 * @param audioProcessors Optional {@link AudioProcessor}s that will process audio before output.
 */
 public FfmpegAudioRenderer(
 @Nullable Handler eventHandler,
 @Nullable AudioRendererEventListener eventListener,
 AudioProcessor... audioProcessors) {
 this(
 eventHandler,
 eventListener,
 new DefaultAudioSink(/* audioCapabilities= */ null, audioProcessors),
 /* enableFloatOutput= */ false);
 }

 /**
 * @param eventHandler A handler to use when delivering events to {@code eventListener}. May be
 * null if delivery of events is not required.
 * @param eventListener A listener of events. May be null if delivery of events is not required.
 * @param audioSink The sink to which audio will be output.
 * @param enableFloatOutput Whether to enable 32-bit float audio format, if supported on the
 * device/build and if the input format may have bit depth higher than 16-bit. When using
 * 32-bit float output, any audio processing will be disabled, including playback speed/pitch
 * adjustment.
 */
 public FfmpegAudioRenderer(
 @Nullable Handler eventHandler,
 @Nullable AudioRendererEventListener eventListener,
 AudioSink audioSink,
 boolean enableFloatOutput) {
 super(
 eventHandler,
 eventListener,
 /* drmSessionManager= */ null,
 /* playClearSamplesWithoutKeys= */ false,
 audioSink);
 this.enableFloatOutput = enableFloatOutput;
 }

 @Override
 @FormatSupport
 protected int supportsFormatInternal(
 @Nullable DrmSessionManager<exomediacrypto> drmSessionManager, Format format) {
 Assertions.checkNotNull(format.sampleMimeType);
 if (!FfmpegLibrary.isAvailable()) {
 return FORMAT_UNSUPPORTED_TYPE;
 } else if (!FfmpegLibrary.supportsFormat(format.sampleMimeType) || !isOutputSupported(format)) {
 return FORMAT_UNSUPPORTED_SUBTYPE;
 } else if (!supportsFormatDrm(drmSessionManager, format.drmInitData)) {
 return FORMAT_UNSUPPORTED_DRM;
 } else {
 return FORMAT_HANDLED;
 }
 }

 @Override
 @AdaptiveSupport
 public final int supportsMixedMimeTypeAdaptation() throws ExoPlaybackException {
 return ADAPTIVE_NOT_SEAMLESS;
 }

 @Override
 protected FfmpegDecoder createDecoder(Format format, @Nullable ExoMediaCrypto mediaCrypto)
 throws FfmpegDecoderException {
 int initialInputBufferSize =
 format.maxInputSize != Format.NO_VALUE ? format.maxInputSize : DEFAULT_INPUT_BUFFER_SIZE;
 decoder =
 new FfmpegDecoder(
 NUM_BUFFERS, NUM_BUFFERS, initialInputBufferSize, format, shouldUseFloatOutput(format));
 return decoder;
 }

 @Override
 public Format getOutputFormat() {
 Assertions.checkNotNull(decoder);
 int channelCount = decoder.getChannelCount();
 int sampleRate = decoder.getSampleRate();
 @C.PcmEncoding int encoding = decoder.getEncoding();
 return Format.createAudioSampleFormat(
 /* id= */ null,
 MimeTypes.AUDIO_RAW,
 /* codecs= */ null,
 Format.NO_VALUE,
 Format.NO_VALUE,
 channelCount,
 sampleRate,
 encoding,
 Collections.emptyList(),
 /* drmInitData= */ null,
 /* selectionFlags= */ 0,
 /* language= */ null);
 }

 private boolean isOutputSupported(Format inputFormat) {
 return shouldUseFloatOutput(inputFormat)
 || supportsOutput(inputFormat.channelCount, C.ENCODING_PCM_16BIT);
 }

 private boolean shouldUseFloatOutput(Format inputFormat) {
 Assertions.checkNotNull(inputFormat.sampleMimeType);
 if (!enableFloatOutput || !supportsOutput(inputFormat.channelCount, C.ENCODING_PCM_FLOAT)) {
 return false;
 }
 switch (inputFormat.sampleMimeType) {
 case MimeTypes.AUDIO_RAW:
 // For raw audio, output in 32-bit float encoding if the bit depth is > 16-bit.
 return inputFormat.pcmEncoding == C.ENCODING_PCM_24BIT
 || inputFormat.pcmEncoding == C.ENCODING_PCM_32BIT
 || inputFormat.pcmEncoding == C.ENCODING_PCM_FLOAT;
 case MimeTypes.AUDIO_AC3:
 // AC-3 is always 16-bit, so there is no point outputting in 32-bit float encoding.
 return false;
 default:
 // For all other formats, assume that it's worth using 32-bit float encoding.
 return true;
 }
 }

}</exomediacrypto>








I use exoplayer but no sound from mp2 and aac audio formats in android application.



I get this error when I open mp2 and aac audio format videos "media includes audio tracks but none



are playable by this device"and some are not working in .avi format, some are working please can you help me





/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.google.android.exoplayer2.ext.ffmpeg;

import androidx.annotation.Nullable;
import com.google.android.exoplayer2.ExoPlayerLibraryInfo;
import com.google.android.exoplayer2.util.LibraryLoader;
import com.google.android.exoplayer2.util.Log;
import com.google.android.exoplayer2.util.MimeTypes;

/**
 * Configures and queries the underlying native library.
 */
public final class FfmpegLibrary {

 static {
 ExoPlayerLibraryInfo.registerModule("goog.exo.ffmpeg");
 }

 private static final String TAG = "FfmpegLibrary";

 private static final LibraryLoader LOADER =
 new LibraryLoader("avutil", "swresample", "avcodec", "ffmpeg");

 private FfmpegLibrary() {}

 /**
 * Override the names of the FFmpeg native libraries. If an application wishes to call this
 * method, it must do so before calling any other method defined by this class, and before
 * instantiating a {@link FfmpegAudioRenderer} instance.
 *
 * @param libraries The names of the FFmpeg native libraries.
 */
 public static void setLibraries(String... libraries) {
 LOADER.setLibraries(libraries);
 }

 /**
 * Returns whether the underlying library is available, loading it if necessary.
 */
 public static boolean isAvailable() {
 return LOADER.isAvailable();
 }

 /** Returns the version of the underlying library if available, or null otherwise. */
 public static @Nullable String getVersion() {
 return isAvailable() ? ffmpegGetVersion() : null;
 }

 /**
 * Returns whether the underlying library supports the specified MIME type.
 *
 * @param mimeType The MIME type to check.
 */
 public static boolean supportsFormat(String mimeType) {
 if (!isAvailable()) {
 return false;
 }
 String codecName = getCodecName(mimeType);
 if (codecName == null) {
 return false;
 }
 if (!ffmpegHasDecoder(codecName)) {
 Log.w(TAG, "No " + codecName + " decoder available. Check the FFmpeg build configuration.");
 return false;
 }
 return true;
 }

 /**
 * Returns the name of the FFmpeg decoder that could be used to decode the format, or {@code null}
 * if it's unsupported.
 */
 /* package */ static @Nullable String getCodecName(String mimeType) {
 switch (mimeType) {
 case MimeTypes.AUDIO_AAC:
 return "aac";
 case MimeTypes.AUDIO_MPEG:
 case MimeTypes.AUDIO_MPEG_L1:
 case MimeTypes.AUDIO_MPEG_L2:
 return "mp3";
 case MimeTypes.AUDIO_AC3:
 return "ac3";
 case MimeTypes.AUDIO_E_AC3:
 case MimeTypes.AUDIO_E_AC3_JOC:
 return "eac3";
 case MimeTypes.AUDIO_TRUEHD:
 return "truehd";
 case MimeTypes.AUDIO_DTS:
 case MimeTypes.AUDIO_DTS_HD:
 return "dca";
 case MimeTypes.AUDIO_VORBIS:
 return "vorbis";
 case MimeTypes.AUDIO_OPUS:
 return "opus";
 case MimeTypes.AUDIO_AMR_NB:
 return "amrnb";
 case MimeTypes.AUDIO_AMR_WB:
 return "amrwb";
 case MimeTypes.AUDIO_FLAC:
 return "flac";
 case MimeTypes.AUDIO_ALAC:
 return "alac";
 case MimeTypes.AUDIO_MLAW:
 return "pcm_mulaw";
 case MimeTypes.AUDIO_ALAW:
 return "pcm_alaw";
 default:
 return null;
 }
 }

 private static native String ffmpegGetVersion();
 private static native boolean ffmpegHasDecoder(String codecName);

}








[enter image description here][1]
[enter image description here][2]


-
Error while opening encoder for output stream #0:0 for Creating Video from image,Gif,music
29 février 2020, par brijeshI am trying to create a video from image,gif and music.
Here is the code I used :
{"-y", "-i", imagepath, "-ignore_loop", "0", "-i", gif, "-filter_complex", "[1:v]scale=" + filterdBitmap.getWidth() + ":" + filterdBitmap.getHeight() + "[ovrl];[0:v][ovrl]overlay=0:0", "-ss", "" + startMs / 1000, "-t", "" + endMs / 1000, "-i", songpath, "-c:v", "libx264", "-preset", "ultrafast", "-r", "30", "-pix_fmt", "yuva420p", "-c:a", "aac", "-shortest", outputLocation.getPath()};
The error I received was this :
Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Specifically, here is the complete response :
2020-02-29 10:16:01.043 14913-14913/com.photocreator E/fail: ffmpeg version n3.0.1 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 4.8 (GCC)
configuration: --target-os=linux --cross-prefix=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/bin/arm-linux-androideabi- --arch=arm --cpu=cortex-a8 --enable-runtime-cpudetect --sysroot=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/sysroot --enable-pic --enable-libx264 --enable-libass --enable-libfreetype --enable-libfribidi --enable-libmp3lame --enable-fontconfig --enable-pthreads --disable-debug --disable-ffserver --enable-version3 --enable-hardcoded-tables --disable-ffplay --disable-ffprobe --enable-gpl --enable-yasm --disable-doc --disable-shared --enable-static --pkg-config=/home/vagrant/SourceCode/ffmpeg-android/ffmpeg-pkg-config --prefix=/home/vagrant/SourceCode/ffmpeg-android/build/armeabi-v7a --extra-cflags='-I/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/include -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all' --extra-ldflags='-L/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/lib -Wl,-z,relro -Wl,-z,now -pie' --extra-libs='-lpng -lexpat -lm' --extra-cxxflags=
libavutil 55. 17.103 / 55. 17.103
libavcodec 57. 24.102 / 57. 24.102
libavformat 57. 25.100 / 57. 25.100
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 31.100 / 6. 31.100
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
Input #0, png_pipe, from 'file:///storage/emulated/0/1582951553006.jpg':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: png, rgba(pc), 639x812, 25 tbr, 25 tbn, 25 tbc
Input #1, gif, from 'http://13.232.145.224:3003/getpath/video_maker/new/35.gif':
Duration: N/A, bitrate: N/A
Stream #1:0: Video: gif, bgra, 288x480, 15 fps, 15 tbr, 100 tbn, 100 tbc
[mp3 @ 0xaea97200] Skipping 0 bytes of junk at 253.
Input #2, mp3, from '/storage/emulated/0/Download/supnaringtone-49332.mp3':
Metadata:
encoder : Lavf58.20.100
Duration: 00:00:21.76, start: 0.025057, bitrate: 64 kb/s
Stream #2:0: Audio: mp3, 44100 Hz, stereo, s16p, 64 kb/s
Metadata:
encoder : Lavc58.35
Incompatible pixel format 'yuva420p' for codec 'libx264', auto-selecting format 'yuv420p'
[libx264 @ 0xaeacfc00] width not divisible by 2 (639x812)
Output #0, mp4, to '/storage/emulated/0/allkotlin/video/movie_1582951554388.mp4':
Stream #0:0: Video: h264, none, q=2-31, 128 kb/s, 30 fps (default)
Metadata:
encoder : Lavc57.24.102 libx264
Stream #0:1: Audio: aac, 0 channels, 128 kb/s
Metadata:
encoder : Lavc57.24.102 aac
Stream mapping:
Stream #0:0 (png) -> overlay:main (graph 0)
Stream #1:0 (gif) -> scale (graph 0)
overlay (graph 0) -> Stream #0:0 (libx264)
Stream #2:0 -> #0:1 (mp3 (native) -> aac (native))
Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or heightIf I use -s 560x560 , it works great, except then I can’t keep on using my aspect ratio :
And here is my code :
public class PhotoEditing extends AppCompatActivity implements GetGifAdapter.GlideInterface, SdCardSongAdapter.MediaInterface
, FiltersListFragmentListener, EmojiFragmentListener, AddTextFragmentListener {
public static final String FILE_PROVIDER_AUTHORITY = "com.burhanrashid52.photoeditor.fileprovider";
@Nullable
@VisibleForTesting
Uri mSaveImageUri;
PhotoEditorView image_preview;
ImageView image_gif/*,image_preview*/;
ImageView save, back;
LinearLayout linearLayout;
public String sessionId, sessionId1;
Uri image_selected_uri;
public Bitmap originalBitmap, filterdBitmap, finalBitmap;
LinearLayout btn_music_list, btn_music_cut, btn_add_gif, btn_filters_list, btn_emoji, btn_add_text;
MediaPlayer mediaPlayer;
String mediaData;
LinearLayout relativeLayout;
RelativeLayout seekbar_layout, fm;
RelativeLayout.LayoutParams layoutparam;
RangeSeekBar rangeSeekBar;
Runnable r;
Handler mHandler;
private int duration;
private TextView tvLeft, tvRight;
RelativeLayout rl_replace, music_fragment;
FilterListFragment filterListFragment;
EmojiFragment emojiFragment;
PhotoEditor photoEditor;
int screenWidth, screenHeight;
Bitmap bitmap;
int brightnessFinal = 0;
int saturationFinal = 0;
int constrantFinal = 0;
int hue = 0;
String glideData;
FFmpeg ffmpeg;
String s;
String imageHeight;
String imageWidth ;
private static final String TAG = "BRIJESH";
Context context = this;
static {
System.loadLibrary("NativeImageProcessor");
}
public Bitmap resizeImageToNewSize(Bitmap bitmap, int i, int i2) {
try {
int width = bitmap.getWidth();
int height = bitmap.getHeight();
float f = (float) i;
float f2 = (float) i2;
if (!(height == i2 && width == i)) {
float f3 = (float) width;
float f4 = f / f3;
float f5 = (float) height;
float f6 = f2 / f5;
if (f4 < f6) {
f6 = f4;
}
f = f3 * f6;
f2 = f5 * f6;
}
Bitmap bitmap1 = Bitmap.createScaledBitmap(bitmap, (int) f, (int) f2, true);
fm.removeView(image_preview);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(bitmap1.getWidth(), bitmap1.getHeight());
params.addRule(RelativeLayout.CENTER_HORIZONTAL);
image_preview.setLayoutParams(params);
fm.addView(image_preview);
return bitmap1;
} catch (Exception unused) {
fm.removeView(image_preview);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(200, 100);
params.addRule(RelativeLayout.CENTER_IN_PARENT);
image_preview.setLayoutParams(params);
fm.addView(image_preview);
return bitmap;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_photo_editing);
initialize(this);
image_preview = findViewById(R.id.image_preview);
image_preview.getSource().setScaleType(ImageView.ScaleType.FIT_XY);
photoEditor = new PhotoEditor.Builder(this, image_preview)
.setPinchTextScalable(true)
.build();
image_gif = findViewById(R.id.image_gif);
linearLayout = findViewById(R.id.linearLayout);
btn_music_list = findViewById(R.id.btn_music_list);
// btn_music_cut = findViewById(R.id.btn_music_cut);
btn_add_gif = findViewById(R.id.btn_add_gif);
btn_filters_list = findViewById(R.id.btn_filters_list);
btn_emoji = findViewById(R.id.btn_emoji);
btn_add_text = findViewById(R.id.btn_add_text);
fm = findViewById(R.id.frame);
rl_replace = findViewById(R.id.replace_fragment);
music_fragment = findViewById(R.id.music_fragment);
seekbar_layout = findViewById(R.id.seekbar_layout);
rangeSeekBar = findViewById(R.id.rangeSeekBar);
rangeSeekBar.setNotifyWhileDragging(true);
mHandler = new Handler();
tvLeft = findViewById(R.id.tvLeft);
tvRight = findViewById(R.id.tvRight);
relativeLayout = findViewById(R.id.relativeLayout);
save = findViewById(R.id.btndone);
back = findViewById(R.id.btnhome);
mediaPlayer = new MediaPlayer();
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
onBackPressed();
} else onBackPressed();
}
});
sessionId1 = getIntent().getStringExtra("gallary");
sessionId = getPathFromUri(PhotoEditing.this, Uri.parse(sessionId1));
image_selected_uri = Uri.parse(sessionId);
loadImage();
btn_music_list.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// if (seekbar_layout.getVisibility() == View.GONE){
if (mediaPlayer != null && mediaPlayer.isPlaying()) {
mediaPlayer.stop();
}
MusicListFragment musicListFragment = new MusicListFragment();
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.replace_fragment, musicListFragment);
transaction.addToBackStack(null);
transaction.commit();
seekbar_layout.setVisibility(View.VISIBLE);
// }
// else if (seekbar_layout.getVisibility() == View.VISIBLE) {
// seekbar_layout.setVisibility(View.GONE);
// }
}
});
// btn_music_cut.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// if (seekbar_layout.getVisibility() == View.GONE) {
// if (mediaPlayer != null && mediaPlayer.isPlaying()) {
// seekbar_layout.setVisibility(View.VISIBLE);
// }
// } else if (seekbar_layout.getVisibility() == View.VISIBLE) {
// seekbar_layout.setVisibility(View.GONE);
// }
// }
// });
btn_add_gif.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
GIfFragment gIfFragment = new GIfFragment();
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.replace_fragment, gIfFragment);
transaction.addToBackStack(null);
transaction.commit();
}
});
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// image_preview.getSource().setDrawingCacheEnabled(true);
// Bitmap b = image_preview.getSource().getDrawingCache();
// MediaStore.Images.Media.insertImage(context.getContentResolver(), b,"", "");
saveImageToGallery();
}
});
}
private void loadImage() {
bitmap = BitmapFactory.decodeFile(image_selected_uri.toString());
originalBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);
originalBitmap = modifyOrientation(originalBitmap, sessionId);
finalBitmap = originalBitmap.copy(Bitmap.Config.ARGB_8888, true);
filterdBitmap = originalBitmap.copy(Bitmap.Config.ARGB_8888, true);
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int f3672y = displayMetrics.widthPixels;
int f3673z = displayMetrics.heightPixels;
float f = getResources().getDisplayMetrics().density;
int i = f3672y - ((int) (40.0f * f));
int i2 = f3673z - ((int) (f * 100.0f));
image_preview.getSource().setImageBitmap(resizeImageToNewSize(bitmap, i, i2));
}
private void getDropboxIMGSize(Uri uri){
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(new File(uri.getPath()).getAbsolutePath(), options);
imageHeight= String.valueOf(options.outHeight);
imageWidth = String.valueOf(options.outWidth);
}
@SuppressLint("MissingPermission")
private void saveImageToGallery() {
File file = new File(Environment.getExternalStorageDirectory()
+ File.separator + ""
+ System.currentTimeMillis() + ".jpg");
try {
file.createNewFile();
SaveSettings saveSettings = new SaveSettings.Builder()
.setClearViewsEnabled(true)
.setTransparencyEnabled(true)
.build();
photoEditor.saveAsFile(file.getAbsolutePath(), saveSettings, new PhotoEditor.OnSaveListener() {
@Override
public void onSuccess(@NonNull String imagePath) {
Toast.makeText(context, "Image Saved", Toast.LENGTH_SHORT).show();
mSaveImageUri = Uri.fromFile(new File(imagePath));
getDropboxIMGSize(mSaveImageUri);
executeCmd(String.valueOf(mSaveImageUri), mediaData, glideData, rangeSeekBar.getSelectedMinValue().intValue() * 1000, rangeSeekBar.getSelectedMaxValue().intValue() * 1000);
}
@Override
public void onFailure(@NonNull Exception exception) {
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
private void executeCmd(String imagepath, String songpath, String gif, int startMs, int endMs) {
File outputLocation = getConvertedFile(outputPath() + "video", "movie_" + System.currentTimeMillis() + ".mp4");
Log.e("videofilepath", songpath);
String[] complexCommand = {"-y", "-i", imagepath,
"-ignore_loop", "0",
"-i", gif, "-filter_complex", "[1:v]scale=w='bitand(iw,65534)':h='bitand(ih,65534)' [ovrl];[0:v][ovrl]overlay=0:0",
"-ss", "" + startMs / 1000, "-t", "" + endMs / 1000, "-i", songpath,
"-c:v", "libx264", "-preset", "ultrafast", "-r", "30", "-pix_fmt", "yuva420p", "-c:a", "aac", "-shortest", outputLocation.getPath()};
try {
ffmpeg.execute(complexCommand, new ExecuteBinaryResponseHandler() {
@Override
public void onSuccess(String s) {
Log.e("onSuccess", s);
}
@Override
public void onFailure(String s) {
Log.e("fail", s);
}
});
} catch (FFmpegCommandAlreadyRunningException e) {
Log.e("catch", e.getMessage());
}
}
}Any idea what is going on here ? Thanks !
-
Issue trying to stream RTSP to RTMP (live) through NGINX
28 août 2020, par taansariI want live RTMP streaming through nginx. I setup this server on a public ip (linux - CentOS), using this tutorial : https://notehub.org/rcfdu.



My target is : RTSP source -> transcode to RTMP -> recieve on nginx (live ip),



Then, I want to receive this stream through server ; something like :



nginx -> ffplay.



On transmission side, I have ffmpeg application, and on receiver side, I have ffplay application.



I have setup everything I could think of, and I can see it is properly setup (apparently). But, when I try to stream using similar command :



ffmpeg -i rtsp://aaa.bb.ccc.ddd/vod/mp4:filename.mov -f mpegts rtmp://<live ip="ip" address="address">:1935/live/
</live>



I get lots of messages (where everything looks alright) :



ffmpeg -i rtsp://aaa.bb.ccc.ddd/vod/mp4:filename.mov -f mpegts rtmp://<live ip="ip" address="address">:1935/live/
ffmpeg version N-80386-g5f5a97d Copyright (c) 2000-2016 the FFmpeg developers
 built with gcc 5.4.0 (GCC)
 configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-nv
enc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enabl
e-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --en
able-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libil
bc --enable-libmodplug --enable-libmfx --enable-libmp3lame --enable-libopencore-
amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-
librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-li
bspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo
-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libweb
p --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-l
ibzimg --enable-lzma --enable-decklink --enable-zlib
 libavutil 55. 24.100 / 55. 24.100
 libavcodec 57. 46.100 / 57. 46.100
 libavformat 57. 38.100 / 57. 38.100
 libavdevice 57. 0.101 / 57. 0.101
 libavfilter 6. 46.101 / 6. 46.101
 libswscale 4. 1.100 / 4. 1.100
 libswresample 2. 1.100 / 2. 1.100
 libpostproc 54. 0.100 / 54. 0.100
[rtsp @ 03087ca0] UDP timeout, retrying with TCP
Input #0, rtsp, from 'rtsp://aaa.bb.ccc.ddd/vod/mp4:filename.mov':
 Metadata:
 title : filename.mov
 Duration: 00:09:56.46, start: 0.000000, bitrate: N/A
 Stream #0:0: Audio: aac (LC), 48000 Hz, stereo, fltp
 Stream #0:1: Video: h264 (Constrained Baseline), yuv420p, 240x160, 24 fps, 4
8 tbr, 90k tbn, 48 tbc
[mpegts @ 04d033a0] Using AVStream.codec to pass codec parameters to muxers is d
eprecated, use AVStream.codecpar instead.
 Last message repeated 1 times
Output #0, mpegts, to 'rtmp://<live ip="ip" address="address">:1935/live/':
 Metadata:
 title : filename.mov
 encoder : Lavf57.38.100
 Stream #0:0: Video: mpeg2video (Main), yuv420p, 240x160, q=2-31, 200 kb/s, 2
4 fps, 90k tbn, 24 tbc
 Metadata:
 encoder : Lavc57.46.100 mpeg2video
 Side data:
 cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1
 Stream #0:1: Audio: mp2, 48000 Hz, stereo, s16, 384 kb/s
 Metadata:
 encoder : Lavc57.46.100 mp2
Stream mapping:
 Stream #0:1 -> #0:0 (h264 (native) -> mpeg2video (native))
 Stream #0:0 -> #0:1 (aac (native) -> mp2 (native))
Press [q] to stop, [?] for help
Past duration 0.999992 too large
 Last message repeated 4 times
frame= 85 fps=0.0 q=2.9 size= 322kB time=00:00:03.85 bitrate= 684.4kbits/s
frame= 95 fps= 94 q=3.5 size= 366kB time=00:00:04.28 bitrate= 698.9kbits/s
frame= 108 fps= 71 q=3.7 size= 421kB time=00:00:04.79 bitrate= 719.9kbits/s
frame= 122 fps= 61 q=4.1 size= 478kB time=00:00:05.34 bitrate= 733.1kbits/s
frame= 134 fps= 53 q=4.5 size= 527kB time=00:00:05.87 bitrate= 735.8kbits/s
frame= 146 fps= 48 q=5.2 size= 579kB time=00:00:06.35 bitrate= 747.2kbits/s
frame= 159 fps= 45 q=5.5 size= 632kB time=00:00:06.88 bitrate= 751.9kbits/s
frame= 171 fps= 42 q=5.3 size= 677kB time=00:00:07.38 bitrate= 751.5kbits/s
frame= 183 fps= 40 q=5.6 size= 725kB time=00:00:07.91 bitrate= 750.8kbits/s
frame= 193 fps= 38 q=6.3 size= 765kB time=00:00:08.34 bitrate= 750.7kbits/s
frame= 207 fps= 37 q=6.6 size= 820kB time=00:00:08.89 bitrate= 755.2kbits/s
frame= 219 fps= 36 q=6.6 size= 865kB time=00:00:09.40 bitrate= 754.2kbits/s
frame= 231 fps= 35 q=7.2 size= 911kB time=00:00:09.90 bitrate= 753.6kbits/s
frame= 243 fps= 34 q=7.4 size= 959kB time=00:00:10.40 bitrate= 754.6kbits/s
frame= 255 fps= 34 q=6.7 size= 1002kB time=00:00:10.91 bitrate= 752.1kbits/s
frame= 267 fps= 33 q=5.5 size= 1047kB time=00:00:11.41 bitrate= 751.4kbits/s
frame= 279 fps= 33 q=4.6 size= 1088kB time=00:00:11.89 bitrate= 749.1kbits/s
frame= 291 fps= 32 q=6.1 size= 1140kB time=00:00:12.42 bitrate= 751.4kbits/s
frame= 301 fps= 31 q=6.7 size= 1181kB time=00:00:12.85 bitrate= 752.5kbits/s
frame= 314 fps= 31 q=6.6 size= 1231kB time=00:00:13.40 bitrate= 752.1kbits/s
frame= 325 fps= 31 q=7.0 size= 1275kB time=00:00:13.86 bitrate= 753.0kbits/s
frame= 338 fps= 30 q=6.7 size= 1324kB time=00:00:14.36 bitrate= 754.8kbits/s
frame= 349 fps= 30 q=6.5 size= 1368kB time=00:00:14.87 bitrate= 753.5kbits/s
frame= 362 fps= 30 q=6.8 size= 1415kB time=00:00:15.37 bitrate= 753.9kbits/s
frame= 373 fps= 30 q=6.2 size= 1457kB time=00:00:15.88 bitrate= 751.7kbits/s
frame= 387 fps= 30 q=3.8 size= 1506kB time=00:00:16.45 bitrate= 749.7kbits/s
frame= 400 fps= 29 q=4.1 size= 1549kB time=00:00:16.96 bitrate= 748.2kbits/s
frame= 415 fps= 29 q=5.4 size= 1597kB time=00:00:17.56 bitrate= 744.9kbits/s
frame= 427 fps= 29 q=5.2 size= 1639kB time=00:00:18.04 bitrate= 744.1kbits/s
frame= 439 fps= 29 q=4.4 size= 1679kB time=00:00:18.56 bitrate= 740.6kbits/s
frame= 451 fps= 29 q=3.6 size= 1717kB time=00:00:19.07 bitrate= 737.4kbits/s
frame= 464 fps= 28 q=2.6 size= 1761kB time=00:00:19.67 bitrate= 733.2kbits/s
frame= 475 fps= 28 q=7.0 size= 1799kB time=00:00:20.08 bitrate= 734.0kbits/s
frame= 488 fps= 28 q=8.3 size= 1847kB time=00:00:20.70 bitrate= 730.8kbits/s
frame= 502 fps= 28 q=5.9 size= 1895kB time=00:00:21.25 bitrate= 730.2kbits/s
frame= 515 fps= 28 q=3.3 size= 1935kB time=00:00:21.76 bitrate= 728.5kbits/s
frame= 528 fps= 28 q=2.5 size= 1976kB time=00:00:22.31 bitrate= 725.6kbits/s
frame= 540 fps= 28 q=3.4 size= 2017kB time=00:00:22.81 bitrate= 724.2kbits/s
frame= 553 fps= 28 q=6.2 size= 2072kB time=00:00:23.36 bitrate= 726.2kbits/s
frame= 568 fps= 28 q=6.7 size= 2132kB time=00:00:23.94 bitrate= 729.3kbits/s
frame= 580 fps= 28 q=6.8 size= 2174kB time=00:00:24.42 bitrate= 729.3kbits/s
frame= 592 fps= 27 q=6.8 size= 2219kB time=00:00:24.92 bitrate= 729.3kbits/s
frame= 604 fps= 27 q=7.4 size= 2263kB time=00:00:25.43 bitrate= 728.8kbits/s
frame= 615 fps= 27 q=6.1 size= 2305kB time=00:00:25.93 bitrate= 727.9kbits/s
frame= 626 fps= 27 q=7.4 size= 2339kB time=00:00:26.36 bitrate= 726.5kbits/s
frame= 638 fps= 27 q=6.8 size= 2383kB time=00:00:26.89 bitrate= 725.8kbits/s
frame= 651 fps= 27 q=5.8 size= 2436kB time=00:00:27.47 bitrate= 726.5kbits/s
frame= 662 fps= 27 q=7.0 size= 2471kB time=00:00:27.90 bitrate= 725.4kbits/s
frame= 675 fps= 27 q=5.9 size= 2523kB time=00:00:28.40 bitrate= 727.6kbits/s
frame= 679 fps= 26 q=6.8 size= 2534kB time=00:00:28.57 bitrate= 726.5kbits/s
frame= 703 fps= 27 q=8.0 size= 2622kB time=00:00:29.58 bitrate= 726.1kbits/s
frame= 714 fps= 27 q=7.6 size= 2662kB time=00:00:30.08 bitrate= 724.7kbits/s
frame= 729 fps= 27 q=6.5 size= 2712kB time=00:00:30.68 bitrate= 724.0kbits/s
frame= 741 fps= 27 q=7.0 size= 2753kB time=00:00:31.14 bitrate= 724.1kbits/s
frame= 755 fps= 27 q=7.5 size= 2801kB time=00:00:31.76 bitrate= 722.2kbits/s
frame= 767 fps= 26 q=7.2 size= 2842kB time=00:00:32.27 bitrate= 721.5kbits/s
frame= 779 fps= 26 q=6.8 size= 2881kB time=00:00:32.77 bitrate= 720.0kbits/s
frame= 791 fps= 26 q=8.2 size= 2922kB time=00:00:33.30 bitrate= 718.8kbits/s
frame= 803 fps= 26 q=7.0 size= 2961kB time=00:00:33.76 bitrate= 718.4kbits/s
frame= 816 fps= 26 q=6.6 size= 3003kB time=00:00:34.33 bitrate= 716.4kbits/s
frame= 828 fps= 26 q=6.4 size= 3044kB time=00:00:34.84 bitrate= 715.7kbits/s
frame= 840 fps= 26 q=7.5 size= 3084kB time=00:00:35.34 bitrate= 714.7kbits/s
frame= 855 fps= 26 q=5.0 size= 3137kB time=00:00:35.94 bitrate= 714.8kbits/s
frame= 866 fps= 26 q=6.2 size= 3169kB time=00:00:36.40 bitrate= 713.3kbits/s
frame= 880 fps= 26 q=5.9 size= 3219kB time=00:00:36.95 bitrate= 713.6kbits/s
frame= 892 fps= 26 q=6.8 size= 3259kB time=00:00:37.43 bitrate= 713.2kbits/s
frame= 904 fps= 26 q=5.3 size= 3300kB time=00:00:37.96 bitrate= 712.2kbits/s
frame= 916 fps= 26 q=5.5 size= 3338kB time=00:00:38.46 bitrate= 711.0kbits/s
frame= 928 fps= 26 q=5.5 size= 3377kB time=00:00:38.94 bitrate= 710.4kbits/s
frame= 941 fps= 26 q=6.4 size= 3422kB time=00:00:39.52 bitrate= 709.4kbits/s
frame= 953 fps= 26 q=5.4 size= 3460kB time=00:00:40.00 bitrate= 708.6kbits/s
frame= 967 fps= 26 q=5.2 size= 3506kB time=00:00:40.60 bitrate= 707.3kbits/s
frame= 979 fps= 26 q=4.8 size= 3546kB time=00:00:41.12 bitrate= 706.2kbits/s
frame= 985 fps= 26 q=5.2 size= 3563kB time=00:00:41.36 bitrate= 705.6kbits/s
frame= 1008 fps= 26 q=4.8 size= 3639kB time=00:00:42.30 bitrate= 704.6kbits/s
frame= 1022 fps= 26 q=4.3 size= 3684kB time=00:00:42.88 bitrate= 703.7kbits/s
frame= 1034 fps= 26 q=4.5 size= 3723kB time=00:00:43.38 bitrate= 702.9kbits/s
frame= 1046 fps= 26 q=3.8 size= 3763kB time=00:00:43.88 bitrate= 702.5kbits/s
frame= 1056 fps= 26 q=5.3 size= 3800kB time=00:00:44.32 bitrate= 702.3kbits/s
frame= 1069 fps= 26 q=5.5 size= 3842kB time=00:00:44.84 bitrate= 701.8kbits/s
frame= 1081 fps= 26 q=6.3 size= 3883kB time=00:00:45.35 bitrate= 701.3kbits/s
frame= 1093 fps= 26 q=6.3 size= 3925kB time=00:00:45.85 bitrate= 701.1kbits/s
frame= 1105 fps= 26 q=5.3 size= 3964kB time=00:00:46.36 bitrate= 700.5kbits/s
frame= 1117 fps= 26 q=6.7 size= 4006kB time=00:00:46.86 bitrate= 700.3kbits/s
frame= 1129 fps= 26 q=4.5 size= 4046kB time=00:00:47.32 bitrate= 700.4kbits/s
frame= 1141 fps= 26 q=7.1 size= 4089kB time=00:00:47.87 bitrate= 699.8kbits/s
Larger timestamp than 24-bit: 0x310042f0
WriteN, RTMP send error 10054 (133 bytes)
WriteN, RTMP send error 10054 (35 bytes)
WriteN, RTMP send error 10038 (42 bytes)
av_interleaved_write_frame(): Operation not permitted
Error writing trailer of rtmp://<live ip="ip" address="address">:1935/live/: Operation not permitte
dframe= 1143 fps= 25 q=8.1 Lsize= 4109kB time=00:00:47.92 bitrate= 702.5kbits
/s dup=0 drop=5 speed=1.07x
video:1343kB audio:2248kB subtitle:0kB other streams:0kB global headers:0kB muxi
ng overhead: 14.429363%
Conversion failed!
</live></live></live>



but in the end, I get this error :



WriteN, RTMP send error 10054 (133 bytes)
WriteN, RTMP send error 10054 (35 bytes)
WriteN, RTMP send error 10038 (42 bytes)
av_interleaved_write_frame(): Operation not permitted
Error writing trailer of rtmp://<live ip="ip" address="address">:1935/live/: Operation not permitte
dframe= 1143 fps= 25 q=8.1 Lsize= 4109kB time=00:00:47.92 bitrate= 702.5kbits
/s dup=0 drop=5 speed=1.07x
video:1343kB audio:2248kB subtitle:0kB other streams:0kB global headers:0kB muxi
ng overhead: 14.429363%
Conversion failed!
</live>



On the receiver side (where ffplay is running), I always get this error :



RTMP_ReadPacket, failed to read RTMP packet headersq= 0B f=0/0
 rtmp://<live ip="ip" address="address">:1935/live/: Invalid data found when processing input
</live>



Detailed output :



ffplay rtmp://<live ip="ip" address="address">:1935/live/
ffplay version N-80386-g5f5a97d Copyright (c) 2003-2016 the FFmpeg developers
 built with gcc 5.4.0 (GCC)
 configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-nv
enc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enabl
e-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --en
able-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libil
bc --enable-libmodplug --enable-libmfx --enable-libmp3lame --enable-libopencore-
amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-
librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-li
bspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo
-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libweb
p --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-l
ibzimg --enable-lzma --enable-decklink --enable-zlib
 libavutil 55. 24.100 / 55. 24.100
 libavcodec 57. 46.100 / 57. 46.100
 libavformat 57. 38.100 / 57. 38.100
 libavdevice 57. 0.101 / 57. 0.101
 libavfilter 6. 46.101 / 6. 46.101
 libswscale 4. 1.100 / 4. 1.100
 libswresample 2. 1.100 / 2. 1.100
 libpostproc 54. 0.100 / 54. 0.100
RTMP_ReadPacket, failed to read RTMP packet headersq= 0B f=0/0
rtmp://<live ip="ip" address="address">:1935/live/: Invalid data found when processing input
</live></live>



and if I enable debug mode, this is the receiving side log :



ffplay -loglevel debug rtmp://<live ip="ip" address="address">:1935/live/
ffplay version N-80386-g5f5a97d Copyright (c) 2003-2016 the FFmpeg developers
 built with gcc 5.4.0 (GCC)
 configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-nv
enc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enabl
e-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --en
able-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libil
bc --enable-libmodplug --enable-libmfx --enable-libmp3lame --enable-libopencore-
amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-
librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-li
bspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo
-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libweb
p --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-l
ibzimg --enable-lzma --enable-decklink --enable-zlib
 libavutil 55. 24.100 / 55. 24.100
 libavcodec 57. 46.100 / 57. 46.100
 libavformat 57. 38.100 / 57. 38.100
 libavdevice 57. 0.101 / 57. 0.101
 libavfilter 6. 46.101 / 6. 46.101
 libswscale 4. 1.100 / 4. 1.100
 libswresample 2. 1.100 / 2. 1.100
 libpostproc 54. 0.100 / 54. 0.100
[rtmp @ 0310d800] No default whitelist set 0KB sq= 0B f=0/0
Parsing... : 0.000 fd= 0 aq= 0KB vq= 0KB sq= 0B f=0/0
Parsed protocol: 0
Parsed host : <live ip="ip" address="address">
Parsed app : live
RTMP_Connect1, ... connected, handshaking= 0KB sq= 0B f=0/0
HandShake: Type Answer : 03q= 0KB vq= 0KB sq= 0B f=0/0
HandShake: Server Uptime : 324510454
HandShake: FMS Version : 0.0.0.0
HandShake: Handshaking finished....0KB vq= 0KB sq= 0B f=0/0
RTMP_Connect1, handshaked
RTMP_SendPacket: fd=648, size=174
 0000: 03 00 00 00 00 00 ae 14 00 00 00 00 ............
 0000: 02 00 07 63 6f 6e 6e 65 63 74 00 3f f0 00 00 00 ...connect.?....
 0010: 00 00 00 03 00 03 61 70 70 02 00 04 6c 69 76 65 ......app...live
 0020: 00 05 74 63 55 72 6c 02 00 1e 72 74 6d 70 3a 2f ..tcUrl...rtmp:/
 0030: 2f 36 34 2e 34 39 2e 32 33 34 2e 32 35 30 3a 31 /<live ip="ip" address="address">:1
 0040: 39 33 35 2f 6c 69 76 65 00 04 66 70 61 64 01 00 935/live..fpad..
 0050: 00 0c 63 61 70 61 62 69 6c 69 74 69 65 73 00 40 ..capabilities.@
 0060: 2e 00 00 00 00 00 00 00 0b 61 75 64 69 6f 43 6f .........audioCo
 0070: 64 65 63 73 00 40 a8 ee 00 00 00 00 00 00 0b 76 decs.@.........v
 0000: c3 .
 0000: 69 64 65 6f 43 6f 64 65 63 73 00 40 6f 80 00 00 ideoCodecs.@o...
 0010: 00 00 00 00 0d 76 69 64 65 6f 46 75 6e 63 74 69 .....videoFuncti
 0020: 6f 6e 00 3f f0 00 00 00 00 00 00 00 00 09 on.?..........
Invoking connect
RTMP_ReadPacket: fd=648
 0000: 02 00 00 00 00 00 04 05 00 00 00 00 ............
 0000: 00 4c 4b 40 .LK@
HandleServerBW: server BW = 5000000
RTMP_ReadPacket: fd=648
 0000: 02 00 00 00 00 00 05 06 00 00 00 00 ............
 0000: 00 4c 4b 40 02 .LK@.
HandleClientBW: client BW = 5000000 2
RTMP_ReadPacket: fd=648
 0000: 02 00 00 00 00 00 04 01 00 00 00 00 ............
 0000: 00 00 10 00 ....
HandleChangeChunkSize, received: chunk size change to 4096
RTMP_ReadPacket: fd=648
 0000: 03 00 00 00 00 00 be 14 00 00 00 00 ............
 0000: 02 00 07 5f 72 65 73 75 6c 74 00 3f f0 00 00 00 ..._result.?....
 0010: 00 00 00 03 00 06 66 6d 73 56 65 72 02 00 0d 46 ......fmsVer...F
 0020: 4d 53 2f 33 2c 30 2c 31 2c 31 32 33 00 0c 63 61 MS/3,0,1,123..ca
 0030: 70 61 62 69 6c 69 74 69 65 73 00 40 3f 00 00 00 pabilities.@?...
 0040: 00 00 00 00 00 09 03 00 05 6c 65 76 65 6c 02 00 .........level..
 0050: 06 73 74 61 74 75 73 00 04 63 6f 64 65 02 00 1d .status..code...
 0060: 4e 65 74 43 6f 6e 6e 65 63 74 69 6f 6e 2e 43 6f NetConnection.Co
 0070: 6e 6e 65 63 74 2e 53 75 63 63 65 73 73 00 0b 64 nnect.Success..d
 0080: 65 73 63 72 69 70 74 69 6f 6e 02 00 15 43 6f 6e escription...Con
 0090: 6e 65 63 74 69 6f 6e 20 73 75 63 63 65 65 64 65 nection succeede
 00a0: 64 2e 00 0e 6f 62 6a 65 63 74 45 6e 63 6f 64 69 d...objectEncodi
 00b0: 6e 67 00 00 00 00 00 00 00 00 00 00 00 09 ng............
RTMP_ClientPacket, received: invoke 190 bytes
(object begin)
Property: 
Property: 
Property: 
(object begin)
Property: 3,0,1,123>
Property: 
(object end)
Property: 
(object begin)
Property: 
Property: 
Property: 
Property: 
(object end)
(object end)
HandleInvoke, server invoking <_result>
HandleInvoke, received result for method call <connect> 0B f=0/0
RTMP_SendPacket: fd=648, size=4
 0000: 02 00 00 00 00 00 04 05 00 00 00 00 ............
 0000: 00 4c 4b 40 .LK@
sending ctrl. type: 0x0003
RTMP_SendPacket: fd=648, size=10
 0000: 42 00 00 00 00 00 0a 04 B.......
 0000: 00 03 00 00 00 00 00 00 01 2c .........,
RTMP_SendPacket: fd=648, size=25
 0000: 43 00 00 00 00 00 19 14 C.......
 0000: 02 00 0c 63 72 65 61 74 65 53 74 72 65 61 6d 00 ...createStream.
 0010: 40 00 00 00 00 00 00 00 05 @........
Invoking createStream
RTMP_ReadPacket: fd=648
 0000: 03 00 00 00 00 00 1d 14 00 00 00 00 ............
 0000: 02 00 07 5f 72 65 73 75 6c 74 00 40 00 00 00 00 ..._result.@....
 0010: 00 00 00 05 00 3f f0 00 00 00 00 00 00 .....?.......
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: (null)
RTMP_SendPacket: fd=648, size=29
 0000: 08 00 00 00 00 00 1d 14 01 00 00 00 ............
 0000: 02 00 04 70 6c 61 79 00 40 08 00 00 00 00 00 00 ...play.@.......
 0010: 05 02 00 00 00 00 00 00 00 00 00 00 00 .............
Invoking play 0.000 fd= 0 aq= 0KB vq= 0KB sq= 0B f=0/0
sending ctrl. type: 0x0003
RTMP_SendPacket: fd=648, size=10
 0000: c2 .
 0000: 00 03 00 00 00 01 00 00 0b b8 ..........
RTMP_ReadPacket: fd=648
 0000: 05 00 00 00 00 00 60 14 01 00 00 00 ......`.....
 0000: 02 00 08 6f 6e 53 74 61 74 75 73 00 00 00 00 00 ...onStatus.....
 0010: 00 00 00 00 05 03 00 05 6c 65 76 65 6c 02 00 06 ........level...
 0020: 73 74 61 74 75 73 00 04 63 6f 64 65 02 00 14 4e status..code...N
 0030: 65 74 53 74 72 65 61 6d 2e 50 6c 61 79 2e 53 74 etStream.Play.St
 0040: 61 72 74 00 0b 64 65 73 63 72 69 70 74 69 6f 6e art..description
 0050: 02 00 0a 53 74 61 72 74 20 6c 69 76 65 00 00 09 ...Start live...
RTMP_ClientPacket, received: invoke 96 bytes
(object begin)
Property: 
Property: 
Property: NULL
Property: 
(object begin)
Property: 
Property: 
Property: 
(object end)
(object end)
HandleInvoke, server invoking <onstatus>
HandleInvoke, onStatus: NetStream.Play.Start
RTMP_ReadPacket: fd=648
 0000: 05 00 00 00 00 00 18 12 01 00 00 00 ............
 0000: 02 00 11 7c 52 74 6d 70 53 61 6d 70 6c 65 41 63 ...|RtmpSampleAc
 0010: 63 65 73 73 01 01 01 01 cess....
RTMP_ClientPacket, received: notify 24 bytes
(object begin)
Property: 
Property: nan : 0.000 fd= 0
 aq= 0KB vq= 0KB sq= 0B f=0/0
Property: 
(object end)
RTMP_ReadPacket: fd=648
RTMPSockBuf_Fill, recv returned -1. GetSockError(): 10060 (Unknown error)
RTMP_ReadPacket, failed to read RTMP packet header
[AVIOContext @ 04c81be0] Statistics: 0 bytes read, 0 seeks
RTMP_SendPacket: fd=648, size=34
 0000: 43 00 00 00 00 00 22 14 C.....".
 0000: 02 00 0c 64 65 6c 65 74 65 53 74 72 65 61 6d 00 ...deleteStream.
 0010: 40 10 00 00 00 00 00 00 05 00 3f f0 00 00 00 00 @.........?.....
 0020: 00 00 ..
Invoking deleteStreamd= 0 aq= 0KB vq= 0KB sq= 0B f=0/0
rtmp://<live ip="ip" address="address">:1935/live/: Invalid data found when processing input
</live></onstatus></createstream></connect></live></live></live>



By the way, this is my server config file ( /etc/nginx/nginx.conf )



#user nobody;
worker_processes 4;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;


events {
 worker_connections 1024;
}


http {
 include mime.types;
 default_type application/octet-stream;

 #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
 # '$status $body_bytes_sent "$http_referer" '
 # '"$http_user_agent" "$http_x_forwarded_for"';

 #access_log logs/access.log main;

 sendfile on;
 #tcp_nopush on;

 #keepalive_timeout 0;
 keepalive_timeout 65;

 #gzip on;

 server {
 listen 80;
 server_name localhost;

 #charset koi8-r;

 #access_log logs/host.access.log main;

 location / {
 root html;
 index index.html index.htm;
 }

 #error_page 404 /404.html;

 # redirect server error pages to the static page /50x.html
 #
 error_page 500 502 503 504 /50x.html;
 location = /50x.html {
 root html;
 }

 # proxy the PHP scripts to Apache listening on 127.0.0.1:80
 #
 #location ~ \.php$ {
 # proxy_pass http://127.0.0.1;
 #}

 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
 #
 #location ~ \.php$ {
 # root html;
 # fastcgi_pass 127.0.0.1:9000;
 # fastcgi_index index.php;
 # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
 # include fastcgi_params;
 #}

 # deny access to .htaccess files, if Apache's document root
 # concurs with nginx's one
 #
 #location ~ /\.ht {
 # deny all;
 #}
 }


 # another virtual host using mix of IP-, name-, and port-based configuration
 #
 #server {
 # listen 8000;
 # listen somename:8080;
 # server_name somename alias another.alias;

 # location / {
 # root html;
 # index index.html index.htm;
 # }
 #}


 # HTTPS server
 #
 #server {
 # listen 443 ssl;
 # server_name localhost;

 # ssl_certificate cert.pem;
 # ssl_certificate_key cert.key;

 # ssl_session_cache shared:SSL:1m;
 # ssl_session_timeout 5m;

 # ssl_ciphers HIGH:!aNULL:!MD5;
 # ssl_prefer_server_ciphers on;

 # location / {
 # root html;
 # index index.html index.htm;
 # }
 #}

}
rtmp {
 server {
 listen 1935;
 chunk_size 4096;

 application live {
 live on;
 record off;
 }
 }
}




I can telnet into both port 80 and 1935, and made sure port 1935 is open as input and output in iptables...



-A INPUT -m state --state NEW -m tcp -p tcp --dport 1935 -j ACCEPT
-A OUTPUT -m state --state NEW -m tcp -p tcp --dport 1935 -j ACCEPT




but nothing works.



Can anyone help in this regards ?