1. 程式人生 > >H 265/HEVC Codec 編解碼 MP4 和 TS

H 265/HEVC Codec 編解碼 MP4 和 TS

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

1. H.265/HEVC 播放器

    1) VLC media player 2.1.3 (目前不支援H.265 TS播放)

    2) ffmpeg

中的ffplay (如:ffplay  hevc.ts)

    3) GPAC中的MP4Client (如:MP4Client hevc.ts, 或MP4Client hevc.mp4)


2. H.265/HEVC編碼器

         所有編碼器都是基於x265來做的。其參考命令如下所示:
ffmpeg.exe -i "E:\video\yak.mp4" -pix_fmt yuv420p -f yuv4mpegpipe - 2> nul | x265.exe -p medium --crf 26 --fps 30 -f 2283 -o "E:\video\test\temp0.hvc" --y4m -

常用的工具如下所示:

2.1 CINEMARTIN CINEC v.2.7.5 Gold

     CINEMARTIN CINEC v.2.7.5 Gold是一個商業軟體,做4K H.265壓縮時經常出現crash。且佔用大量硬碟空間。對於H.265可產生hevc檔案,可供MP4Box作為輸入以生成.mp4檔案,從而使用mp42ts生成.ts檔案。

2.2 Internet Friendly Media Encoder

   
 Internet Friendly Media Encoder
是一款ssf開源專案,其效能和功能很好。只是目前可用,程式碼還沒有開放。且在執行過程中,還會顯示其詳細log資訊,不佔用硬碟空間,共關鍵的命令如下所示:
Internet Friendly Media Encoder工作步驟:1)[ ok ] Loaded ffmpeg.exe[info] Command: -i "E:\video\kayak.mp4" -vn -ar 44100 -y "E:\video\test\temp1.wav"2)[ ok ] Loaded libfaac.dll[info] Command: -b 96 -o "E:\video\test\temp1.aac" "E:\video\test\temp1.wav"3)[info] Command: ffmpeg.exe -i "E:\video\kayak.mp4" -pix_fmt yuv420p -f yuv4mpegpipe - 2> nul | x265.exe -p medium --crf 26 --fps 30 -f 2283 -o "E:\video\test\temp0.hvc" --y4m -4)[ ok ] Loaded libmp4.dll[info] Command: -add "E:\video\test\temp0.hvc#video:name=Encoded with IFME v3.2.0.0:fmt=HEVC:fps=30" -add "E:\video\test\temp1.aac#audio:name=Track 1" "E:\video\test\kayak.mp4"Syntax: x265 [options] infile [-o] outfile    infile can be YUV or Y4M    outfile is raw HEVC bitstreamffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

     目前只能輸出H.265 .mp4和.mkv檔案。

2.3 ffmpeg

    ffmpeg是一款功能強大且基礎的軟體,其使用示例如下所示:
ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...ffmpeg -i ./kayak.mp4 -c copy -bsf h264_mp4toannexb  -mpegts_original_network_id 0x1122 -mpegts_transport_stream_id 0x3344 -mpegts_service_id 0x5566 -mpegts_pmt_start_pid 0x1500 -mpegts_start_pid 0x150 -metadata service_provider="Some provider" -metadata service_name="Some Channel" -y out0.ts //h.264ffmpeg -i ./kayak.mp4 -c copy -bsf h264_mp4toannexb -y out1.ts  //h.264ffmpeg -i ./test.mp4 -c copy -bsf h264_mp4toannexb -y out.ts //h.264ffmpeg -i ./test.mp4 -vframes 200 -r 25 -s 3840x2160  -aspect 16:9 -b:v 12000000 -vcodec hevc -y out.ts   // h.265/hevcffmpeg -i ./test.mp4 -vframes 200 -r 25 -s 3840x2160  -aspect 16:9 -b:v 12000000 -vcodec hevc -mpegts_original_network_id 0x1122 -mpegts_transport_stream_id 0x3344 -mpegts_service_id 0x5566 -mpegts_pmt_start_pid 0x1500 -mpegts_start_pid 0x150 -metadata service_provider="Some provider" -metadata service_name="Some Channel" -y out.ts  //h.265/hevc

     使用ffmpeg可以生成H.265 .TS和.MP4檔案。

2.4 GPAC

      GPAC可以把x265生成的hevc流(.hevc)打包成.mp4和.ts檔案,其使用方法如下:

2.4.1 MP4Box

   How to embed HEVC into MP4 file format
./MP4Box -add name_of_annexB_bitstream.(bit,bin,265) -fps 50 -new output.mp4./MP4Box -v -add Catus_1920x1080_50_qp32.bin:FMT=HEVC -fps 50 -new output.mp4./MP4Client output.mp4    # to play HEVC mp4 content

2.4.2 mp42ts

   How to embed HEVC into TS
./mp42ts -prog=hevc.mp4 -dst-file=test.ts./mp42ts -prog=output.mp4 -dst-file=hevc.ts./MP4Client test.ts  # to play HEVC transport streams     






參考資訊:

1.  Handbrake Support H.265: http://handbrake.fr/nightly.php

2. H.265 官網:http://x265.org/

3. OpenHEVC:https://github.com/OpenHEVC

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述