java 怎样将视频编码为mpeg4的mp4文件转成编码为h264

前端是用H5写得video标签 只能正常播放h264编码的MP4 mpeg4编码的MP4只有声音没有画面 百度了一下都是工具转的 用JAVA该怎么转

3个回答

先手动通过命令行转换,转换成功后 再集合到java 里面
转换命令 可以参考 : https://www.cnblogs.com/wainiwann/p/4128154.html

sessionsong
sessinsong en 是的,java里面调用命令都是这么用的 还有一个process
大约 2 年之前 回复
qq_33206115
托妞光环 回复qq_33206115: 不过是通过ProcessBuilder类来操作工具 其实就是操作进程
大约 2 年之前 回复
qq_33206115
托妞光环 我后来就是用这种方法的。。。
大约 2 年之前 回复

使用fffmpeg命令行工具,参数自己查一下

qq_33206115
托妞光环 试过了 就是不知道参数
大约 2 年之前 回复

楼主,请问您现在实现了吗?我也遇到这个问题,比较着急,想问问您。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
支持MPEG4的DVD机,能够播放什么格式的视频
家里的DVD机支持MPEG4的编码格式 1.我现在将多个视频都转成了MP4(用的是MPEG4的编码格式),现在想将这多个MP4通过nero刻录成**数据DVD**,不知道数据光盘能不能在DVD机上播放。 2.或者将视频转成avi格式(同样选用MPEG4的编码格式),然后刻录成**数据DVD**,这样不知道能不能播放。 3.或者都不行的话,请问用什么方法最好? 我刻录的时候选的是数据DVD光盘,不是选择的视频光盘 网上都说DVD支持MPEG的视频文件,但是MPEG只是编码格式,跟文件后缀应该没什么太大关系,所以上面MP4和AVI转码的时候都选的是MPEG4的编码格式。还有说转成VOB的,VOB是MPEG2编码格式的,但是VOB占的空间太大。 如果有真正懂行的,请帮忙解答下上面三个问题,多谢了 顺便再问下 那种一张碟上有好多个电影的光盘,里面视频是什么格式的
关于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后播放正常,求原因啊!!!!!!
android上使用mp4v2合成h264+aac,写入音频数据后打不开视频文件
我在android上写了一个视频录制程序,录制时把视频、音频数据放在两个队列里,并开启两个线程去读取数据,写到sd卡中。现在的问题是,如果只写入h264,则视频播放正常(使用videoView,虽然没有声音);但如果同时写入了音频数据,则打不开视频文件。请问可能是什么原因才会造成这种结果呢? 打包h264+aac的代码如下: ``` //写视频数据 BOOL WriteVideoData(RECORD_PARAM *struRecordParam, char* pVideoData, int nSize, int iFrameRate, int iType, long lTimestemp){ BOOL bResult = FALSE; if(struRecordParam==NULL || struRecordParam->mp4FileHandle<=0 || struRecordParam->isOpen==FALSE) return FALSE; if (nSize==0) {//写空帧 if (!MP4WriteSample(struRecordParam->mp4FileHandle, struRecordParam->videoId, (const uint8_t*)pVideoData, nSize, lTimestemp, 0, true)) { return FALSE; } return TRUE; } if ((pVideoData[4]&0x1f) == 7) { NSLOGE("writeVideoFrame: if 7"); if (struRecordParam->hasSPS) { return FALSE; } NSLOGE("to MP4AddH264VideoTrack "); struRecordParam->videoId = MP4AddH264VideoTrack(struRecordParam->mp4FileHandle, struRecordParam->nVideoTimeScale, (struRecordParam->nVideoTimeScale/struRecordParam->nVideoFrameRate), struRecordParam->nVideoWidth, struRecordParam->nVideoHeight, pVideoData[5], pVideoData[6], pVideoData[7], 3); if (struRecordParam->videoId == MP4_INVALID_TRACK_ID) { return FALSE; } MP4SetVideoProfileLevel(struRecordParam->mp4FileHandle, 0x7F); MP4AddH264SequenceParameterSet(struRecordParam->mp4FileHandle, struRecordParam->videoId, (const uint8_t*)(pVideoData+4), nSize-4); struRecordParam->hasSPS = TRUE; NSLOGE("MP4AddH264VideoTrack ok"); } else if ((pVideoData[4]&0x1f) == 8) { NSLOGE("writeVideoFrame: if 8"); if (struRecordParam->hasPPS) { return FALSE; } MP4AddH264PictureParameterSet(struRecordParam->mp4FileHandle, struRecordParam->videoId, (const uint8_t*)(pVideoData+4), nSize-4); struRecordParam->hasPPS = TRUE; } else { NSLOGE("writeVideoFrame: if else"); pVideoData[0] = (nSize-4) >> 24; pVideoData[1] = (nSize-4) >> 16; pVideoData[2] = (nSize-4) >> 8; pVideoData[3] = (nSize-4) & 0xff; if (!MP4WriteSample(struRecordParam->mp4FileHandle, struRecordParam->videoId, (const uint8_t*)(pVideoData), nSize, MP4_INVALID_DURATION, 0, true)) { return FALSE; } } return TRUE; } //写音频数据 BOOL WriteAudioData(RECORD_PARAM *struRecordParam, char* pAudioData, int nSize, long lTimestemp){ if(struRecordParam==NULL || struRecordParam->mp4FileHandle<=0 || struRecordParam->isOpen==FALSE) return FALSE; BOOL bResult = FALSE; if (struRecordParam->audioId == MP4_INVALID_TRACK_ID) { //添加aac音频 NSLOGE("MP4AddAudioTrack"); struRecordParam->audioId = MP4AddAudioTrack(struRecordParam->mp4FileHandle, 48000, MP4_INVALID_DURATION, MP4_MPEG4_AUDIO_TYPE); if (struRecordParam->audioId == MP4_INVALID_TRACK_ID) { return bResult; } NSLOGE("MP4SetAudioProfileLevel"); MP4SetAudioProfileLevel(struRecordParam->mp4FileHandle, 0x2); NSLOGE("MP4SetTrackESConfiguration"); MP4SetTrackESConfiguration(struRecordParam->mp4FileHandle, struRecordParam->audioId, pAudioData, nSize); } if (struRecordParam->audioId != MP4_INVALID_TRACK_ID) { if (!MP4WriteSample(struRecordParam->mp4FileHandle, struRecordParam->audioId,(const uint8_t*)(pAudioData+7), nSize-7, lTimestemp, 0, true)) { NSLOGE("MP4WriteSample audio failed"); return FALSE; } NSLOGE("MP4WriteSample audio failed"); } bResult = TRUE; return bResult; } ```
onvif视频编码改变拉流故障
最近在搞onvif,视频拉流已经可以实现,但是在视频参数修改的时候,发现在视频的编码参数改变的时候例如 从H264改变为MPEG4的时候,在NVR的界面上便不能拉流了。此时使用VLC拉改了编码的流必须重新拉取才可以。 想问下哪位知道在onvif设置视频编码改变的时候如何自动实现再次拉流,
onvif设置视频参数改变编码后web拉不出流
使用onvif设置视频参数的时候在web端修改了视频编码,则在web预览就不能正常拉流。必须重启服务才可以拉流 。 例如: 1.开始设置视频参数编码为 MPEG4,则在web上预览没问题, 2.通过web设置编码为H264,则在服务启动之后web上便不能预览出画面
关于Java视频压缩的问题
** 我用的是视频转码方式进行压缩** AudioAttributes audio = new AudioAttributes(); audio.setCodec("libmp3lame"); audio.setBitRate(new Integer(100000)); audio.setChannels(new Integer(1)); audio.setSamplingRate(new Integer(22050)); // 视频设置 VideoAttributes video = new VideoAttributes(); video.setCodec("mpeg4"); // 视频编码格式mpeg4 video.setBitRate(new Integer(600000)); video.setFrameRate(new Integer(15)); // 视频帧率15 EncodingAttributes attrs = new EncodingAttributes(); // 视频封装类型 attrs.setFormat("mp4"); attrs.setVideoAttributes(video); Encoder encoder = new Encoder(); encoder.encode(source, target, attrs); 这个压缩出现的其它问题先不说(MOV格式视频貌似就无法压缩),但是让人觉得最坑爹地方还是MP4格式的视频压缩完成后上传到服务器上竟然没法播放....我丢!...
opencv提取mpeg4文件的帧图像失败。
opencv提取mpeg4文件的帧图像失败。哪位大神知道怎么用opencv提取mpeg4文件的帧吗?
关于faad解码aac(Raw)问题
使用faac进行的编码,设置如下: //设置版本,录制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 configuretion*/ 麻烦问一下,因为要合成MP4要求暴风可以播放,所以我在使用faac进行编码的时候是用Raw格式进行的(ADTS暴风不认),Raw格式编码后还能用faad解码吗?能的话大概怎么弄啊
ffmpeg切割视频出错是为什么?
我想把一个1024x768的MP4视频切掉左边的一部分 使用ffmpeg命令 ffmpeg -i aaaa.mp4 -vf crop=849:768:175:0 output1.mp4 输出为 FFmpeg version SVN-r25512, Copyright (c) 2000-2010 the FFmpeg developers built on Oct 18 2010 04:06:45 with gcc 4.4.2 configuration: --enable-gpl --enable-version3 --enable-libgsm --enable-pthread s --enable-libvorbis --enable-libtheora --enable-libspeex --enable-libmp3lame -- enable-libopenjpeg --enable-libschroedinger --enable-libopencore_amrwb --enable- libopencore_amrnb --enable-libvpx --arch=x86 --enable-runtime-cpudetect --enable -libxvid --enable-libx264 --extra-libs='-lx264 -lpthread' --enable-librtmp --ext ra-libs='-lrtmp -lpolarssl -lws2_32 -lwinmm' --target-os=mingw32 --enable-avisyn th --cross-prefix=i686-mingw32- --cc='ccache i686-mingw32-gcc' --enable-memalign -hack libavutil 50.32. 3 / 50.32. 3 libavcore 0. 9. 1 / 0. 9. 1 libavcodec 52.92. 0 / 52.92. 0 libavformat 52.83. 0 / 52.83. 0 libavdevice 52. 2. 2 / 52. 2. 2 libavfilter 1.52. 0 / 1.52. 0 libswscale 0.12. 0 / 0.12. 0 [mov,mp4,m4a,3gp,3g2,mj2 @ 0197c300] max_analyze_duration reached Seems stream 0 codec frame rate differs from container frame rate: 180000.00 (18 0000/1) -> 90000.00 (180000/2) Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'aaaa.mp4': Metadata: major_brand : mp42 minor_version : 0 compatible_brands: mp42isom Duration: 00:00:57.57, start: 0.000000, bitrate: 622 kb/s Stream #0.0(eng): Video: h264, yuv420p, 1024x768, 466 kb/s, 14.28 fps, 90k t br, 90k tbn, 180k tbc Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, s16, 156 kb/s [buffer @ 018b2ce0] w:1024 h:768 pixfmt:yuv420p [mpeg4 @ 018b2880] removing common factors from framerate [mpeg4 @ 018b2880] timebase not supported by mpeg 4 standard Output #0, mp4, to 'output1.mp4': Stream #0.0(eng): Video: mpeg4, yuv420p, 340x768, q=2-31, 200 kb/s, 90k tbn, 90k tbc Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, s16, 64 kb/s Stream mapping: Stream #0.0 -> #0.0 Stream #0.1 -> #0.1 Error while opening encoder for output stream #0.0 - maybe incorrect parameters such as bit_rate, rate, width or height 错误原因是什么呢?
android采用ffmpeg合成mp4不显示图像
commands[0] = "ffmpeg"; commands[1] = "-r";//桢速率(可以改,确认非标准桢率会导致音画不同步,所以只能设定为15或者29.97) commands[2] = "29.97"; commands[3] = "-f";//截取图片 格式 commands[4] = "image2"; commands[5] = "-i";//输入文件名 commands[6] = imageUrl; commands[7] = "-i"; commands[8] = musicUrl; commands[9] = "-pix_fmt";//查看支持图片格式 commands[10] = "yuvj420p"; commands[11] = "-t"; commands[12] = "930";//置纪录时间 hh:mm:ss[.xxx]格式的记录时间也支持 commands[13] = "-vcodec";//使用mpeg4压缩 commands[14] = "mpeg4"; commands[15] = outputUrls; ``` ``` 这样生成的mp4文件 在qq上进度条不走 在我项目使用的视频播放器 有时候会无法出现图像 黑屏 求大神解答
大视频为什么在安卓APP上播放一会就卡死
1.我在java中上传视频文件,大概150M左右,上传成功后在项目web端网页上访问 是可以流畅播放的。 2.但是在项目APP端播放就出现问题,播放了几秒钟后就卡死了。 3.然后我测试小视频15M,web端和app端都能正常播放,这个是什么原因呢? 找不到原因的我,只能在视频上传的时候把视频做压缩处理,进行压缩处理后,APP端和web端都能正常播放,但是做压缩处理的过程就很慢,导致接口响应过长超时。大神们改怎么处理。我 的压缩代码: ``` private void videoCompressToMP4(String sourcePath,String targetPath){ Log.info("url=="+sourcePath+",,,"+targetPath); File source = new File(sourcePath); File target = new File(targetPath); try { log.info("压缩转换开始:"); AudioAttributes audio= new AudioAttributes(); audio.setCodec("libmp3lame"); audio.setBitRate(new Integer(56000)); audio.setChannels(new Integer(1)); audio.setSamplingRate(new Integer(22050)); VideoAttributes video=new VideoAttributes(); video.setCodec("mpeg4"); video.setBitRate(new Integer(800000)); video.setFrameRate(new Integer(15)); video.setSize(new VideoSize(400, 300)); EncodingAttributes attr=new EncodingAttributes(); attr.setFormat("mp4"); attr.setAudioAttributes(audio); attr.setVideoAttributes(video); Encoder encoder=new Encoder(); encoder.encode(source, target, attr); log.info("压缩转换成功--结束,路径:"+targetPath); } catch (Exception e) { e.printStackTrace(); } } ``` 但是这个效率很低感觉,150M的得耗时60秒左右,怎么优化。 或者解决根本问题,为什么大视频在APP端播放几秒钟就不能播放啊,小视频ok.
关于网络摄像机主码流和子码流的rtsp地址格式!
我想在客户端播放网络摄像机监控视频的时候手动选择主码流和字码流, 可是通过查资料得知不同网络摄像机品牌的RTSP地址格式不同. 例如,请求海康摄像机通道1的主码流,Url如下 主码流: rtsp://admin:12345@192.0.0.64:554/h264/ch1/main/av_stream 子码流: rtsp://admin:12345@192.0.0.64/mpeg4/ch1/sub/av_stream 大华的则为: 例如,请求某设备的通道2的辅码流,Url如下 rtsp://admin:admin@10.12.4.84:554/cam/realmonitor?channel=2&subtype=1 那有没有一种兼容式的格式呢,不用考虑不同厂家都可以用一种格式来表示字码流和主码流呢?
为什么用libfaac编码的aac音频文件用播放器播放时速度却比正常速度快?
我采集原始的PCM帧数据(16KHZ采样)用libfaac库编码成AAC帧(ADTS格式) 然后写成.aac文件,当我用播放器播放时发现声音比正常速度要快,移植找不到原因,望大神指导,万分感谢! 一些基本参数如下: PCM : 16000HZ 160采样为1帧 ``` //使用 faac 库 aac_config.EncHandle = faacEncOpen(aac_config.SampleRate, \ aac_config.Channels, \ &aac_config.InputSamples, \ &aac_config.MaxOutputBytes); if(aac_config.EncHandle == NULL) { DEBUG_LOG("failed to call faacEncOpen()\n"); return NULL; } aac_config.PCMBuffer_size = aac_config.InputSamples * (aac_config.PCMBitSize / 8);//PCM_BUF_SIZE; aac_config.PCMBuffer = (unsigned char*)malloc(aac_config.PCMBuffer_size * sizeof(unsigned char)); aac_config.AACBuffer = (unsigned char*)malloc(aac_config.MaxOutputBytes * sizeof(unsigned char)); memset(aac_config.PCMBuffer, 0, aac_config.PCMBuffer_size); memset(aac_config.AACBuffer, 0, aac_config.MaxOutputBytes); //获取当前配置参数 faacEncConfigurationPtr pConfiguration = faacEncGetCurrentConfiguration(aac_config.EncHandle); //调整配置参数 #if 1 pConfiguration->inputFormat = FAAC_INPUT_16BIT; pConfiguration->outputFormat = 1; /*0 - raw; 1 - ADTS*/ pConfiguration->bitRate = PCM_SAMPLE_RATE; //库内部默认为64000 pConfiguration->useTns = 0; pConfiguration->allowMidside = 1; pConfiguration->shortctl = SHORTCTL_NORMAL; pConfiguration->aacObjectType = LOW; pConfiguration->mpegVersion = MPEG4;//MPEG2 //pConfiguration->useLfe = 1; #endif //重新设置回去 ret = faacEncSetConfiguration(aac_config.EncHandle,pConfiguration); if(ret != 1) { ERROR_LOG("failed to call faacEncSetConfiguration()\n"); return NULL; } ```
mpeg4有哪几种扫描方式?,
有大神懂得没,mpeg4有几种扫描方式,分别是哪几种?在什么时候用什么扫描方式?
华为P9 使用MediaMuxer合成音频视频Failed to stop the muxer报错
大神们帮忙看看呀!!! E/Mp4MetaAtom: Error: Leaf atom size exceeds bounds. E/Mp4MetaAtom: Error, failed to load atom. E/Mp4Metadata: Error, failed to load .mp4 file. E/MPEG4Writer: timestampUs 10844166 < lastTimestampUs 10977633 for Video track E/OMXNodeInstance: getParameter(1036:IMG.TOPAZ.Encoder, ParamConsumerUsageBits(0x6f800004)) ERROR: UnsupportedIndex(0x8000101a) E/imgvideo-omx: IMG_OMD_GetParameter FAILED: Unknown ColorFormat E/OMXNodeInstance: getParameter(1038:IMG.MSVDX.Decoder.AVC, ??(0x7f000008)) ERROR: UnsupportedSetting(0x80001019) W/System.err: java.lang.IllegalStateException: Failed to stop the muxer W/System.err: at android.media.MediaMuxer.nativeStop(Native Method) W/System.err: at android.media.MediaMuxer.stop(MediaMuxer.java:239) W/System.err: at cn.thetaplusvideo.export.codec.VideoAudioMuxer.stop(VideoAudioMuxer.java:128) 03-06 08:49:03.064 680-20187/? E/IMGTOPAZ: Error in OTE_Base_GetParameter at line 1326 03-06 08:49:03.065 680-20180/? E/IMGTOPAZ: Error in OTE_Base_GetParameter at line 1326 03-06 08:49:03.065 680-20179/? E/IMGTOPAZ: Error in OTE_Base_GetParameter at line 1326 03-06 08:49:03.066 680-8601/? E/IMGTOPAZ: Error in OTE_Base_GetParameter at line 1326 03-06 08:49:03.066 680-20181/? E/IMGTOPAZ: Error in OTE_Base_GetParameter at line 1326 03-06 08:49:03.066 680-20183/? E/IMGTOPAZ: Error in OTE_Base_GetParameter at line 1326 03-06 08:49:03.067 680-20180/? E/IMGTOPAZ: Error in OTE_Base_GetParameter at line 1326
vlc播放rtsp流的问题,服务器ffserver
我使ffserver任务服务器,vlc当作客户端,播放rtsp流时,没有画面,vlc提示没有数据,但是抓包结果显示是有数据的。 **抓包记录:** OPTIONS rtsp://10.0.5.182:5454/h264.avi RTSP/1.0 CSeq: 2 User-Agent: LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22) RTSP/1.0 200 OK CSeq: 2 Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE DESCRIBE rtsp://10.0.5.182:5454/h264.avi RTSP/1.0 CSeq: 3 User-Agent: LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22) Accept: application/sdp RTSP/1.0 200 OK CSeq: 3 Date: Sat, 08 Oct 2016 07:39:50 GMT Content-Base: rtsp://10.0.5.182:5454/h264.avi/ Content-Type: application/sdp Content-Length: 585 v=0 o=- 0 0 IN IP4 127.0.0.1 s=No Title c=IN IP4 0.0.0.0 t=0 0 a=tool:libavformat 57.41.100 m=audio 0 RTP/AVP 96 b=AS:19 a=rtpmap:96 MPEG4-GENERIC/8000/2 a=fmtp:96 profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3; config=1590 a=control:streamid=0 m=video 0 RTP/AVP 97 b=AS:62 a=rtpmap:97 H264/90000 a=fmtp:97 packetization-mode=1; sprop-parameter-sets=J01ADKkYYELxCA==,KM4JiA==; profile-level-id=4D400C a=control:streamid=1 m=application 0 RTP/AVP 3 b=AS:23 a=control:streamid=2 m=application 0 RTP/AVP 3 b=AS:3 a=control:streamid=3 SETUP rtsp://10.0.5.182:5454/h264.avi/streamid=0 RTSP/1.0 CSeq: 4 User-Agent: LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22) Transport: RTP/AVP;unicast;client_port=50140-50141 RTSP/1.0 200 OK CSeq: 4 Date: Sat, 08 Oct 2016 07:39:50 GMT Session: 3bf7c45bc1897a77 Transport: RTP/AVP/UDP;unicast;client_port=50140-50141;server_port=44545-44546 SETUP rtsp://10.0.5.182:5454/h264.avi/streamid=1 RTSP/1.0 CSeq: 5 User-Agent: LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22) Transport: RTP/AVP;unicast;client_port=50142-50143 Session: 3bf7c45bc1897a77 RTSP/1.0 200 OK CSeq: 5 Date: Sat, 08 Oct 2016 07:39:50 GMT Session: 3bf7c45bc1897a77 Transport: RTP/AVP/UDP;unicast;client_port=50142-50143;server_port=54851-54852 PLAY rtsp://10.0.5.182:5454/h264.avi/ RTSP/1.0 CSeq: 6 User-Agent: LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22) Session: 3bf7c45bc1897a77 Range: npt=0.000- RTSP/1.0 200 OK CSeq: 6 Date: Sat, 08 Oct 2016 07:39:50 GMT Session: 3bf7c45bc1897a77 **vlc日志** live555 warning: no data received in 10s. Switching to TCP live555 error: no data received in 10s, aborting PS:抓包观察,是有rtp封包的。
http请求:pad和浏览器之间有什么区别吗?
``` public Object downFile(String filepath, HttpServletRequest request, HttpServletResponse response) { response.addHeader("Access-Control-Allow-Origin", "*"); JsonResult jsonResult = new JsonResult(""); OutputStream stream = null; FileInputStream inputStream = null; filepath = request.getParameter("filepath"); System.out.println("filepPath "+filepath); try { FileInfoSearchBeanVO fileInfo = new FileInfoSearchBeanVO(); fileInfo.setFile_url(filepath); filepath = fileinfoService.getFilePath(fileInfo); File file = new File(filepath); if(file.exists()){ inputStream = new FileInputStream(file); byte[] data = new byte[(int) file.length()]; inputStream.read(data); inputStream.close(); if(filepath.endsWith("jpg") || filepath.endsWith("JPG")){ response.setContentType("image/jpg"); } if(filepath.endsWith("mp4") || filepath.endsWith("MP4")){ response.setContentType("video/mpeg4"); } stream = response.getOutputStream(); stream.write(data); stream.flush(); stream.close(); }else{ jsonResult.setSuccess(false); jsonResult.setReturnObj("请求的文件不存在"); } } catch (FileNotFoundException e) { e.printStackTrace(); log.error(e.getMessage()); jsonResult.setSuccess(false); jsonResult.setReturnObj("下载失败"); } catch (Exception e) { e.printStackTrace(); log.error(e.getMessage()); jsonResult.setSuccess(false); jsonResult.setReturnObj("下载失败"); } finally { try { if (null != stream) { stream.close(); } if (null != inputStream) { inputStream.close(); } } catch (Exception e) { e.printStackTrace(); log.error(e.getMessage()); } } return jsonResult.getResultMap(); } ``` HTTP请求:在pc上面访问没有问题,在pad上面范围图片没有问题,但是视频,报 org.apache.catalina.connector.ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:407) at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:371) at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:432) at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:420) at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:91) at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:84) at com.ifec.blueair.file.controller.FileController.downFile(FileController.java:125) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:177) at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:446) at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:434) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) at javax.servlet.http.HttpServlet.service(HttpServlet.java:624) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) Caused by: java.net.SocketException: Connection reset by peer: socket write error at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113) at java.net.SocketOutputStream.write(SocketOutputStream.java:159) at org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:215) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:480) at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:366) at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:240) at org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:119) at org.apache.coyote.http11.AbstractOutputBuffer.doWrite(AbstractOutputBuffer.java:192) at org.apache.coyote.Response.doWrite(Response.java:499) at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:402) ... 44 more
做一个服务器模仿rtsp的应答,但是应答的内容不会填
如下面代码vlc发了DESCRIBE命令过来,我返回给它的数据怎么来: OPTIONS rtsp://219.219.218.224:554/m RTSP/1.0 CSeq: 1 User-Agent: VLC media player (LIVE555 Streaming Media v2009.07.09) RTSP/1.0 200 OK Server: vlc 1.0.1 Content-Length: 0 Cseq: 1 Public: DESCRIBE,SETUP,TEARDOWN,PLAY,PAUSE,GET_PARAMETER DESCRIBE rtsp://219.219.218.224:554/m RTSP/1.0 CSeq: 2 Accept: application/sdp User-Agent: VLC media player (LIVE555 Streaming Media v2009.07.09) RTSP/1.0 200 OK Content-type: application/sdp Server: VLC Server Content-Length: 544 CSeq: 2 Cache-Control: no-cache v=0 //协议版本 o=- 78967746000 3 IN IP4 219.219.218.224 //拥有者,即会话的创建者 c=IN IP4 0.0.0.0 //连接信息,此处表示本机 t=0 0 //如果stop-time设置为0,则会话没有时间限制。如果start-time也设置为0,则会话被认为是永久的. a=tool:vlc 1.0.1 //创建任务描述的工具的名称及版本号 a=range:npt=0-7.741 //视频的正常播放范围 m=audio 0 RTP/AVP 96 //音频流使用的协议 m=<media> <port>/<number of ports> <proto> <fmt> … a=rtpmap:96 mpeg4-generic/32000 //a=rtpmap:<payload type> <encoding name>/<clock rate> [/<encoding parameters>] a=fmtp:96 streamtype=5; profile-level-id=15; mode=AAC-hbr; config=1290; SizeLength=13;IndexLength=3; IndexDeltaLength=3; Profile=1; //a=fmtp:<format> <format specific parameters> a=control:rtsp://219.219.218.224:554/m/trackID=0 m=video 0 RTP/AVP 97 //视频流使用的协议 a=rtpmap:97 MP4V-ES/90000 a=fmtp:97 profile-level-id=3; config=000001b022000001b50900000100000001200084456a285020f0a300; # a=control:rtsp://219.219.218.224:554/m/trackID=1
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
字节跳动视频编解码面经
三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时想着能进去就不错了,管他哪个岗呢,就同意了面试...
开源一个功能完整的SpringBoot项目框架
福利来了,给大家带来一个福利。 最近想了解一下有关Spring Boot的开源项目,看了很多开源的框架,大多是一些demo或者是一个未成形的项目,基本功能都不完整,尤其是用户权限和菜单方面几乎没有完整的。 想到我之前做的框架,里面通用模块有:用户模块,权限模块,菜单模块,功能模块也齐全了,每一个功能都是完整的。 打算把这个框架分享出来,供大家使用和学习。 为什么用框架? 框架可以学习整体...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
Spring Boot2 系列教程(十七)SpringBoot 整合 Swagger2
前后端分离后,维护接口文档基本上是必不可少的工作。 一个理想的状态是设计好后,接口文档发给前端和后端,大伙按照既定的规则各自开发,开发好了对接上了就可以上线了。当然这是一种非常理想的状态,实际开发中却很少遇到这样的情况,接口总是在不断的变化之中,有变化就要去维护,做过的小伙伴都知道这件事有多么头大!还好,有一些工具可以减轻我们的工作量,Swagger2 就是其中之一,至于其他类似功能但是却收费的软...
Python 基础(一):入门必备知识
目录1 标识符2 关键字3 引号4 编码5 输入输出6 缩进7 多行8 注释9 数据类型10 运算符10.1 常用运算符10.2 运算符优先级 1 标识符 标识符是编程时使用的名字,用于给变量、函数、语句块等命名,Python 中标识符由字母、数字、下划线组成,不能以数字开头,区分大小写。 以下划线开头的标识符有特殊含义,单下划线开头的标识符,如:_xxx ,表示不能直接访问的类属性,需通过类提供
天天学JAVA-JAVA基础(6)
如果觉得我写的还行,请关注我的博客并且点个赞哟。本文主要介绍JAVA 中最常使用字符串常量String相关知识。 1.String简介 2.创建字符串对象两种方式的区别 3.String常用的方法 4.String的不可变性 5.一道阿里面试题,你会做吗? 1.String简介 1.1String源码 首先看一段String源码,String主要实现了Serializable、Compar...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
2020 网络课 智慧树自动刷课代码,自动跳转,自动答题并关闭弹窗,自动1.5倍速静音
刷课一时爽,一直刷课一直爽! 终于让我找到了这个黑客代码了,教程开始: 只限谷歌浏览器和火狐浏览器使用,如果第一次失败,请重新试一下次 将下面代码复制后,进入浏览器按F12键,先点击console 然后Ctrl+v复制代码 最后按回车键即可 var ti = $("body"); var video = $(".catalogue_ul1 li[id*=video-]"); var i = 1;...
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
致 Python 初学者
文章目录1. 前言2. 明确学习目标,不急于求成,不好高骛远3. 在开始学习 Python 之前,你需要做一些准备2.1 Python 的各种发行版2.2 安装 Python2.3 选择一款趁手的开发工具3. 习惯使用IDLE,这是学习python最好的方式4. 严格遵从编码规范5. 代码的运行、调试5. 模块管理5.1 同时安装了py2/py35.2 使用Anaconda,或者通过IDE来安装模
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
羞,Java 字符串拼接竟然有这么多姿势
二哥,我今年大二,看你分享的《阿里巴巴 Java 开发手册》上有一段内容说:“循环体内,拼接字符串最好使用 StringBuilder 的 append 方法,而不是 + 号操作符。”到底为什么啊,我平常一直就用的‘+’号操作符啊!二哥有空的时候能否写一篇文章分析一下呢? 就在昨天,一位叫小菜的读者微信我说了上面这段话。 我当时看到这条微信的第一感觉是:小菜你也太菜了吧,这都不知道为啥啊!我估...
写1行代码影响1000000000人,这是个什么项目?
不带钱不带卡,只带手机出门就能畅行无阻,这已是生活的常态。益普索发布的《2019第一季度第三方移动支付用户研究》报告显示,移动支付在手机网民中的渗透率高达95.1%,截至今年1月,支付宝全球用户数已经突破10亿。你或许每天都会打开支付宝,付款购物、领取权益、享受服务……但你或许不知道的是,在这个方便、快捷、智能化的APP背后,有一群年轻的技术人,用智慧和创新让它每天都变得更“聪明”一点。 ...
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
一点一滴记录 Java 8 stream 的使用
日常用到,一点一滴记录,不断丰富,知识积累,塑造自身价值。欢迎收藏 String 转 List String str = 1,2,3,4; List&lt;Long&gt; lists = Arrays.stream(str.split(",")).map(s -&gt; Long.parseLong(s.trim())).collect(Collectors.toList()); Lis...
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
碎片化的时代,如何学习
今天周末,和大家聊聊学习这件事情。 在如今这个社会,我们的时间被各类 APP 撕的粉碎。 刷知乎、刷微博、刷朋友圈; 看论坛、看博客、看公号; 等等形形色色的信息和知识获取方式一个都不错过。 貌似学了很多,但是却感觉没什么用。 要解决上面这些问题,首先要分清楚一点,什么是信息,什么是知识。 那什么是信息呢? 你一切听到的、看到的,都是信息,比如微博上的明星出轨、微信中的表情大战、抖音上的段子
相关热词 c# plc s1200 c#里氏转换原则 c# 主界面 c# do loop c#存为组套 模板 c# 停掉协程 c# rgb 读取图片 c# 图片颜色调整 最快 c#多张图片上传 c#密封类与密封方法
立即提问