我通過套接字連接接收音頻和視頻RTP數據。現在我想將視頻和音頻RTP數據合併到MP4文件中。我怎樣才能做到這一點?我是否需要將視頻RTP分別保存到h264和音頻RTP到PCMU中,然後將它們合併到MP4文件中?或者是否可以直接將音頻視頻RTP合併到MP4文件中?將音頻和視頻RTP數據合併到mp4文件
提前致謝!
我通過套接字連接接收音頻和視頻RTP數據。現在我想將視頻和音頻RTP數據合併到MP4文件中。我怎樣才能做到這一點?我是否需要將視頻RTP分別保存到h264和音頻RTP到PCMU中,然後將它們合併到MP4文件中?或者是否可以直接將音頻視頻RTP合併到MP4文件中?將音頻和視頻RTP數據合併到mp4文件
提前致謝!
您不需要創建單獨的音頻和視頻文件來將它們複合到MP4(或任何容器)。但在您的程序中,您需要將H.264和PCMU幀從RTP數據包中取出並傳輸到FFMPEG。
因此,在總結,你的程序的僞代碼看起來應該是這樣,
Main {
//Setup RTP receiver
//Configure MP4 Muxer of FFMPEG (set input and oputput format), your input is H.264 and PCMU and output is MP4
//avformat_alloc_output_context2
//avformat_new_stream
//Create Thread1 to read audio RTP packets
//Create Thread2 to read video RTP packets
//Complete writing MP4 file
//av_write_trailer
}
Thread1()
{
//Receive audio RTP packets
//Form an Audio frame
//Send the frame to muxer av_interleaved_write_frame
}
Thread1()
{
//Receive video RTP packets
//Form an Audio frame
//Send the frame to muxer av_interleaved_write_frame
}
希望這些幫助。在ffmpeg源代碼中提供的Muxer示例會很有幫助。 https://github.com/FFmpeg/FFmpeg/blob/master/doc/examples/muxing.c
謝謝!希望它能爲我工作。 –
是否可以使用FFMPEG同時呈現音頻視頻和錄製視頻? –
是的。一旦你有數據,它取決於你的應用程序如何使用它。在一個使用案例中,我同時錄製和流式傳輸,使用FFMPEG進行錄製並使用Live555進行流式傳輸。 – pragnesh
我不認爲這個問題是特定於C++的,它更多的是關於哪個編解碼器與ffmpeg一起使用。 –
是的,你是對的。假設語言不可知,你可以給出建議。 –