ffmpeg合成pcm 与 h.264后,没有声音 40C

ffmpeg合成pcm 与 h.264后,用vlc播放没有声音,但使用ffplay播放正常,这是什么原因造成的如题目,求解决思路

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C++用FFMPEG库做的h.264网络流播放器,直连相机播放没问题,通过流媒体转发服务器播放就花屏

如题,麻烦问大神这是什么原因导致的?还是就是在自己电脑打开流媒体服务器都没花屏,服务器放别的电脑上面然后我这边连接,就会有严重的花屏。

ffmpeg编码YUV图像成h264文件 关于时间戳pts的问题!

摄像头采集的每一帧YUV数据通过ffmpeg编码为h264文件 avcodec_encode_video2(video_stream->codec,&pkt,pFrame,&got _pkt)循环调用此函数编码每一帧图像 问题:编码时AVFrame的成员pts 该怎么赋值? 以及AVStream->time_base 与 AVStream->codec->time_base 表达的意思有差别吗? 这是雷博的代码: ![图片说明](https://img-ask.csdn.net/upload/201801/12/1515734452_61824.png) 讲解一下这个代码也可以,谢谢

ffmpeg x264 多线程问题

ffmpeg -i 9.avi -vcodec libx264 -map 0 9.264 -i 10.avi -vcodec libx264 -map 1 10.264 -i 11.avi -vcodec libx264 -map 2 11.264 使用上面的命令将三个文件同时转码为H264编码的文件,转码变的异常的慢,请各位帮忙看看是什么原因。我这样做主要是为了看看三个视频文件同时转码的速率与一个视频文件的转码速的对比,但现在这种结果肯定是不正常的。 另外,请教各位,对于同一个视频文件,输出的视频编码文件的质量同原视频文件一样,转码速度受哪些转码参数影响?

使用ffmpeg保存H.264的RTSP流到AVI文件中程序执行没有报错,但是文件是空的。

使用ffmpeg保存H.264的RTSP流到AVI文件中程序执行没有报错,但是文件是空的,其中ffmpeg也根据文件名生成了相应的文件,,avformat_write_header ,av_interleaved_write_frame, av_interleaved_write_frame均返回0(0即正确返回)但是,为什么生成的AVI文件中是0个字节啊?

C#using AForge.Video.FFMPEG;能录制视频但没有声音。

C#using AForge.Video.FFMPEG;能录制视频但没有声音。

c# aforge.video.ffmpeg,version=2.2.5.0

debug在x64情况下会弹出这个错误.怎么解决?只有在anycpu可以.

ffmpeg解码MediaCodec的h264编码问题

安卓下用MediaCodec的h264编码: ``` boolean eof = false; MediaCodec.BufferInfo bufferInfo = new MediaCodec.BufferInfo(); ByteBuffer[] outputBuffers = null; boolean sendKeyFrame = false; while (!eof) { int bufIndex = codec.dequeueOutputBuffer(bufferInfo, -1); eof = (bufferInfo.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0; try { if (bufIndex >= 0) { if (outputBuffers == null) { outputBuffers = codec.getOutputBuffers(); } ByteBuffer codecBuffer = outputBuffers[bufIndex]; codecBuffer.position(bufferInfo.offset); codecBuffer.limit(bufferInfo.offset + bufferInfo.size); byte[] buf = new byte[bufferInfo.size]; codecBuffer.get(buf, 0, bufferInfo.size); Socket.sendVideo(buf); // 发送数据 } else if (bufIndex == MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED) { outputBuffers = null; } else if (bufIndex == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) { MediaFormat outputFormat = codec.getOutputFormat(); } } finally { if (bufIndex >= 0) { codec.releaseOutputBuffer(bufIndex, false); } } } ``` PC下vc使用ffmpeg参考网上的解码h264流 https://blog.csdn.net/xushan239/article/details/79028111 https://www.cnblogs.com/lidabo/p/3326502.html 参考各种等等, 错误: avcodec_decode_video2或者avcodec_send_packet返回AVERROR_INVALIDD(-1094995529) 要不就是在avformat_open_input里无限循环read_packet 问: 哪里出问题? 本人对ffmpeg、MediaCodec都不熟悉,谁能帮忙解决一下?

ffmpeg.exe使用命令行进行录屏,为什么在ie上不能进行播放?

视频编码为H264,保存文件为mp4格式,同样的在media player上也不能进行播放 这是我录屏的命令:ffmpeg.exe -f gdigrab -i desktop -r 15 -vf lutyuv="u=128:v=128" -vcodec libx264 rest.mp4 另外,我尝试了录制成mpeg格式,再进行转码mp4则不存在不能播放的问题

关于MP4文件解封装为H.264文件

手头有个项目,需要将MP4文件解封装为H.264文件 对音视频这方面了解不多,目前毫无头绪 请教懂行的大神指点一下啊

ffmpeg解码264视频问题

用avcodec-56.dll解码cif和qcif图像显示花屏,其他格式解码后显示都是正常的。 avcodec-54.dll解码qcif出现花屏。 avcodec-52.dll解码各种格式显示都是正常的。难道高版本解码库解码cif和qcif格式的视频做了其他处理?

ffmpeg合成MP4格式视频

入手ffmpeg大概2周时间,在H264和aac合成MP4文件遇到一个问题,MP4文件使用QQ影音播放没有声音,使用VLC播放有声音, 我在程序里面打印 AVOutputFormat *audio_codec = ofmt_ctx->oformat; if(audio_codec->audio_codec == AV_CODEC_ID_AAC) { printf("TAG----%d---%d--%d\n", st->codec->sample_rate, st->codec->channels,st->codec->sample_fmt); if(st->codec->codec_id == AV_CODEC_ID_AAC) printf("aac-------------------\n"); } else { printf("NO AAC\n"); } 显示的格式为aac 采样率为44100 及bit为8,都是正确的,请教下大神这是什么原因造成的? 下面为源码部分 开发环境为ffmpeg3.0.2,linux 折腾了2周 ,还是没有进展 #include <stdio.h> #define __STDC_CONSTANT_MACROS #include <libavformat/avformat.h> /* FIX: H.264 in some container format (FLV, MP4, MKV etc.) need "h264_mp4toannexb" bitstream filter (BSF) *Add SPS,PPS in front of IDR frame *Add start code ("0,0,0,1") in front of NALU H.264 in some container (MPEG2TS) don't need this BSF. */ //'1': Use H.264 Bitstream Filter #define USE_H264BSF 0 /* FIX:AAC in some container format (FLV, MP4, MKV etc.) need "aac_adtstoasc" bitstream filter (BSF) */ //'1': Use AAC Bitstream Filter #define USE_AACBSF 1 int main(int argc, char* argv[]) { AVOutputFormat *ofmt = NULL; //Input AVFormatContext and Output AVFormatContext AVFormatContext *ifmt_ctx_v = NULL, *ifmt_ctx_a = NULL,*ofmt_ctx = NULL; AVPacket pkt; int ret, i; int videoindex_v=-1,videoindex_out=-1; int audioindex_a=-1,audioindex_out=-1; int frame_index=0; int64_t cur_pts_v=0,cur_pts_a=0; //const char *in_filename_v = "cuc_ieschool.ts";//Input file URL const char *in_filename_v = "22.h264"; //const char *in_filename_a = "cuc_ieschool.mp3"; //const char *in_filename_a = "gowest.m4a"; const char *in_filename_a = "22.aac"; //const char *in_filename_a = "huoyuanjia.mp3"; const char *out_filename = "22.mp4";//Output file URL av_register_all(); //Input #if 1 if ((ret = avformat_open_input(&ifmt_ctx_v, in_filename_v, 0, 0)) < 0) { printf( "Could not open input file."); goto end; } if ((ret = avformat_find_stream_info(ifmt_ctx_v, 0)) < 0) { printf( "Failed to retrieve input stream information"); goto end; } #endif if ((ret = avformat_open_input(&ifmt_ctx_a, in_filename_a, 0, 0)) < 0) { printf( "Could not open input file."); goto end; } if ((ret = avformat_find_stream_info(ifmt_ctx_a, 0)) < 0) { printf( "Failed to retrieve input stream information"); goto end; } printf("===========Input Information==========\n"); av_dump_format(ifmt_ctx_v, 0, in_filename_v, 0); av_dump_format(ifmt_ctx_a, 0, in_filename_a, 0); printf("======================================\n"); //Output avformat_alloc_output_context2(&ofmt_ctx, NULL, NULL, out_filename); if (!ofmt_ctx) { printf( "Could not create output context\n"); ret = AVERROR_UNKNOWN; goto end; } ofmt_ctx->oformat->video_codec = AV_CODEC_ID_H264; ofmt_ctx->oformat->audio_codec = AV_CODEC_ID_AAC; ofmt = ofmt_ctx->oformat; #if 1 for (i = 0; i < ifmt_ctx_v->nb_streams; i++) { //Create output AVStream according to input AVStream if(ifmt_ctx_v->streams[i]->codec->codec_type==AVMEDIA_TYPE_VIDEO){ AVStream *in_stream = ifmt_ctx_v->streams[i]; AVStream *out_stream = avformat_new_stream(ofmt_ctx, in_stream->codec->codec); videoindex_v=i; if (!out_stream) { printf( "Failed allocating output stream\n"); ret = AVERROR_UNKNOWN; goto end; } videoindex_out=out_stream->index; //Copy the settings of AVCodecContext if (avcodec_copy_context(out_stream->codec, in_stream->codec) < 0) { printf( "Failed to copy context from input to output stream codec context\n"); goto end; } out_stream->codec->codec_tag = 0; if (ofmt_ctx->oformat->flags & AVFMT_GLOBALHEADER) out_stream->codec->flags |= CODEC_FLAG_GLOBAL_HEADER; break; } } #endif for (i = 0; i < ifmt_ctx_a->nb_streams; i++) { //Create output AVStream according to input AVStream if(ifmt_ctx_a->streams[i]->codec->codec_type==AVMEDIA_TYPE_AUDIO){ AVStream *in_stream = ifmt_ctx_a->streams[i]; AVStream *out_stream = avformat_new_stream(ofmt_ctx, in_stream->codec->codec); // add_stream(OutputStream * ost, AVFormatContext * oc, AVCodec * * codec, enum AVCodecID codec_id) audioindex_a=i; if (!out_stream) { printf( "Failed allocating output stream\n"); ret = AVERROR_UNKNOWN; goto end; } audioindex_out=out_stream->index; //Copy the settings of AVCodecContext if (avcodec_copy_context(out_stream->codec, in_stream->codec) < 0) { printf( "Failed to copy context from input to output stream codec context\n"); goto end; } out_stream->codec->codec_tag = 0; if (ofmt_ctx->oformat->flags & AVFMT_GLOBALHEADER) out_stream->codec->flags |= CODEC_FLAG_GLOBAL_HEADER; break; } } printf("==========Output Information==========\n"); av_dump_format(ofmt_ctx, 0, out_filename, 1); printf("======================================\n"); //Open output file if (!(ofmt->flags & AVFMT_NOFILE)) { if (avio_open(&ofmt_ctx->pb, out_filename, AVIO_FLAG_WRITE) < 0) { printf( "Could not open output file '%s'", out_filename); goto end; } } //Write file header if (avformat_write_header(ofmt_ctx, NULL) < 0) { printf( "Error occurred when opening output file\n"); goto end; } //FIX #if USE_H264BSF AVBitStreamFilterContext* h264bsfc = av_bitstream_filter_init("h264_mp4toannexb"); #endif #if USE_AACBSF AVBitStreamFilterContext* aacbsfc = av_bitstream_filter_init("aac_adtstoasc"); #endif while (1) { AVFormatContext *ifmt_ctx; int stream_index=0; AVStream *in_stream, *out_stream; //Get an AVPacket #if 1 if(av_compare_ts(cur_pts_v,ifmt_ctx_v->streams[videoindex_v]->time_base,cur_pts_a,ifmt_ctx_a->streams[audioindex_a]->time_base) <= 0){ ifmt_ctx=ifmt_ctx_v; stream_index=videoindex_out; if(av_read_frame(ifmt_ctx, &pkt) >= 0){ do{ in_stream = ifmt_ctx->streams[pkt.stream_index]; out_stream = ofmt_ctx->streams[stream_index]; if(pkt.stream_index==videoindex_v){ //FIX:No PTS (Example: Raw H.264) //Simple Write PTS if(pkt.pts==AV_NOPTS_VALUE){ //Write PTS AVRational time_base1=in_stream->time_base; //Duration between 2 frames (us) int64_t calc_duration=(double)AV_TIME_BASE/av_q2d(in_stream->r_frame_rate); //Parameters pkt.pts=(double)(frame_index*calc_duration)/(double)(av_q2d(time_base1)*AV_TIME_BASE); pkt.dts=pkt.pts; pkt.duration=(double)calc_duration/(double)(av_q2d(time_base1)*AV_TIME_BASE); frame_index++; } cur_pts_v=pkt.pts; break; } }while(av_read_frame(ifmt_ctx, &pkt) >= 0); }else{ break; } }else #endif { ifmt_ctx=ifmt_ctx_a; stream_index=audioindex_out; if(av_read_frame(ifmt_ctx, &pkt) >= 0){ do{ in_stream = ifmt_ctx->streams[pkt.stream_index]; out_stream = ofmt_ctx->streams[stream_index]; if(pkt.stream_index==audioindex_a){ //FIX:No PTS //Simple Write PTS if(pkt.pts==AV_NOPTS_VALUE){ //Write PTS AVRational time_base1=in_stream->time_base; //Duration between 2 frames (us) int64_t calc_duration=(double)AV_TIME_BASE/av_q2d(in_stream->r_frame_rate); //Parameters pkt.pts=(double)(frame_index*calc_duration)/(double)(av_q2d(time_base1)*AV_TIME_BASE); pkt.dts=pkt.pts; pkt.duration=(double)calc_duration/(double)(av_q2d(time_base1)*AV_TIME_BASE); frame_index++; } cur_pts_a=pkt.pts; break; } }while(av_read_frame(ifmt_ctx, &pkt) >= 0); }else{ break; } } //FIX:Bitstream Filter #if USE_H264BSF av_bitstream_filter_filter(h264bsfc, in_stream->codec, NULL, &pkt.data, &pkt.size, pkt.data, pkt.size, 0); #endif #if USE_AACBSF av_bitstream_filter_filter(aacbsfc, out_stream->codec, NULL, &pkt.data, &pkt.size, pkt.data, pkt.size, 0); #endif //Convert PTS/DTS pkt.pts = av_rescale_q_rnd(pkt.pts, in_stream->time_base, out_stream->time_base, (enum AVRounding)(AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX)); pkt.dts = av_rescale_q_rnd(pkt.dts, in_stream->time_base, out_stream->time_base, (enum AVRounding)(AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX)); pkt.duration = av_rescale_q(pkt.duration, in_stream->time_base, out_stream->time_base); pkt.pos = -1; pkt.stream_index=stream_index; printf("Write 1 Packet. size:%5d\tpts:%lld\n",pkt.size,pkt.pts); //Write if (av_interleaved_write_frame(ofmt_ctx, &pkt) < 0) { printf( "Error muxing packet\n"); break; } av_free_packet(&pkt); } //Write file trailer av_write_trailer(ofmt_ctx); #if USE_H264BSF av_bitstream_filter_close(h264bsfc); #endif #if USE_AACBSF av_bitstream_filter_close(aacbsfc); #endif end: avformat_close_input(&ifmt_ctx_v); avformat_close_input(&ifmt_ctx_a); /* close output */ if (ofmt_ctx && !(ofmt->flags & AVFMT_NOFILE)) avio_close(ofmt_ctx->pb); avformat_free_context(ofmt_ctx); if (ret < 0 && ret != AVERROR_EOF) { printf( "Error occurred.\n"); return -1; } return 0; }

H265视频编码协议是否支持SVC能能扩展

H264中SVC功能,是以标准H.264为基础,在语法和工具集上进行了扩展, 那H265支持SVC功能吗

FFMPEG实时解码RTP传输的H264流视频花屏

自己用QT写的程序,在PC上采集视频编码RTP打包发送。如果发送给自己,然后用VLC播放的话是可以正常显示的(尽管延迟会不断增大,这个问题再待解决),但是用自己编的软件确无法正常显示,能看到一瞬间有部分画面正常,然后一会画面就糊掉了。 同样的代码, 我在树莓派上,用OPENMAX硬件加速编码,然后同样的打包方式发送,发送给树莓派自己或者给PC,都能正常地显示。 不知道这个是哪部分出了原因?到底是FFMPEG编码部分出问题,还是接收的代码有问题?? 结果如图。。。![图片说明](https://img-ask.csdn.net/upload/201510/25/1445754428_146815.jpg) 然后程序会不断报类似如下错误 [h264 @ 17653080] Cannot use next picture in error concealment [h264 @ 17653080] concealing 1040 DC, 1040 AC, 1040 MV errors in P frame [h264 @ 17653080] Cannot use next picture in error concealment [h264 @ 17653080] concealing 1000 DC, 1000 AC, 1000 MV errors in P frame [h264 @ 17653080] Cannot use next picture in error concealment [h264 @ 17653080] concealing 1040 DC, 1040 AC, 1040 MV errors in P frame [h264 @ 17653080] Cannot use next picture in error concealment [h264 @ 17653080] concealing 1040 DC, 1040 AC, 1040 MV errors in P frame [h264 @ 17653080] Cannot use next picture in error concealment [h264 @ 17653080] concealing 1040 DC, 1040 AC, 1040 MV errors in P frame [h264 @ 17653080] Cannot use next picture in error concealment [h264 @ 17653080] concealing 1040 DC, 1040 AC, 1040 MV errors in P frame [h264 @ 17653080] Cannot use next picture in error concealment [h264 @ 17653080] concealing 1000 DC, 1000 AC, 1000 MV errors in P frame [h264 @ 17653080] Cannot use next picture in error concealment [h264 @ 17653080] concealing 1040 DC, 1040 AC, 1040 MV errors in P frame [h264 @ 17653080] Cannot use next picture in error concealment

为什么海思硬件解码不支持ffmpeg转出的h264视频

我用ffmpeg把MP4文件准换成h264,用海思的示例代码都不能播放,海思自己提供的示例h264视频都可以正常播放,用ffmpeg转出来的h264有什么不同吗?

ffmpeg解码播放H264解码播放的速度过快

在android平台上利用ffmpeg+anativewindow来播放h264的实时流发现播放的速度太快了。 听一些前辈说要增加延时。这块有点蒙蔽的。。求问一下该如何解决。

ffmpeg分离mp4文件中h265流

目前,在linux平台上使用ffmpeg完成mp4的demuxer功能,拿到原始ES流,送入硬件解码器解码. 针对h264,目前ffmpeg通过流过滤器av_bitstream_filter_init("h264_mp4toannexb");可以拿到NALU模块的PSP,PPS等数据。 但是目前针对h265编码格式的流,不知道如何处理,求高人指教? 目前,我想从GPAC源码中mp42ts模块中找解决办法,gpac从mp4中拿到es数据肯定会加NALU信息的,但是代码没怎么读懂!

Golang exec.Command()错误-通过Golang的ffmpeg命令

<div class="post-text" itemprop="text"> <p>Currently working with this ffmpeg command to edit video </p> <pre><code>ffmpeg -i "video1.ts" -c:v libx264 -crf 20 -c:a aac -strict -2 "video1-fix.ts" </code></pre> <p>When I enter it in the terminal, it works. However when I try to use the Golang exec.Command() func, I get err response of </p> <pre><code>&amp;{/usr/local/bin/ffmpeg [ffmpeg -i "video1.ts" -c:v libx264 -crf 20 -c:a aac -strict -2 "video1-fix.ts"] [] &lt;nil&gt; &lt;nil&gt; &lt;nil&gt; [] &lt;nil&gt; &lt;nil&gt; &lt;nil&gt; &lt;nil&gt; &lt;nil&gt; false [] [] [] [] &lt;nil&gt; &lt;nil&gt;} </code></pre> <p>Here below is my code</p> <pre><code>cmdArguments := []string{"-i", "\"video-1.ts\"", "-c:v", "libx264", "-crf", "20", "-c:a", "aac", "-strict", "-2", "\"video1-fix.ts\""} err := exec.Command("ffmpeg", cmdArguments...) fmt.Println(err) </code></pre> <p>Am i missing something from my command syntax? Not sure why it is not loading the videos</p> </div>

基于UDP的h264实时裸流播放

本人想用《最简单的基于FFmpeg的解码器-纯净版》该项目中的解码器直接解码socket到的h264裸流,请问可以吗???该项目是解码本地文件视频的一个简单的播放器,可解码h264裸流。我想把socket到的裸流直接喂给里面的解码器。

关于h264+aac合成MP4问题

bool Mp4Mutex::init(int& nTrackId, int nSampleRate, int nChannal, int bitsPerSample,char* pMp4File ) { //m_Mp4File = pMp4File; m_nSampleRate = nSampleRate; m_nAudioChannal = nChannal; m_nBitsPerSample = bitsPerSample; // init faac m_hEncoder = faacEncOpen( nSampleRate, nChannal, &m_nInputSamples, &m_nMaxOutputBytes); m_nMaxInputBytes=m_nInputSamples*bitsPerSample/8; m_pbPCMBuffer = new BYTE [m_nMaxInputBytes]; m_pOutAACBuffer = new BYTE [m_nMaxOutputBytes]; m_pTempBuffer = new BYTE [TEMP_BUFFER_SIZE]; memset(m_pTempBuffer, 0 , TEMP_BUFFER_SIZE); // Get current encoding configuration faacEncConfigurationPtr pConfiguration = faacEncGetCurrentConfiguration(m_hEncoder); if( !pConfiguration ) { printf("GetCurrentConfiguration error!\n"); return false; } //设置版本,录制MP4文件时要用MPEG4 pConfiguration->version = MPEG4 ; pConfiguration->aacObjectType = LOW; //LC编码 //输入数据类型 pConfiguration->inputFormat = FAAC_INPUT_16BIT; // outputFormat (0 = Raw; 1 = ADTS) // 录制MP4文件时,要用raw流。检验编码是否正确时可设置为 adts传输流, pConfiguration->outputFormat= 0; //瞬时噪声定形(temporal noise shaping,TNS)滤波器 pConfiguration->shortctl = SHORTCTL_NORMAL; pConfiguration->useTns=true; //pConfiguration->useLfe=false; pConfiguration->quantqual=100; pConfiguration->bandWidth=0; pConfiguration->bitRate=0; // Set encoding configuration faacEncSetConfiguration( m_hEncoder, pConfiguration); // 2.1 create mp4 file //char tmp[255] = "E:\\test1.mp4"; m_Mp4File = MP4Create(pMp4File , 0); if ( m_Mp4File == MP4_INVALID_FILE_HANDLE) { printf("open file fialed.\n"); return false; } // 2.2 add audio track m_AudioTrackId = MP4AddAudioTrack( m_Mp4File, nSampleRate, m_nInputSamples , MP4_MPEG4_AUDIO_TYPE ); if (m_AudioTrackId == MP4_INVALID_TRACK_ID) { //MP4Close(m_Mp4File); ///free(faacDecoderInfo); return false; } nTrackId = m_AudioTrackId; // 2.3 set audio level LC MP4SetAudioProfileLevel(m_Mp4File, 0x2 ); // // 2.4 get decoder info unsigned char* faacDecoderInfo = NULL; unsigned long faacDecoderInfoSize = 0; if( faacEncGetDecoderSpecificInfo( m_hEncoder, &faacDecoderInfo, &faacDecoderInfoSize )) { //MP4Close(m_Mp4File); free(faacDecoderInfo); return false ; } // 2.5 set encoder info [16bit-8000hz-1channal->{ 0x15, 0x88 } ] bool bOk = MP4SetTrackESConfiguration(m_Mp4File, m_AudioTrackId, faacDecoderInfo, faacDecoderInfoSize ); if( !bOk ) { free(faacDecoderInfo); //MP4Close(m_Mp4File); return false; } free( faacDecoderInfo ); return true; } void Mp4Mutex::StartWriteMp4(const unsigned char *const pBufferG711,int nG711Len) { static FILE* fp = fopen("E:\\3.g711a","wb"); fwrite(pBufferG711,nG711Len,1,fp); fflush(fp); if ( G711_BUFFER_SIZE < nG711Len ) { } BYTE szPcmBuff[PCM_BUFFER_SIZE] = {0};//1024 int nPcmLen = g711a_decode( (short*)szPcmBuff, pBufferG711, nG711Len ); memcpy(m_pTempBuffer+m_nTempPos, szPcmBuff ,nPcmLen ) ; m_nTempPos += nPcmLen; if ( m_nTempPos < m_nMaxInputBytes ) { return ; } memcpy(m_pbPCMBuffer, m_pTempBuffer ,m_nMaxInputBytes ) ; char szTemp[2048]={0}; int nLeft = m_nTempPos-m_nMaxInputBytes; memcpy( szTemp, (m_pTempBuffer+m_nMaxInputBytes), nLeft ); memset(m_pTempBuffer, 0, TEMP_BUFFER_SIZE ); memcpy( m_pTempBuffer, szTemp, nLeft ); m_nTempPos -= m_nMaxInputBytes ; int nRet = faacEncEncode(m_hEncoder, (int*)m_pbPCMBuffer, m_nInputSamples, m_pOutAACBuffer, m_nMaxOutputBytes ); if ( nRet <= 0 ) { return ; } MP4WriteSample( m_Mp4File, m_AudioTrackId, (BYTE*)&m_pOutAACBuffer[0], nRet-0 , 1024, 0, true); } 代码如上,直接从摄像机组播取H264+G711a的标准流,合成完MP4后没有音频,从收流处直接将g711a保存成文件单独使用如上代码dome转化为MP4后播放正常,求原因啊!!!!!!

C/C++学习指南全套教程

C/C++学习的全套教程,从基本语法,基本原理,到界面开发、网络开发、Linux开发、安全算法,应用尽用。由毕业于清华大学的业内人士执课,为C/C++编程爱好者的教程。

定量遥感中文版 梁顺林著 范闻捷译

这是梁顺林的定量遥感的中文版,由范闻捷等翻译的,是电子版PDF,解决了大家看英文费时费事的问题,希望大家下载看看,一定会有帮助的

YOLOv3目标检测实战:训练自己的数据集

YOLOv3是一种基于深度学习的端到端实时目标检测方法,以速度快见长。本课程将手把手地教大家使用labelImg标注和使用YOLOv3训练自己的数据集。课程分为三个小项目:足球目标检测(单目标检测)、梅西目标检测(单目标检测)、足球和梅西同时目标检测(两目标检测)。 本课程的YOLOv3使用Darknet,在Ubuntu系统上做项目演示。包括:安装Darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 Darknet是使用C语言实现的轻型开源深度学习框架,依赖少,可移植性好,值得深入探究。 除本课程《YOLOv3目标检测实战:训练自己的数据集》外,本人推出了有关YOLOv3目标检测的系列课程,请持续关注该系列的其它课程视频,包括: 《YOLOv3目标检测实战:交通标志识别》 《YOLOv3目标检测:原理与源码解析》 《YOLOv3目标检测:网络模型改进方法》 敬请关注并选择学习!

sql语句 异常 Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your

在我们开发的工程中,有时候会报 [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ------ 这种异常 不用多想,肯定是我们的sql语句出现问题,下面...

浪潮集团 往年的软件类 笔试题 比较详细的哦

浪潮集团 往年的软件类 笔试题 比较详细的哦

2019 AI开发者大会

2019 AI开发者大会(AI ProCon 2019)是由中国IT社区CSDN主办的AI技术与产业年度盛会。多年经验淬炼,如今蓄势待发:2019年9月6-7日,大会将有近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者齐聚北京,进行技术解读和产业论证。我们不空谈口号,只谈技术,诚挚邀请AI业内人士一起共铸人工智能新篇章!

I2c串口通信实现加速度传感器和FPGA的交流

此代码能实现加速度传感器与FPGA之间的交流,从而测出运动物体的加速度。

Python可以这样学(第一季:Python内功修炼)

董付国系列教材《Python程序设计基础》、《Python程序设计(第2版)》、《Python可以这样学》配套视频,讲解Python 3.5.x和3.6.x语法、内置对象用法、选择与循环以及函数设计与使用、lambda表达式用法、字符串与正则表达式应用、面向对象编程、文本文件与二进制文件操作、目录操作与系统运维、异常处理结构。

微信公众平台开发入门

本套课程的设计完全是为初学者量身打造,课程内容由浅入深,课程讲解通俗易懂,代码实现简洁清晰。通过本课程的学习,学员能够入门微信公众平台开发,能够胜任企业级的订阅号、服务号、企业号的应用开发工作。 通过本课程的学习,学员能够对微信公众平台有一个清晰的、系统性的认识。例如,公众号是什么,它有什么特点,它能做什么,怎么开发公众号。 其次,通过本课程的学习,学员能够掌握微信公众平台开发的方法、技术和应用实现。例如,开发者文档怎么看,开发环境怎么搭建,基本的消息交互如何实现,常用的方法技巧有哪些,真实应用怎么开发。

机器学习初学者必会的案例精讲

通过六个实际的编码项目,带领同学入门人工智能。这些项目涉及机器学习(回归,分类,聚类),深度学习(神经网络),底层数学算法,Weka数据挖掘,利用Git开源项目实战等。

eclipseme 1.7.9

eclipse 出了新的eclipseme插件,官方有下载,但特慢,我都下了大半天(可能自己网速差)。有急需要的朋友可以下哦。。。

Spring Boot -01- 快速入门篇(图文教程)

Spring Boot -01- 快速入门篇 今天开始不断整理 Spring Boot 2.0 版本学习笔记,大家可以在博客看到我的笔记,然后大家想看视频课程也可以到【慕课网】手机 app,去找【Spring Boot 2.0 深度实践】的课程,令人开心的是,课程完全免费! 什么是 Spring Boot? Spring Boot 是由 Pivotal 团队提供的全新框架。Spring Boot...

HoloLens2开发入门教程

本课程为HoloLens2开发入门教程,讲解部署开发环境,安装VS2019,Unity版本,Windows SDK,创建Unity项目,讲解如何使用MRTK,编辑器模拟手势交互,打包VS工程并编译部署应用到HoloLens上等。

最简单的倍频verilog程序(Quartus II)

一个工程文件 几段简单的代码 一个输入一个输出(50Mhz倍频到100Mhz)

计算机组成原理实验教程

西北工业大学计算机组成原理实验课唐都仪器实验帮助,同实验指导书。分为运算器,存储器,控制器,模型计算机,输入输出系统5个章节

4小时玩转微信小程序——基础入门与微信支付实战

这是一个门针对零基础学员学习微信小程序开发的视频教学课程。课程采用腾讯官方文档作为教程的唯一技术资料来源。杜绝网络上质量良莠不齐的资料给学员学习带来的障碍。 视频课程按照开发工具的下载、安装、使用、程序结构、视图层、逻辑层、微信小程序等几个部分组织课程,详细讲解整个小程序的开发过程

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

基于RSA通信密钥分发的加密通信

基于RSA通信密钥分发的加密通信,采用pycrypto中的RSA、AES模块实现

不同变质程度煤尘爆炸残留气体特征研究

为分析不同变质程度煤尘爆炸残留气体成分的特征规律,利用水平管道煤尘爆炸实验装置进行了贫瘦煤、肥煤、气煤、长焰煤4种不同变质程度的煤尘爆炸实验,研究了不同变质程度煤尘爆炸后气体残留物含量的差异,并对气体

设计模式(JAVA语言实现)--20种设计模式附带源码

课程亮点: 课程培训详细的笔记以及实例代码,让学员开始掌握设计模式知识点 课程内容: 工厂模式、桥接模式、组合模式、装饰器模式、外观模式、享元模式、原型模型、代理模式、单例模式、适配器模式 策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式 课程特色: 笔记设计模式,用笔记串连所有知识点,让学员从一点一滴积累,学习过程无压力 笔记标题采用关键字标识法,帮助学员更加容易记住知识点 笔记以超链接形式让知识点关联起来,形式知识体系 采用先概念后实例再应用方式,知识点深入浅出 提供授课内容笔记作为课后复习以及工作备查工具 部分图表(电脑PC端查看):

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

软件测试2小时入门

本课程内容系统、全面、简洁、通俗易懂,通过2个多小时的介绍,让大家对软件测试有个系统的理解和认识,具备基本的软件测试理论基础。 主要内容分为5个部分: 1 软件测试概述,了解测试是什么、测试的对象、原则、流程、方法、模型;&nbsp; 2.常用的黑盒测试用例设计方法及示例演示;&nbsp; 3 常用白盒测试用例设计方法及示例演示;&nbsp; 4.自动化测试优缺点、使用范围及示例‘;&nbsp; 5.测试经验谈。

几率大的Redis面试题(含答案)

本文的面试题如下: Redis 持久化机制 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 热点数据和冷数据是什么 Memcache与Redis的区别都有哪些? 单线程的redis为什么这么快 redis的数据类型,以及每种数据类型的使用场景,Redis 内部结构 redis的过期策略以及内存淘汰机制【~】 Redis 为什么是单线程的,优点 如何解决redis的并发竞争key问题 Red...

手把手实现Java图书管理系统(附源码)

【超实用课程内容】 本课程演示的是一套基于Java的SSM框架实现的图书管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群。详细介绍了图书管理系统的实现,包括:环境搭建、系统业务、技术实现、项目运行、功能演示、系统扩展等,以通俗易懂的方式,手把手的带你从零开始运行本套图书管理系统,该项目附带全部源码可作为毕设使用。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/27513 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程2年有效观看时长,大家可以抓紧时间学习后一起讨论哦~ 【学员专享增值服务】 源码开放 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化

jsp+servlet入门项目实例

jsp+servlet实现班级信息管理项目

winfrom中嵌套html,跟html的交互

winfrom中嵌套html,跟html的交互,源码就在里面一看就懂,很简单

Java面试题大全(2020版)

发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。 JRE:Java Runtime Environ...

python实现数字水印添加与提取及鲁棒性测试(GUI,基于DCT,含测试图片)

由python写的GUI,可以实现数字水印的添加与提取,提取是根据添加系数的相关性,实现了盲提取。含有两种攻击测试方法(高斯低通滤波、高斯白噪声)。基于python2.7,watermark.py为主

Xshell6完美破解版,亲测可用

Xshell6破解版,亲测可用,分享给大家。直接解压即可使用

你连存活到JDK8中著名的Bug都不知道,我怎么敢给你加薪

CopyOnWriteArrayList.java和ArrayList.java,这2个类的构造函数,注释中有一句话 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public ArrayList(Collection&lt;? ...

相关热词 c#分级显示数据 c# 不区分大小写替换 c#中调用就java c#正则表达式 验证小数 c# vscode 配置 c#三维数组能存多少数据 c# 新建excel c#多个文本框 c#怎么创建tcp通讯 c# mvc 电子病例
立即提问