
Recherche avancée
Autres articles (96)
-
MediaSPIP 0.1 Beta version
25 avril 2011, parMediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
The zip file provided here only contains the sources of MediaSPIP in its standalone version.
To get a working installation, you must manually install all-software dependencies on the server.
If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...) -
Multilang : améliorer l’interface pour les blocs multilingues
18 février 2011, parMultilang est un plugin supplémentaire qui n’est pas activé par défaut lors de l’initialisation de MediaSPIP.
Après son activation, une préconfiguration est mise en place automatiquement par MediaSPIP init permettant à la nouvelle fonctionnalité d’être automatiquement opérationnelle. Il n’est donc pas obligatoire de passer par une étape de configuration pour cela. -
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 (...)
Sur d’autres sites (7242)
-
Convert .mov to .mp4 and keep alpha channel using FFMPEG
5 mai 2015, par Mark S.I am trying to convert a .mov file that is Quicktime with Alpha Channel to a .mp4 movie. I am using FFMPEG and I can successfully convert the video to a .mp4 video, but I loose the alpha channel.
Here is the command I am running :
ffmpeg -i BLUE_LOWER_THIRD.mov -vcodec libx264 -vpre medium blue_lower_third.mp4
I am running this on Ubuntu 11.10. Here is the information about my install of ffmpeg.
ffmpeg version 0.7.3-4:0.7.3-0ubuntu0.11.10.1, Copyright (c) 2000-2011 the Libav developers
built on Jan 4 2012 16:08:51 with gcc 4.6.1
configuration: --extra-version='4:0.7.3-0ubuntu0.11.10.1' --arch=amd64 --prefix=/usr --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --enable-runtime-cpudetect --enable-vaapi --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static
avutil configuration: --extra-version='4:0.7.3ubuntu0.11.10.1' --arch=amd64 --prefix=/usr --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --enable-runtime-cpudetect --enable-vaapi --enable-libopenjpeg --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdirac --enable-libmp3lame --enable-librtmp --enable-libx264 --enable-libxvid --enable-libvo-aacenc --enable-version3 --enable-libvo-amrwbenc --enable-version3 --enable-libdc1394 --enable-shared --disable-static
avcodec configuration: --extra-version='4:0.7.3ubuntu0.11.10.1' --arch=amd64 --prefix=/usr --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --enable-runtime-cpudetect --enable-vaapi --enable-libopenjpeg --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdirac --enable-libmp3lame --enable-librtmp --enable-libx264 --enable-libxvid --enable-libvo-aacenc --enable-version3 --enable-libvo-amrwbenc --enable-version3 --enable-libdc1394 --enable-shared --disable-static
avformat configuration: --extra-version='4:0.7.3ubuntu0.11.10.1' --arch=amd64 --prefix=/usr --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --enable-runtime-cpudetect --enable-vaapi --enable-libopenjpeg --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdirac --enable-libmp3lame --enable-librtmp --enable-libx264 --enable-libxvid --enable-libvo-aacenc --enable-version3 --enable-libvo-amrwbenc --enable-version3 --enable-libdc1394 --enable-shared --disable-static
libavutil 51. 7. 0 / 51. 7. 0
libavcodec 53. 6. 0 / 53. 6. 0
libavformat 53. 3. 0 / 53. 3. 0
libavdevice 53. 0. 0 / 53. 0. 0
libavfilter 2. 4. 0 / 2. 4. 0
libswscale 2. 0. 0 / 2. 0. 0
libpostproc 52. 0. 0 / 52. 0. 0Is it possible to have alpha channel in an mp4 file ? If so, how do you do it with FFMPEG ?
Edit : This is the output from running the command.
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'BLUE_LOWER_THIRD.mov':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
creation_time : 2010-12-21 10:36:51
Duration: 00:00:15.00, start: 0.000000, bitrate: 8050 kb/s
Stream #0.0(eng): Video: png, bgra, 1920x1080, 8043 kb/s, PAR 1920:1920 DAR 16:9, 30 fps, 30 tbr, 30 tbn, 30 tbc
Metadata:
creation_time : 2010-12-21 10:36:51
Stream #0.1(eng): Data: tmcd / 0x64636D74, 0 kb/s
Metadata:
creation_time : 2010-12-21 10:39:48
File 'blue_lower_third.mp4' already exists. Overwrite ? [y/N] y
Incompatible pixel format 'bgra' for codec 'libx264', auto-selecting format 'yuv420p'
[buffer @ 0x7e3d80] w:1920 h:1080 pixfmt:bgra
[ffsink @ 0x7edda0] auto-inserting filter 'auto-inserted scaler 0' between the filter 'src' and the filter 'out'
[scale @ 0x7fc480] w:1920 h:1080 fmt:bgra -> w:1920 h:1080 fmt:yuv420p flags:0x4
[libx264 @ 0x7fcf20] using SAR=1/1
[libx264 @ 0x7fcf20] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle Cache64
[libx264 @ 0x7fcf20] profile High, level 4.0
[libx264 @ 0x7fcf20] 264 - core 116 r2042 178455c - H.264/MPEG-4 AVC codec - Copyleft 2003-2011 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=abr mbtree=1 bitrate=200 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.41 aq=1:1.00
Output #0, mp4, to 'blue_lower_third.mp4':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
creation_time : 2010-12-21 10:36:51
encoder : Lavf53.3.0
Stream #0.0(eng): Video: libx264, yuv420p, 1920x1080 [PAR 1920:1920 DAR 16:9], q=0-69, 200 kb/s, 30 tbn, 30 tbc
Metadata:
creation_time : 2010-12-21 10:36:51
Stream mapping:
Stream #0.0 -> #0.0
Press ctrl-c to stop encoding
frame= 450 fps= 11 q=9.0 Lsize= 83kB time=14.93 bitrate= 45.7kbits/s its/s
video:75kB audio:0kB global headers:0kB muxing overhead 10.287784%
frame I:2 Avg QP:18.30 size: 2584
[libx264 @ 0x7fcf20] frame P:118 Avg QP:16.22 size: 310
[libx264 @ 0x7fcf20] frame B:330 Avg QP:16.75 size: 106
[libx264 @ 0x7fcf20] consecutive B-frames: 1.8% 0.9% 1.3% 96.0%
[libx264 @ 0x7fcf20] mb I I16..4: 49.7% 50.0% 0.3%
[libx264 @ 0x7fcf20] mb P I16..4: 0.5% 0.0% 0.0% P16..4: 0.3% 0.0% 0.0% 0.0% 0.0% skip:99.0%
[libx264 @ 0x7fcf20] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 0.3% 0.0% 0.0% direct: 0.0% skip:99.6% L0:37.2% L1:62.6% BI: 0.2%
[libx264 @ 0x7fcf20] final ratefactor: 9.32
[libx264 @ 0x7fcf20] 8x8 transform intra:38.0% inter:56.1%
[libx264 @ 0x7fcf20] coded y,uvDC,uvAC intra: 0.9% 4.2% 2.9% inter: 0.0% 0.1% 0.0%
[libx264 @ 0x7fcf20] i16 v,h,dc,p: 64% 32% 1% 3%
[libx264 @ 0x7fcf20] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 0% 2% 97% 0% 1% 0% 0% 0% 0%
[libx264 @ 0x7fcf20] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 5% 60% 23% 2% 6% 1% 1% 1% 2%
[libx264 @ 0x7fcf20] i8c dc,h,v,p: 86% 13% 1% 0%
[libx264 @ 0x7fcf20] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x7fcf20] ref P L0: 79.4% 2.1% 13.2% 5.2%
[libx264 @ 0x7fcf20] ref B L0: 61.1% 37.7% 1.2%
[libx264 @ 0x7fcf20] ref B L1: 92.3% 7.7%
[libx264 @ 0x7fcf20] kb/s:40.85 -
Running ffmpeg command on Android results in "Unable to find a suitable output format for ' -map 0:v:0 -map 1:a:0'"
5 juin 2017, par Akash DubeyI am using this command for replacing audio of video and genrate new video having new audio. Here file1 is my video.mp4, file2 is my audio.mp3 and output would be the output.mp4 :
complexCommand = new String[]{"-y", "-i", file1.toString(), "-i", file2.toString(), "-c", "copy", " -map 0:v:0 -map 1:a:0", rootPath + "/output.mp4"};
Below is My code :
private void changeAudioofVideo(String selectedUri, String videoPath) {
String[] complexCommand;
File f = new File("/storage/emulated/0");
if (!f.getParentFile().exists())
f.getParentFile().mkdirs();
if (!f.exists())
try {
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
file1 = new File(videoPath);
if (file1.exists()) {
Log.d("yes", "File 1 exists");
} else {
Log.d("no", "File 1 not exists");
}
file2 = new File(selectedUri);
if (file2.exists()) {
Log.d("yes", "File 1 exists");
} else {
Log.d("no", "File 1 not exists");
}
String rootPath = f.getPath();
complexCommand = new String[]{"-y", "-i", file1.toString(), "-i", file2.toString(), "-c", "copy", " -map 0:v:0 -map 1:a:0", rootPath + "/output.mp4"};
FFmpeg ffmpeg = FFmpeg.getInstance(this);
try {
//Load the binary
ffmpeg.loadBinary(new LoadBinaryResponseHandler() {
@Override
public void onStart() {
}
@Override
public void onFailure() {
}
@Override
public void onSuccess() {
}
@Override
public void onFinish() {
}
});
} catch (FFmpegNotSupportedException e) {
// Handle if FFmpeg is not supported by device
Toast.makeText(getApplicationContext(), "Not Supported by Device", Toast.LENGTH_LONG).show();
}
try {
final String finalRootPath = rootPath;
ffmpeg.execute(complexCommand, new FFmpegExecuteResponseHandler() {
@Override
public void onSuccess(String message) {
Log.d("Success", message);
Toast.makeText(getApplicationContext(), "Successful" + finalRootPath.toString(), Toast.LENGTH_LONG).show();
Uri path = Uri.parse(finalRootPath + "/output.mp4");
playVideo(path.toString());
}
@Override
public void onProgress(String message) {
Log.d("progress", message);
pd.show();
}
@Override
public void onFailure(String message) {
Log.d("failure", message);
pd.dismiss();
}
@Override
public void onStart() {
Log.d("Start", "merge started");
}
@Override
public void onFinish() {
Log.d("finish", "merge finish");
pd.dismiss();
}
});
} catch (FFmpegCommandAlreadyRunningException e) {
e.printStackTrace();
}
}Below is my output :
05-26 18:39:35.533 29188-29188/com.example.codal.videotm D/failure: 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-and roid/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, mov,mp4,m4a,3gp,3g2,mj2, from '/storage/emulated/0/videokit/out2.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2mp41
encoder : Lavf56.23.100
comment : Courtesy of National Geographic. Used by Permission.
Duration: 00:00:04.20, start: 0.046440, bitrate: 577 kb/s
Stream #0:0(und): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 160x120 [SAR 9:16 DAR 3:4], 521 kb/s, 30 fps, 30 tbr, 15360 tbn, 30 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, stereo, fltp, 50 kb/s (default)
Metadata:
handler_name : SoundHandler
[mp3 @ 0xb86ade60] Skipping 0 bytes of junk at 132692.
[mjpeg @ 0xb86c9980] Changing bps to 8
[mp3 @ 0xb86ade60] Estimating duration from bitrate, this may be inaccurate
Input #1, mp3, from '/storage/emulated/0/Download/01 Kaari Kaari - Dobaara.mp3':
Metadata:
album : Dobaara (SongsMp3.Co)
artist : Arko , Asees Kaur
album_artist : Arko & Asees Kaur
composer : Arko
performer : SongsMp3.Co
copyright : SongsMp3.Co
disc : 1/1
encoded_by : iTunes 12.6.0.100
genre : Bollywood
TEXT : SongsMp3.Co
TPE4 : SongsMp3.Co
TRSN : SongsMp3.Co
TOPE : SongsMp3.Co
TOLY : SongsMp3.Co
publisher : SongsMp3.Co
title : Kaari Kaari (SongsMp3.Co)
track : 1/1
date : 2017
Duration: 00:03:46.72, start: 0.000000, bitrate: 324 kb/s
Stream #1:0: Audio: mp3, 44100 Hz, stereo, s16p, 320 kb/s
Stream #1:1: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 600x600 [SAR 96:96 DAR 1:1], 90k tbr, 90k tbn, 90k tbc
Metadata:
comment : Cover (front)
[NULL @ 0xb86cab70] Unable to find a suitable output format for ' -map 0:v:0 -map 1:a:0'
-map 0:v:0 -map 1:a:0: Invalid argument
05-26 18:39:35.543 29188-29188/com.example.codal.videotm D/ViewRootImpl: #3 mView = null
05-26 18:39:35.543 29188-29188/com.example.codal.videotm D/finish: merge finish -
RTP packets detected as UDP
8 juillet 2024, par fritzHere is what I am trying to do :



WebRTC endpoint > RTP Endpoint > ffmpeg > RTMP server.




This is what my SDP file looks like.



var cm_offer = "v=0\n" +
 "o=- 3641290734 3641290734 IN IP4 127.0.0.1\n" +
 "s=nginx\n" +
 "c=IN IP4 127.0.0.1\n" +
 "t=0 0\n" +
 "m=audio 60820 RTP/AVP 0\n" +
 "a=rtpmap:0 PCMU/8000\n" +
 "a=recvonly\n" +
 "m=video 59618 RTP/AVP 101\n" +
 "a=rtpmap:101 H264/90000\n" +
 "a=recvonly\n";




What's happening is that wireshark can detect the incoming packets at port 59618, but not as RTP packets but UDP packets. I am trying to capture the packets using ffmpeg with the following command :



ubuntu@ip-132-31-40-100:~$ ffmpeg -i udp://127.0.0.1:59618 -vcodec copy stream.mp4
ffmpeg version git-2017-01-22-f1214ad Copyright (c) 2000-2017 the FFmpeg developers
 built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
 configuration: --extra-libs=-ldl --prefix=/opt/ffmpeg --mandir=/usr/share/man --enable-avresample --disable-debug --enable-nonfree --enable-gpl --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --disable-decoder=amrnb --disable-decoder=amrwb --enable-libpulse --enable-libfreetype --enable-gnutls --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libvorbis --enable-libmp3lame --enable-libopus --enable-libvpx --enable-libspeex --enable-libass --enable-avisynth --enable-libsoxr --enable-libxvid --enable-libvidstab --enable-libwavpack --enable-nvenc
 libavutil 55. 44.100 / 55. 44.100
 libavcodec 57. 75.100 / 57. 75.100
 libavformat 57. 63.100 / 57. 63.100
 libavdevice 57. 2.100 / 57. 2.100
 libavfilter 6. 69.100 / 6. 69.100
 libavresample 3. 2. 0 / 3. 2. 0
 libswscale 4. 3.101 / 4. 3.101
 libswresample 2. 4.100 / 2. 4.100
 libpostproc 54. 2.100 / 54. 2.100 




All I get is a blinking cursor and The stream.mp4 file is not written to disk after I exit (ctrl+c).



So can you help me figure out :



- 

- why wireshark cannot detect the packets as RTP (I suspect it has something to do with SDP)
- How to handle SDP answer when the RTP endpoint is pushing to ffmpeg which doesn't send an answer back.







Here is the entire code (hello world tutorial modified)



/*
 * (C) Copyright 2014-2015 Kurento (http://kurento.org/)
 *
 * 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.
 */

 function getopts(args, opts)
 {
 var result = opts.default || {};
 args.replace(
 new RegExp("([^?=&]+)(=([^&]*))?", "g"),
 function($0, $1, $2, $3) { result[$1] = decodeURI($3); });

 return result;
 };

 var args = getopts(location.search,
 {
 default:
 {
 ws_uri: 'wss://' + location.hostname + ':8433/kurento',
 ice_servers: undefined
 }
 });

 function setIceCandidateCallbacks(webRtcPeer, webRtcEp, onerror)
 {
 webRtcPeer.on('icecandidate', function(candidate) {
 console.log("Local candidate:",candidate);

 candidate = kurentoClient.getComplexType('IceCandidate')(candidate);

 webRtcEp.addIceCandidate(candidate, onerror)
 });

 webRtcEp.on('OnIceCandidate', function(event) {
 var candidate = event.candidate;

 console.log("Remote candidate:",candidate);

 webRtcPeer.addIceCandidate(candidate, onerror);
 });
 }


 function setIceCandidateCallbacks2(webRtcPeer, rtpEp, onerror)
 {
 webRtcPeer.on('icecandidate', function(candidate) {
 console.log("Localr candidate:",candidate);

 candidate = kurentoClient.getComplexType('IceCandidate')(candidate);

 rtpEp.addIceCandidate(candidate, onerror)
 });
 }


 window.addEventListener('load', function()
 {
 console = new Console();

 var webRtcPeer;
 var pipeline;
 var webRtcEpt;

 var videoInput = document.getElementById('videoInput');
 var videoOutput = document.getElementById('videoOutput');

 var startButton = document.getElementById("start");
 var stopButton = document.getElementById("stop");

 startButton.addEventListener("click", function()
 {
 showSpinner(videoInput, videoOutput);

 var options = {
 localVideo: videoInput,
 remoteVideo: videoOutput
 };


 if (args.ice_servers) {
 console.log("Use ICE servers: " + args.ice_servers);
 options.configuration = {
 iceServers : JSON.parse(args.ice_servers)
 };
 } else {
 console.log("Use freeice")
 }

 webRtcPeer = kurentoUtils.WebRtcPeer.WebRtcPeerSendrecv(options, function(error)
 {
 if(error) return onError(error)

 this.generateOffer(onOffer)
 });

 function onOffer(error, sdpOffer)
 {
 if(error) return onError(error)

 kurentoClient(args.ws_uri, function(error, client)
 {
 if(error) return onError(error);

 client.create("MediaPipeline", function(error, _pipeline)
 {
 if(error) return onError(error);

 pipeline = _pipeline;

 pipeline.create("WebRtcEndpoint", function(error, webRtc){
 if(error) return onError(error);

 webRtcEpt = webRtc;

 setIceCandidateCallbacks(webRtcPeer, webRtc, onError)

 webRtc.processOffer(sdpOffer, function(error, sdpAnswer){
 if(error) return onError(error);

 webRtcPeer.processAnswer(sdpAnswer, onError);
 });
 webRtc.gatherCandidates(onError);

 webRtc.connect(webRtc, function(error){
 if(error) return onError(error);

 console.log("Loopback established");
 });
 });



 pipeline.create("RtpEndpoint", function(error, rtp){
 if(error) return onError(error);

 //setIceCandidateCallbacks2(webRtcPeer, rtp, onError)


 var cm_offer = "v=0\n" +
 "o=- 3641290734 3641290734 IN IP4 127.0.0.1\n" +
 "s=nginx\n" +
 "c=IN IP4 127.0.0.1\n" +
 "t=0 0\n" +
 "m=audio 60820 RTP/AVP 0\n" +
 "a=rtpmap:0 PCMU/8000\n" +
 "a=recvonly\n" +
 "m=video 59618 RTP/AVP 101\n" +
 "a=rtpmap:101 H264/90000\n" +
 "a=recvonly\n";



 rtp.processOffer(cm_offer, function(error, cm_sdpAnswer){
 if(error) return onError(error);

 //webRtcPeer.processAnswer(cm_sdpAnswer, onError);
 });
 //rtp.gatherCandidates(onError);

 webRtcEpt.connect(rtp, function(error){
 if(error) return onError(error);

 console.log("RTP endpoint connected to webRTC");
 });
 });









 });
 });
 }
 });
 stopButton.addEventListener("click", stop);


 function stop() {
 if (webRtcPeer) {
 webRtcPeer.dispose();
 webRtcPeer = null;
 }

 if(pipeline){
 pipeline.release();
 pipeline = null;
 }

 hideSpinner(videoInput, videoOutput);
 }

 function onError(error) {
 if(error)
 {
 console.error(error);
 stop();
 }
 }
 })


 function showSpinner() {
 for (var i = 0; i < arguments.length; i++) {
 arguments[i].poster = 'img/transparent-1px.png';
 arguments[i].style.background = "center transparent url('img/spinner.gif') no-repeat";
 }
 }

 function hideSpinner() {
 for (var i = 0; i < arguments.length; i++) {
 arguments[i].src = '';
 arguments[i].poster = 'img/webrtc.png';
 arguments[i].style.background = '';
 }
 }

 /**
 * Lightbox utility (to display media pipeline image in a modal dialog)
 */
 $(document).delegate('*[data-toggle="lightbox"]', 'click', function(event) {
 event.preventDefault();
 $(this).ekkoLightbox();
 });