libvlc and sout option - vlc

I would like to use the sout option in libvlc like in the corresponding command line:
vlc rtsp://address --sout '#duplicate{dst=display,dst=standard{access=file,mux=ts,dst=/tmp/go.mpg}}'
but unfortunately, it's not taken into account. I was told that sout is not implemented (yet) in libvlc. Any idea how I could find a solution? I'm basically just trying to dump on file the rtsp stream that is played on screen. There is not really any transcoding here - just a dump. If it's not possible, is there a good place I could patch libvlc and simply dump the stream on file?

After enabling sout, the magic line in libvlc turned out to be:
libvlc_media_add_option(p_md, ":sout=#stream_out_duplicate{dst=display,dst=std{access=file,mux=ts,dst=/sdcard/go.mpg}}");

Related

does vlc supports "normvol" module in android?

Added these configuration changes in VLCOptions.java:
options.add("--audio-filter=normvol")
options.add("--norm-buff-size=20")
options.add("--norm-max-level=2")
But in the logs could find:
libvlc audio filter: using audio filter module "scaletempo"
We tried the same approach in vlc command line its selecting the "normvol" module.
Maybe this works
options.add("--audio-filter=volnorm")

Getting .mp4 from .f4m stream url

Currently I have the following url
http://vpl.rtl.be/z//2018/08/21/CA00001318626_,400,600,800,1200,1800,.mp4.csmil/manifest.f4m?hdcore=1
which contains an .f4m file, which directs to an mp4 file.
I can't find a way to get that mp4 from that file (i just need the direct mp4 url or file).
How should I proceed? I have tried using ffmpeg or simply reading the file, with no luck.
I'm not much familiar with FFMpeg but you can try livestreamer :-)
Command line:
livestreamer "hds://http://vpl.rtl.be/z//2018/08/21/CA00001318626_,400,600,800,1200,1800,.mp4.csmil/manifest.f4m?hdcore=1" best -o video.ts
I tried in .mp4 format but it didn't like that, the file header shows FLV, you can use VLC Media Player to open the video.ts file.
Good luck!

libffmpeg: writing an RTSP stream to an output file

I'm working with libffmpeg in an iOS app. My goal is to connect to an RTSP source and write the media out to a file that can later be used with the iOS media player. Ideally I'd like to do this without transcoding the incoming data. I also want to be able to later re-encode the media with AVAssetExportSession if the user chooses to do so.
Because I want to create a file that is compatible with iOS, I'm limited (I believe) to mpeg, mp4 or quicktime (mov) formats.
Whenever I try to use one of these formats, I see the following warnings during my call to avformat_write_header:
[mov # 0x16401c00] Codec for stream 0 does not use global headers but container format requires global headers
[mov # 0x16401c00] Codec for stream 1 does not use global headers but container format requires global headers
My understanding is that the header wants to know the ultimate file size, which I do not know (the RTSP server is live streaming a camera, and the user stops the recording whenever they want). I guess that makes sense, but I know that others have successfully done this using the ffmpeg command line, so I'm confused as to what else I need to do here.
If I ignore the warning, I can still proceed with writing the file. If I choose mpeg or mp4 formats, my app crashes when I call av_write_trailer. If I use mov, I can successfully close the file, and the file does play back, but usually fails when I try to hand it to the AVAssetExportSession.
I would appreciate any insight into this. Thanks.
Frank
I found what appears to be a solution -- at least, it eliminates the warning. I had to set the CODEC_FLAG_GLOBAL_HEADER on both the audio and video codecs, before calling avcodec_open2.

What is the proper way to RTSP stream, transcode and save to file?

While showing the rstp-stream, we are trying to transcode, and record it to file for later use.
VLC 2.1.1 seems to work when using
vlc rtsp-stream :sout=#transcode{vcodec=mp1v,vb=700,scale=1}:duplicate{dst=display,dst=std{access=file,mux=asf,dst="C:\file.mpg"}}"
This seems to be broken on VLC 2.2.4
Documentation on VLC's wiki seems outdated.
Discrepancies with the vcodec/mux pairing as well as using samplerate instead of vb seem to fix it.
vlc rtsp-stream :sout=#transcode{vcodec=mp4v,scale=0.5,samplerate=44100}:duplicate{dst=display,dst=std{access=file,mux=mp4,dst='C:\file.mpg'}}"

How to copy audio stream using FFMpeg API ( not a command line tool )

I'm developing some Video Editing Apps on Android.
the objective of the app is "Editing Videos on Android".
and...
I'm just completed making video file using some images.
but.. I can't attach audio into the video.
my method is same as follows.
1.VideoStream, audio stream creation using AVFormatContext
2.Movie encoding in video stream was successful
3.Encode codec open in audio stream was successful
4.Set sample format to AV_SAMPLE_FMT_FLTP
5.Sample rate and channel was set same as source audio
6.Choose appropriate Decoder and read packet
7.Convert packets using swr_converter, setting same as sample format
8.Encode converted data
9.memory deallocation
10.END!
Problem is here:
Video of finally created video file was normally played. but the Audio wasn't.
It heared like weird. It have many noises and plays slowly.
I've googled with many keywords but they only say about "FFmpeg command line usage".
I wanna make with FFMpeg API. not a Command line tool.
Please help.
Your question is vague without some kind of code to go along with it, as trust me there are a lot of things that can go wrong when using ffmpeg's libraries directly (and on Windows there is no debuging). Unfortunately ffmpeg's libraries are not well documented so it is generally best to read the source code for ffmpeg in order to use its libraries. Find the equivalent command line options to perform what you want and track that through ffmpeg's source to see the library calls.

Resources