如何在android中从mp4文件中分割音频/视频?

问题描述

我正在制作一个从图库加载和视频的 android 应用程序(使用 Uri),

使用视频的音频数据用于机器学习 1,

并使用视频的静音音频数据用于机器学习 2。

现在我正在尝试拆分引用的数据

https://gist.github.com/ArsalRaza/132a6e99d59aa80b9861ae368bc786d0

但由于未知原因,它似乎不起作用。

我加载视频剪辑的代码是:

 vidView?.setVideoURI(uri_vid)
            vidView?.setVideoURI(uri_vid)
            val Metadata = MediaMetadataRetriever()
            Metadata.setDataSource(this,uri_vid)
            val vidLength = Metadata.extractMetadata(MediaMetadataRetriever.MetaDATA_KEY_DURATION)
            seekbar?.max = vidLength!!.toInt()
            set_time(vidLength!!.toInt())
            val separator = AudioExtractor()
            val extracted_audio = this.filesDir.toString()+"temp_audio.wav"
            val extracted_video = this.filesDir.toString()+"temp_video.mp4"
            
separator.genVideoUsingmuxer(this,uri_vid!!,extracted_audio,true,false)
            
separator.genVideoUsingmuxer(this,extracted_video,false,true)
            //separate_video_and_sound(uri_vid!!)
            vidView?.start()

当我加载 2:45 影片剪辑时,日志显示

V/MediaMetadataRetriever: constructor
V/MediaMetadataRetriever: setDataSource(95,576460752303423487)
V/MediaMetadataRetriever: setDataSource(fd) return(0)
extractMetadata(24)
D/MPEG4Writer: fpathconf _PC_FILESIZEBITS:64
File size limit set to 4503599627370495 bytes implicitly
MP4WtrCtrlHlpLooper Started
I/MPEG4Writer: setStartTimestampus: 0 from Video track
Earliest track starting time: 0
V/MediaMetadataRetriever: destructor
disconnect
V/NuMediaExtractor: NuMediaExtractor destructor
D/AED: Saw input EOS.
D/MPEG4Writer: reset()
V/MediaWriter: Track event err/info msg:101,trackId:1,type:1000,val:-1011
I/MPEG4Writer: normal stop process
D/MPEG4Writer: Video track stopping. Stop source
Video track source stopping
Video track source stopped
I/MPEG4Writer: Received total/0-length (5226/0) buffers and encoded 5226 frames. - Video
D/MPEG4Writer: Video track stopped. Status:0. Stop source
D/MPEG4Writer: 0 chunks are written in the last batch
D/MPEG4Writer: WriterThread stopped. Status:0
I/MPEG4Writer: Adjust the moov start time from 0 us -> 0 us
I/MPEG4Writer: The mp4 file will not be streamable.
MOOV atom was written to the file
D/MPEG4Writer: release()
ftruncate mPreAllocateFileEndOffset:335949544 mOffset:335947773 mMdatEndOffset:335923800 diff:1771
MP4WtrCtrlHlpLooper stopped
Top 5 write durations(microseconds): #1:388 #2:404 #3:510 #4:515 #5:520
reset()
Video track stopping. Stop source

由于日志太长,我只写了一部分。该视频在 VideoView 上播放良好,但我认为分隔符不起作用。我做错了什么吗?还是使用FFMPEG库更聪明?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)