What is the difference between M4A and AAC Audio Files? - audio

Is there any difference between M4A audio files and AAC audio files or are they exactly
the same thing but with a different file extension?

.M4A files typically contain audio only and are formatted as MPEG-4 Part 14 files (.MP4 container).
.AAC is not a container format and instead it is a raw MPEG-4 Part 3 bitstream with audio stream encoded.
Note that M4A does not have to contain exactly AAC audio, there are other valid options as well.

There are raw video and audio streams, this streams cannot be played directly on most video/audio player, they need to be "encapsulated" on a transport, a raw H.264 video stream and a raw AAC audio stream need to be inside a MP4 encapsulator, it can be also inside an AVI or MOV encapsulator.
A MP4 file can contain a H.264 video stream and/or an AAC audio stream, but for some reason someone decided that a MP4 file that contains video and audio use the file extension M4V (v for video) and if it is an MP4 file that only contains audio to use the M4A extension, that is a common practice in other encapsulators like Windows Media which use WMV and WMA, or OGG which use OGV and OGA, silly as it seems.
So a file that has a M4A file extension is an MP4 file that can contain a AAC audio track but it is not always the case, that's why programs like mediainfo become handy to know what is inside a file.

They are not the same thing.
An .m4a file is basically the same thing as an mp4; it is only a container format. codec != container It does not imply a codec, and therefore it can only contain mp3, ac3 or any other audio codec.
An .aac file contains concatenated AAC frames pre-pended with ADTS headers (and optionally an ID3 tag).

Related

Convert an audio file into a pcap with codec G722

I need to convert an audio file (any common format) into a rtp stream saved in a .pcap file with G.722 Codec.
The generated .pcap file will be sent with SIPp using:
<exec play_pcap_audio="g722.pcap"/>
I know it is possible to send also .wav file with the following command, if the .wav is correctly encoded:
<exec rtp_stream="g711.wav"/>
But seems that is not possible to encode a .wav with G722.
There are multiple solutions on the web and SO on how to convert a .pcap into an audio file, but I'm actually looking for the opposite.
Steps to convert wav audio to .pcap file:
Split audio to 20 ms chunks
Encode each chunk with G.722 encoder
Create RTP header for each encoded chunk
Save RTP stream to .pcap
I've never used SIPp, but if it can process encoded G.722 stream, then use ffmpeg for encoding:
ffmpeg -i sample.wav -ar 16000 -acodec g722 sample.g722
Get softphone supporting wav files as source and G.722 codec, make call with only G.722 enabled, capture RTP stream to pcap.

How to add a 5.1 .flac audio track to a .ts file with already 3 audio tracks?

I want to add a 5.1 .flac audio track to a .ts file that already has three audio tracks. I tried with tsMuxer and ffmpeg with unsuccessful results. In tsMuxeR the .flac track is not recognized and in ffmpeg everything seems to work fine until the very last moment when I check the file and the .flac audio track is not included in the "output.ts". The .flac track is about 3GB and its lenght is around two and a half hours.
Thank you so much.
I don't think you'll find any existing software that maps FLAC into a MPEG-2 Transport Stream.
This gives you an idea what sort of issues you run into: https://xiph.org/flac/ogg_mapping.html
Let's say you came up with a reasonable way of mapping FLAC into a MPEG-2 Transport Stream - there won't be anything reading it.
Unless there is a specified way of mapping FLAC into a MPEG-2 Tranport Stream - you are on your own.
But PCM is supported in a MPEG-2 Transport Stream (for example Blu-Ray).
I'd use ffmpeg to transcode your audio from FLAC to PCM and then mux it into your transport stream.
Your audio transcode (FLAC to PCM) is lossless.

Muxing only audio into MP4 ffmpeg failed

I am trying to write audio encoded packets into a MP4 container.I have followed this sample code and instead of creating dummy frame, I am feeding real G.711 PCMU encoded frame into ffmpeg. The writing seems working and file size is increasing, but the mp4 is not playing using ffplay or in VLC player.
Thanks in advance!
G.711 PCM encoded data is not supported by mp4 container. So I used mov multimedia container instead. And for mp4, I transcoded PCM into AAC which is supported by mp4. See this for details.

MONOGRAM AAC Encoder generates file with no audio

I have tried to capture audio from live streaming by using audio capture device with MONOGRAM
AAC Encoder downloaded from http://blog.monogram.sk/janos/2007/12/11/free-aac-encoder-filter/,
but it generates audio file with 1kb of size without audio.
Can anyone tell me the reason of this?
Thank You.

How to implement flv -> mp4/ogg live stream transcoding with FMS?

flv is not directly supported by most mobile browsers,
so I want to convert to the mp4/ogg format.
Is there anyhow I can achieve it with FMS that generated the .flv file from live webcam stream?
UPDATE
I found a similar question here which partly does the job:
ffmpeg -i input.flv output.mp4
But I need streaming
I assume you mean Ogg Vorbis audio with AVC/h.264 video in an FLV container? If so, the only problem is that the Flash Player does not support vorbis playback nor is there a codec id for it in the FLV specification. There is however an Alchemy plugin which does decode Ogg but it is not for streaming from FMS and certainly not within FLV. Info on the Flash/Ogg decoder:
http://www.hydrogenaudio.org/forums/lofiversion/index.php/t66269.html
Media types for FLV may be found here, as well as other useful information:
http://en.wikipedia.org/wiki/Flash_Video
Summary:
Supported media types in FLV file format
Video: On2 VP6, Sorenson Spark (Sorenson H.263), Screen video, H.264
Audio: MP3, ADPCM, Linear PCM, Nellymoser, Speex, AAC, G.711 (reserved for internal use)
Supported media types in F4V file format
Video: H.264
Images (still frame of video data): GIF, PNG, JPEG
Audio: AAC, HE-AAC, MP3
By the way, I found your question because I am implementing Ogg/Ogv streaming in Red5 (http://code.google.com/p/red5) for HTML5 and Unity.

Resources