# Transcoder only wraps up when client is timed out?

**URL:** <https://community.wowza.com/t/transcoder-only-wraps-up-when-client-is-timed-out/43926>\
**Category:** Wowza Streaming Engine\
**Created:** [October 3, 2014, 3:22pm UTC](https://community.wowza.com/t/transcoder-only-wraps-up-when-client-is-timed-out/43926 "2014-10-03T15:22:05Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jim\_Houseman](https://avatars.discourse-cdn.com/v4/letter/j/cc9497/32.png) [@Jim\_Houseman](https://community.wowza.com/u/Jim_Houseman)\
**Post date:** [October 3, 2014, 3:22pm UTC](https://community.wowza.com/t/transcoder-only-wraps-up-when-client-is-timed-out/43926/1 "2014-10-03T15:22:05Z")

</div>

Wowza Streaming Engine 4.0.4 from [the AMI available here](https://aws.amazon.com/marketplace/pp/B00IPTPABM/ref=srh_res_product_title?ie=UTF8&sr=0-2&qid=1412023081963)

Currently, I need to wait for the file to finish transcoding before I can use it again.

I’m looking at the logs and I see this:

> INFO session comment 1420436222 client connectionClosed [1420436222] pingtimeout
> 
> INFO server comment - onStreamDestroy: 1
> 
> INFO server comment - TranscodingSession.shutdown[recorder/_definst_/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d91412373547415]
> 
> INFO transcoder decoder-audio-stop 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d91412373547415 -
> 
> INFO transcoder encoder-audio-stop 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d91412373547415 {name: “aac”}
> 
> And then the transcoding is done. and the .tmp file is removed.
> 
> I’m assuming that “pingtimeout” is a natural event that happens due to inactivity. I don’t want to have the client sit there until it is naturally timed out before I can use the transcoded file.
> 
> Is there any way that I can force-close the connection either from the client or the server, without waiting for a “pingtimeout” so that I can use this transcoded file faster?
> 
> The client should be able to tell the server “I’m done”, and then the server should wrap up all the transcoding operations. Can I do this?
> 
> From the client, I’m already calling NetStream.close() and NetStream.dispose(), but that doesn’t seem to help

---

<div class="post-metadata">

**Author:** ![Jim\_Houseman](https://avatars.discourse-cdn.com/v4/letter/j/cc9497/32.png) [@Jim\_Houseman](https://community.wowza.com/u/Jim_Houseman)\
**Post date:** [October 6, 2014, 1:02pm UTC](https://community.wowza.com/t/transcoder-only-wraps-up-when-client-is-timed-out/43926/2 "2014-10-06T13:02:50Z")

</div>

What can I do server-side to tell whether or not the file is finished transcoding?

---

<div class="post-metadata">

**Author:** ![Zoran](https://sea2.discourse-cdn.com/flex002/user_avatar/community.wowza.com/zoran/32/385_2.png) [@Zoran](https://community.wowza.com/u/Zoran)\
**Post date:** [October 8, 2014, 3:29pm UTC](https://community.wowza.com/t/transcoder-only-wraps-up-when-client-is-timed-out/43926/3 "2014-10-08T15:29:19Z")

</div>

Hi,

You have the ticket #105310 opened with our support team about this issue.

Please let us know if the suggested usage of NetConnection.close(); helped to stop the connection between your client and Wowza server.

Zoran

---

<div class="post-metadata">

**Author:** ![Zoran](https://sea2.discourse-cdn.com/flex002/user_avatar/community.wowza.com/zoran/32/385_2.png) [@Zoran](https://community.wowza.com/u/Zoran)\
**Post date:** [October 8, 2014, 7:03pm UTC](https://community.wowza.com/t/transcoder-only-wraps-up-when-client-is-timed-out/43926/4 "2014-10-08T19:03:56Z")

</div>

Great.

Thank you for the confirmation. I am also closing the support ticket.

Zoran

---

<div class="post-metadata">

**Author:** ![Jim\_Houseman](https://avatars.discourse-cdn.com/v4/letter/j/cc9497/32.png) [@Jim\_Houseman](https://community.wowza.com/u/Jim_Houseman)\
**Post date:** [October 6, 2014, 1:29pm UTC](https://community.wowza.com/t/transcoder-only-wraps-up-when-client-is-timed-out/43926/5 "2014-10-06T13:29:39Z")

</div>

I tried implemented ILiveStreamTranscoderActionNotify and I put some logs inside onShutdownStart and onShtdownStop and I didn’t see them when “TranscodingSession.shutdown” was called, according to the startup.sh logs.

---

<div class="post-metadata">

**Author:** ![Jim\_Houseman](https://avatars.discourse-cdn.com/v4/letter/j/cc9497/32.png) [@Jim\_Houseman](https://community.wowza.com/u/Jim_Houseman)\
**Post date:** [October 6, 2014, 3:03pm UTC](https://community.wowza.com/t/transcoder-only-wraps-up-when-client-is-timed-out/43926/6 "2014-10-06T15:03:18Z")

</div>

On the client I call NetStream.close()

Then I call my custom method, save()

And in that method, there’s this:

```auto
		
		Path path = Paths.get(dir+mp4Name+".tmp");
		
		while(Files.exists(path)){
			try { 
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			getLogger().info("Tmp file exists, waiting");
		}
		

```

So I make a 13 second video, hit stop, hit save, and then this happens:

> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO session comment 57610946 client connectionClosed [57610946] pingtimeout
> 
> INFO session disconnect 57610946 -
> 
> INFO server comment - onDisconnect: 57610946
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO session comment 447864141 client connectionClosed [447864141] pingtimeout
> 
> INFO server comment - onStreamDestroy: 1
> 
> INFO server comment - TranscodingSession.shutdown[recorder/_definst_/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d70001412632391723]

That’s 28 seconds until the transcoder deletes the .tmp file.

Is the transcoder being kept alive by the client? Does it preserve the tmp file because it thinks the client is still sending stuff? Or perhaps it just normally takes 28 seconds to live-transcode a 13 second file?

---

<div class="post-metadata">

**Author:** ![Jim\_Houseman](https://avatars.discourse-cdn.com/v4/letter/j/cc9497/32.png) [@Jim\_Houseman](https://community.wowza.com/u/Jim_Houseman)\
**Post date:** [October 7, 2014, 9:05am UTC](https://community.wowza.com/t/transcoder-only-wraps-up-when-client-is-timed-out/43926/7 "2014-10-07T09:05:45Z")

</div>

Here is a log from a successful attempt:

> INFO server comment - LiveStreamPacketizerSanJose.endChunkTS[recorder/_definst_/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412696439395]: Add chunk: id:4 a/v/k:251/151/10 duration:10026
> 
> INFO server comment - TranscodingSession.close[recorder/_definst_/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412696439395]
> 
> INFO stream recordstop 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412696439395 -
> 
> INFO stream unpublish 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412696439395 -
> 
> INFO server comment - onStreamDestroy: 1
> 
> INFO stream destroy 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412696439395 -
> 
> INFO session disconnect 1958636839 -
> 
> INFO server comment - onDisconnect: 1958636839
> 
> INFO server comment - TranscodingSession.shutdown[recorder/_definst_/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412696439395]
> 
> INFO transcoder decoder-audio-stop 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412696439395 -
> 
> INFO transcoder encoder-audio-stop 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412696439395 {name: “aac”}
> 
> INFO stream unpublish 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412696439395\_aac -
> 
> INFO server comment - onStreamDestroy: 2
> 
> INFO stream destroy 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412696439395\_aac -
> 
> INFO session connect-pending 50.246.217.38 -
> 
> INFO server comment - onConnect: 553457279
> 
> INFO session connect 50.246.217.38 -
> 
> INFO server comment - onConnectAccept: 553457279
> 
> INFO server comment - onStreamCreate: 1
> 
> INFO stream create - -
> 
> INFO stream play 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412696439395 -
> 
> INFO stream seek 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412696439395 -
> 
> INFO server comment - Saving thumbnail
> 
> INFO server comment - AMFDataList:
> 
> [0] saveThumbnail
> 
> [1] 3.0
> 
> [2] null
> 
> [3] 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412696439395
> 
> [4] {Array: size: 19053, data: [largeblock]}
> 
> INFO server comment - Thumbnail saved /usr/local/WowzaStreamingEngine/content/recorder/thumb\_530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412696439395.jpg
> 
> INFO stream stop 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412696439395 -
> 
> INFO server comment - doSave hit
> 
> INFO server comment - AMFDataList:
> 
> [0] doSave
> 
> [1] 4.0
> 
> [2] null
> 
> [3] 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412696439395
> 
> INFO server comment - Starting upload
> 
> INFO server comment - getting credentials
> 
> INFO server comment - attempting to upload 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412696439395\_aac.mp4 to xxxxxxxxxx
> 
> INFO server comment - mp4 upload complete xxxxxxxxxx 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412696439395\_aac.mp4
> 
> INFO server comment - getting credentials
> 
> INFO server comment - attempting to upload thumb\_530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412696439395.jpg to xxxxxxxxxx
> 
> INFO server comment - thumb upload complete xxxxxxxxxx thumb\_530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412696439395.jpg
> 
> INFO server comment - sending info to client rtmp://xxxxxxxxxx.cloudfront.net/cfx/st/530d8aa855df0c2d269a5a58/53a47a049c52c9d83a2d71d8/1412696439395\_aac.mp4
> 
> INFO server comment - deleting 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412696439395
> 
> INFO server comment - deleting thumbnail
> 
> INFO server comment - deleting mp4 video
> 
> INFO server comment - deleting mp4 AAC video

The first line indicates a stream.

The second line is the transcoder closing which happens when I stop recording and publishing, then the transcoder shuts down. Now the transcoded file is ready to be used. Unless the transcoder shuts down, I cannot access the transcoded file.

All the lines after that is custom module stuff.

Here’s a log from an unsuccessful attempt:

> INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[recorder/_definst_/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412697135485]: Add chunk: type:video id:10 count:15 duration:1007
> 
> INFO server comment - TranscodingSession.close[recorder/_definst_/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412697135485]
> 
> INFO stream recordstop 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412697135485 -
> 
> INFO stream unpublish 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412697135485 -
> 
> INFO session connect-pending 50.246.217.38 -
> 
> INFO server comment - onConnect: 968481495
> 
> INFO session connect 50.246.217.38 -
> 
> INFO server comment - onConnectAccept: 968481495
> 
> INFO server comment - onStreamCreate: 1
> 
> INFO stream create - -
> 
> INFO stream play 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412697135485 -
> 
> INFO stream seek 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412697135485 -
> 
> INFO server comment - Saving thumbnail
> 
> INFO server comment - AMFDataList:
> 
> [0] saveThumbnail
> 
> [1] 3.0
> 
> [2] null
> 
> [3] 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412697135485
> 
> [4] {Array: size: 18915, data: [largeblock]}
> 
> INFO server comment - Thumbnail saved /usr/local/WowzaStreamingEngine/content/recorder/thumb\_530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412697135485.jpg
> 
> INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[recorder/_definst_/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412697135485\_aac]: Add chunk: type:video id:10 count:15 duration:1007
> 
> INFO stream stop 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412697135485 -
> 
> INFO server comment - doSave hit
> 
> INFO server comment - AMFDataList:
> 
> [0] doSave
> 
> [1] 4.0
> 
> [2] null
> 
> [3] 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412697135485
> 
> INFO server comment - Starting upload
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[recorder/_definst_/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412697135485]: Add chunk: type:video id:10 count:15 duration:1007
> 
> INFO server comment - TranscodingSession.close[recorder/_definst_/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412697135485]
> 
> INFO stream recordstop 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412697135485 -
> 
> INFO stream unpublish 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412697135485 -
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO session comment 404091380 client connectionClosed [404091380] pingtimeout
> 
> INFO server comment - onStreamDestroy: 1
> 
> INFO stream destroy 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412697135485 -
> 
> INFO server comment - TranscodingSession.shutdown[recorder/_definst_/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412697135485]
> 
> INFO transcoder decoder-audio-stop 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412697135485 -
> 
> INFO transcoder encoder-audio-stop 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412697135485 {name: “aac”}
> 
> INFO session disconnect 404091380 -
> 
> INFO server comment - onDisconnect: 404091380
> 
> INFO stream unpublish 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412697135485\_aac -
> 
> INFO server comment - onStreamDestroy: 1
> 
> INFO stream destroy 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412697135485\_aac -
> 
> INFO server comment - Tmp file exists, waiting
> 
> INFO server comment - getting credentials
> 
> INFO server comment - attempting to upload 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412697135485\_aac.mp4 to xxxxxxxxxx
> 
> INFO server comment - mp4 upload complete xxxxxxxxxx 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412697135485\_aac.mp4
> 
> INFO server comment - getting credentials
> 
> INFO server comment - attempting to upload thumb\_530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412697135485.jpg to xxxxxxxxxx
> 
> INFO server comment - thumb upload complete xxxxxxxxxx thumb\_530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412697135485.jpg
> 
> INFO server comment - sending info to client rtmp://xxxxxxxxxx.cloudfront.net/cfx/st/530d8aa855df0c2d269a5a58/53a47a049c52c9d83a2d71d8/1412697135485\_aac.mp4
> 
> INFO server comment - deleting 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412697135485
> 
> INFO server comment - deleting thumbnail
> 
> INFO server comment - deleting mp4 video
> 
> INFO server comment - deleting mp4 AAC video
> 
> For this one, you can see that the transcoding session closes twice, and then only when the client times out does the transcoding session shut down

---

<div class="post-metadata">

**Author:** ![Jim\_Houseman](https://avatars.discourse-cdn.com/v4/letter/j/cc9497/32.png) [@Jim\_Houseman](https://community.wowza.com/u/Jim_Houseman)\
**Post date:** [October 7, 2014, 9:53am UTC](https://community.wowza.com/t/transcoder-only-wraps-up-when-client-is-timed-out/43926/8 "2014-10-07T09:53:44Z")

</div>

I just attempted this with my custom modules disabled. The same thing happens: Here’s a copy/paste of the logs:

> INFO server comment - LiveStreamPacketizerSmoothStreaming.addFragment[recorder/_definst_/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412700435117\_aac]: Add chunk: type:audio id:0 count:32 duration:2053
> 
> INFO server comment - TranscodingSession.close[recorder/_definst_/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412700435117]
> 
> INFO stream recordstop 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412700435117 -
> 
> INFO stream unpublish 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412700435117 -
> 
> INFO server comment - MediaCasterStreamValidator.init[player/_definst_]: Started
> 
> INFO server comment - ServerListenerEC2Variables#ApplicationInstanceNotify.onApplicationInstanceCreate[player/_definst_]: Auto-set application RTSP addresses: internal[bind]:10.213.146.195 external[origin,connection]:54.188.88.9
> 
> INFO application app-start _definst_ player/_definst_
> 
> INFO session connect-pending 50.246.217.38 -
> 
> INFO session connect 50.246.217.38 -
> 
> INFO stream create - -
> 
> INFO stream play 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412700435117 -
> 
> INFO stream seek 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412700435117 -
> 
> WARN server comment - Missing function: saveThumbnail
> 
> INFO stream stop 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412700435117 -
> 
> INFO session comment 1588047012 client connectionClosed [1588047012] pingtimeout
> 
> INFO server comment - TranscodingSession.shutdown[recorder/_definst_/530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412700435117]
> 
> INFO transcoder decoder-audio-stop 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412700435117 -
> 
> INFO transcoder encoder-audio-stop 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412700435117 {name: “aac”}
> 
> INFO stream destroy 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412700435117 -
> 
> INFO session disconnect 1588047012 -
> 
> INFO stream unpublish 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412700435117\_aac -
> 
> INFO stream destroy 530d8aa855df0c2d269a5a5853a47a049c52c9d83a2d71d81412700435117\_aac -
> 
> You can see the pingtimeout before the transcoding session shuts down. There’s a ~28 second delay between the TranscodingSession.close events and the TranscodingSession.shutdown events.

---

<div class="post-metadata">

**Author:** ![Jim\_Houseman](https://avatars.discourse-cdn.com/v4/letter/j/cc9497/32.png) [@Jim\_Houseman](https://community.wowza.com/u/Jim_Houseman)\
**Post date:** [October 8, 2014, 8:15am UTC](https://community.wowza.com/t/transcoder-only-wraps-up-when-client-is-timed-out/43926/9 "2014-10-08T08:15:58Z")

</div>

This fixed this issue, and the transcoder is shut down immediately.
