国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android去掉視頻聲音

這篇具有很好參考價值的文章主要介紹了Android去掉視頻聲音。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【Android】使用MediaExtractor、MediaMuxer去掉視頻文件中的音頻數(shù)據(jù)_android 去掉視頻音頻_little_fat_sheep的博客-CSDN博客

final int VIDEO=0, AUDIO=1;

extract(VIDEO);

extract(AUDIO);

void extract(int type) {
    try {
        String path = Environment.getExternalStorageDirectory().getPath();
        String filename = "";
        if (type == VIDEO)
            filename = "no_sound_" + input_path.substring(input_path.lastIndexOf("/") + 1);
        else if (type == AUDIO)
            filename = "no_video_" + input_path.substring(input_path.lastIndexOf("/") + 1);
        String output_path = path + File.separator + filename;
        MediaExtractor mediaExtractor = new MediaExtractor();
        mediaExtractor.setDataSource(input_path);
        MediaMuxer mediaMuxer = new MediaMuxer(output_path, MediaMuxer.OutputFormat.MUXER_OUTPUT_MPEG_4);
        int input_size = 0;
        int videoTrackIndex = -1;
        int count = mediaExtractor.getTrackCount(); //獲取軌道數(shù)
        for (int i = 0; i < count; i++) {
            MediaFormat format = mediaExtractor.getTrackFormat(i);
            String mime = format.getString(MediaFormat.KEY_MIME);
            Log.e(Thread.currentThread().getStackTrace()[2] + "", "track" + i + ":" + mime);
            if (type == VIDEO) {
                if (mime.startsWith("video/")) { // mp4為"video/avc"
                    input_size = format.getInteger(MediaFormat.KEY_MAX_INPUT_SIZE);
                    mediaExtractor.selectTrack(i);
                    videoTrackIndex = mediaMuxer.addTrack(format);
                    break;
                }
            } else if (type == AUDIO) {
                if (mime.startsWith("audio/")) {
                    input_size = format.getInteger(MediaFormat.KEY_MAX_INPUT_SIZE);
                    mediaExtractor.selectTrack(i);
                    videoTrackIndex = mediaMuxer.addTrack(format);
                    break;
                }
            }
        }
        mediaMuxer.start();
        int sampleSize = 0;
        MediaCodec.BufferInfo info = new MediaCodec.BufferInfo();
        ByteBuffer buffer = ByteBuffer.allocate(input_size); //也可以設(shè)置為:500*1024
        while ((sampleSize = mediaExtractor.readSampleData(buffer, 0)) > 0) {
            info.offset = 0;
            info.size = sampleSize;
            info.flags = mediaExtractor.getSampleFlags();
            info.presentationTimeUs = mediaExtractor.getSampleTime();
            mediaMuxer.writeSampleData(videoTrackIndex, buffer, info); //寫入數(shù)據(jù)
            mediaExtractor.advance(); //下一幀
        }
        mediaExtractor.release();
        mediaMuxer.stop();
        mediaMuxer.release();
        MediaScannerConnection.scanFile(MainActivity.this, new String[]{ output_path }, null, null);
        Toast.makeText(getApplicationContext(), "視頻生成完成:" + output_path, Toast.LENGTH_SHORT).show();
    } catch (Exception e) {
		//java.io.IOException: Failed to instantiate extractor.
        Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show();
        Log.e(Thread.currentThread().getStackTrace()[2] + "", e.toString());
    }
}

選擇視頻文件文章來源地址http://www.zghlxwxcb.cn/news/detail-690309.html

String input_path = "";

void chooseFile() {    
    int CHOOSE_VIDEO = 200;
    Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
    startActivityForResult(intent, CHOOSE_VIDEO);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        Uri uri = data.getData();
        String[] proj = { MediaStore.Video.Media.DATA };
        Cursor cursor = managedQuery(uri, proj, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
        cursor.moveToFirst();
        input_path = cursor.getString(column_index);
        Log.e(Thread.currentThread().getStackTrace()[2] + "", input_path);
    }
}

到了這里,關(guān)于Android去掉視頻聲音的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Android音視頻: 引入FFmpeg

    Android音視頻: 引入FFmpeg

    本文你可以了解到 本文將介紹如何將上一篇文章編譯出來的? FFmpeg so ?庫,引入到? Android ?工程中,并驗證? so ?是否可以正常使用。 一、開啟 Android 原生 C/C++ 支持 在過去,通常使用? makefile ?的方式在項目中引入? C/C++ ?代碼支持,隨著? Android Studio ?的普及, makefile ?的

    2024年02月02日
    瀏覽(27)
  • Android音視頻之協(xié)議介紹

    Android音視頻之協(xié)議介紹

    本文對音視頻的協(xié)議起源做詳細(xì)介紹,學(xué)習(xí)之后可以加深對音視頻知識的了解。 這里的音視頻不僅針對Android平臺,其他平臺也通用。 一般是指以某種格式封裝了音視頻數(shù)據(jù)的文件 常見的音頻格式:mp3、wma、avi、rm、rmvb、flv、mpg、mov、mkv等。 常見的視頻格式:rmvb、rm、wmv、

    2023年04月19日
    瀏覽(21)
  • 精選58道——Android 音視頻面試題_安卓音視頻面試題(3)

    精選58道——Android 音視頻面試題_安卓音視頻面試題(3)

    先自我介紹一下,小編浙江大學(xué)畢業(yè),去過華為、字節(jié)跳動等大廠,目前阿里P7 深知大多數(shù)程序員,想要提升技能,往往是自己摸索成長,但自己不成體系的自學(xué)效果低效又漫長,而且極易碰到天花板技術(shù)停滯不前! 因此收集整理了一份《2024年最新Android移動開發(fā)全套學(xué)習(xí)資

    2024年04月28日
    瀏覽(34)
  • 5G時代下,Android音視頻強勢崛起,我們該如何快速入門音視頻技術(shù)?

    5G時代下,Android音視頻強勢崛起,我們該如何快速入門音視頻技術(shù)?

    作為Android開發(fā)者的我們到底應(yīng)不應(yīng)該上音視頻這條船? 接下來一起分析下。 大趨勢 從未來的大趨勢來看,隨著5G時代的到來,音視頻慢慢變成人們?nèi)粘I钪械谋匦杵?。除了在線教育、音視頻會議、即時通訊這些必須使用音視頻技術(shù)的產(chǎn)品外,其它的產(chǎn)品也需要加入音頻、

    2024年04月15日
    瀏覽(27)
  • Android音視頻開發(fā) - MediaMetadataRetriever 相關(guān)

    MediaMetadataRetriever 是android中用于從媒體文件中提取元數(shù)據(jù)新的類. 可以獲取音頻,視頻和圖像文件的各種信息,如時長,標(biāo)題,封面等. 需要申請 讀寫權(quán)限 . 這里我使用的是本地路徑, 需要注意的是如果路徑文件不存在,會拋出 IllegalArgumentException,具體的源碼如下: 根據(jù)keyCode返回keyC

    2024年04月08日
    瀏覽(31)
  • Android音視頻學(xué)習(xí)系列(九) — Android端實現(xiàn)rtmp推流

    Android音視頻學(xué)習(xí)系列(九) — Android端實現(xiàn)rtmp推流

    Android音視頻學(xué)習(xí)系列(一) — JNI從入門到精通 Android音視頻學(xué)習(xí)系列(二) — 交叉編譯動態(tài)庫、靜態(tài)庫的入門 Android音視頻學(xué)習(xí)系列(三) — Shell腳本入門 Android音視頻學(xué)習(xí)系列(四) — 一鍵編譯32/64位FFmpeg4.2.2 Android音視頻學(xué)習(xí)系列(五) — 掌握音頻基礎(chǔ)知識并使用AudioTrack、OpenSL ES渲

    2024年02月09日
    瀏覽(23)
  • Android-音視頻學(xué)習(xí)系列-(九)Android-端實現(xiàn)-rtmp-推流

    Android-音視頻學(xué)習(xí)系列-(九)Android-端實現(xiàn)-rtmp-推流

    視頻畫面的采集主要是使用各個平臺提供的攝像頭 API 來實現(xiàn)的,在為攝像頭設(shè)置了合適的參數(shù)之后,將攝像頭實時采集的視頻幀渲染到屏幕上提供給用戶預(yù)覽,然后將該視頻幀傳遞給編碼通道,進行編碼。 1. 權(quán)限配置 2. 打開攝像頭 2.1 檢查攝像頭 public static void checkCameraSe

    2024年04月12日
    瀏覽(27)
  • Android音視頻——OpenMAX (OMX)框架

    Android音視頻——OpenMAX (OMX)框架

    本文分為兩個部分進行講解 Codec 部分中的 AwesomePlayer 到 OMX 服務(wù) 前面介紹了NuPlayer最終解碼都會到達OMX框架,也就是 OpenMAX框架,本文開始分析編解碼部分中的AwesomePlayer到OMX服務(wù)過程,也就是開啟OpenMAX準(zhǔn)備相關(guān)內(nèi)容。Android系統(tǒng)中用OpenMAX來做編解碼,Android向上抽象了一 層O

    2023年04月09日
    瀏覽(32)
  • Android音視頻開發(fā)實戰(zhàn)02-Jni

    Android音視頻開發(fā)實戰(zhàn)02-Jni

    JNI是Java Native Interface的縮寫,是Java提供的一種機制,用于在Java代碼中調(diào)用本地(C/C++)代碼。它允許Java代碼與本地代碼進行交互,通過JNI,Java應(yīng)用程序可以調(diào)用一些原生庫或者操作系統(tǒng)API,以獲取更好的性能和更強的功能支持。 使用JNI需要編寫一些Native方法,并將其實現(xiàn)在

    2024年02月11日
    瀏覽(30)
  • Android音視頻開發(fā)實戰(zhàn)01-環(huán)境搭建

    Android音視頻開發(fā)實戰(zhàn)01-環(huán)境搭建

    FFmpeg 是一款流行的開源多媒體處理工具,它可以用于轉(zhuǎn)換、編輯、錄制和流式傳輸音視頻文件。FFmpeg 具有廣泛的應(yīng)用場景,包括視頻編解碼、格式轉(zhuǎn)換、裁剪、合并、濾鏡等等。官網(wǎng):https://ffmpeg.org/ FFmpeg 支持各種常見的音視頻格式,例如 MP4、AVI、FLV、MOV、AAC、MP3、M4A 等等

    2024年02月10日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包